Главная » Просмотр файлов » 3_Учебная машина

3_Учебная машина (975800), страница 3

Файл №975800 3_Учебная машина (В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования) 3 страница3_Учебная машина (975800) страница 32019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

Именно эта команда и выполнялась бы, если бы такая константа была (случайно) выбранана регистр команд устройства управления.Разберёмся теперь, на каком же языке мы написали наш второй пример для УМ-3. Ясно, что этоне язык машины, так как он по определению состоит только из 32-хразрядных двоичных чисел, а унас вместо кодов операции стоят мнемонические обозначения, адреса написаны в десятичной формезаписи, да ещё и комментарии присутствуют. Такой язык программирования для первых ЭВМ обычно называли псевдокодом, что хорошо отражало его сущность. Для того чтобы выполнить программу на псевдокоде, её надо предварительно перевести (или, как теперь принято говорить, оттранслировать) на язык машины. Очевидно, что для этого необходимо заменить все мнемонические обозначения соответствующими им числовыми кодами операций, затем перевести все десятичные числав двоичную систему счисления, а также отбросить номера ячеек из первой колонки и комментарии.Для первых ЭВМ эту работу выполняли сами программисты.

В дальнейшем псевдокоды постепенноразвивались и превратились в языки низкого уровня – ассемблеры (в русскоязычной литературе ихсначала называли автокодами, подразумевая, что они автоматически переводят (кодируют)1Заметим, что в нашей архитектуре программа специально вводится в память по кнопке ПУСК, начиная спервой ячейки, оставляя программисту для подобных целей свободной ячейку с номером ноль.2В некоторых первых реальных ЭВМ этот принцип нарушался: при считывании из этой ячейки всегдавозвращался ноль, а запись в ячейку с адресом ноль физически не осуществлялась, на практике такой принципработы с этой ячейкой почти всегда был удобнее.7программу с псевдокода на язык машины). Наши следующие программы для УМ-3 мы также будемдля удобства писать не на "чистом" языке машины, а на таком псевдокоде.3.2.3. Пример 3. Реализация циклаВ качестве следующего примера напишем программу для вычисления начального отрезка гармонического ряда:ny  1/ii 1Наша программа должна вводить значение переменной n и выводить в качестве результата работы y.

Для хранения переменных n,y и параметра цикла i выделены ячейки 100, 101 и 102 соответственно. На рис. 3.3 приведена возможная программа для решения этой задачи.№001234567890101234КомандаВВЦВЧВПЕРВЧЦПБВЕЩДЕВСЛВСЛЦБЕЗВЫВСТОП00100 001101 101102 000000 102000 011000 000000 014101 101102 102000 004101 001000 000000 000<1.0>Комментарий000101013100000102000000013000000000001Read(n)y := 0.0i := 1<000> := i–n; формирование wif i>n then goto 011<000> := Real(i)<000> := 1.0/Real(i)y := y+<000>i := i+1Следующая итерация циклаWrite(y)СтопЦелая константа 1Вещественная константа 1.0Рис 3.3.

Программа третьего примера.Сделаем некоторые замечания к этой программе. В этом алгоритме мы реализуем цикл с предусловием, его аналог на Паскале можно записать в виде:y:=0.0; i:=1; while i<=n do begin y:=y+1.0/i; i:=i+1 end;Поэтому при вводе значения n<1 тело цикла не будет выполняться ни одного раза, и наша программа будет выдавать нулевой результат, что не противоречит математическому смыслу поставленной задачи.Заметим далее, что каждый член ряда является по смыслу задачи вещественным числом, в товремя как параметр цикла i – целая величина. В языке машины у нас нет команды деления вещественного числа на целое, поэтому при вычислении величины очередного слагаемого 1.0/i нам пришлось воспользоваться командой ВЕЩ 000 000 102 . Эта команда преобразует значение целойпеременной i в вещественной значение (заметим, что Паскаль машина будет делать это автоматически!).

Обратите также внимание, что для нашей учебной машины мы ещё не определили форматпредставления вещественных чисел, (мы сделаем это позже), поэтому в ячейке с адресом 14 стоитпока просто условное обозначение константы 1.0, а не её машинное представление.3.2.4. Пример 4. Работа с массивамиПусть требуется написать программу для ввода массива x из 100 вещественных чисел и вычислениясуммы всех элементов этого массива:100S   x[i]i 1Сделаем естественное предположение, что длина нашей программы не будет превышать 199ячеек, и поместим массив x, начиная с 200-ой ячейки памяти. Вещественную переменную S с начальным значением 0.0 и целую переменную n с начальным значением 100 поместим в конце текста программы (после команды СТОП), и будем вводить в память вместе с командами при нажатии8кнопки ПУСК.1 Таким образом, в качестве счётчика цикла для нас будет удобнее использовать нецелую переменную i, изменяющуюся от 1 до 100, как в приведённой выше формуле, а переменнуюn с начальным значением 100, которая будет изменяться от 100 до 1.

Другими словами, мы реализуем цикл, который на Турбо-Паскале можно было бы записать в видеconst S:real=0.0; n:integer=100;. . .i:=0; repeat S:=S+x[i]; i:=i+1; n:=n-1 until n=0На рис. 3.4 приведён текст этой программы.№001234567890101КомандаВВВСЛВСЛЦВЧЦПБВЫВСТОП000000200 100008 200002 002010 010000 002008 001000 000<0.0>000 000000 000000 001Комментарий000008011009000000000001100000Read(x); массив x в ячейках 200299S := S+x[1]Модификация команды в ячейке 2n := n-1if n>0 then goto 002Write(S)СтопВешественная переменная S = 0.0Целая константа 1Переменная n с начальным значением 100Константа переадресацииРис 3.4.

Программа четвёртого примера.Рассматриваемая программа выделяется новым приёмом программирования, она является самомодифицирующейся программой, о которых мы говорили при изучении машины Фон Неймана.Обратим внимание на третью строку программы. Содержащаяся в ней команда изменяет исходныйкод программы (меняет команду в ячейке с адресом 2) для организации цикла перебора элементовмассива.2 При первом выполнении этой команды она адресуется к первому элементу массива, затемко второму и т.д.

Для перехода от одного элемента массива к следующему модифицируемая командарассматривается как целое число, к которому прибавляется специально подобранная константапереадресации.3 Согласно одному из принципов Фон Неймана, числа и команды в учебной машиненеотличимы друг от друга, а, значит, изменяя числовое представление команды, мы можем изменятьи её суть.У такого метода программирования есть один существенный недостаток: модификация кодапрограммы внутри её самой повышает сложность программирования, может привести к путанице ивызвать появление ошибок.

Заметим также, что такую программу нельзя повторно выполнить, просто передав управление на её первую команду, 4 так как нужно будет предварительно восстановитьисходный вид всех модифицированных команд. Кроме того, самомодифицирующуюся программутрудно понимать и вносить в неё изменения. Только представьте себе, что Вам необходимо составить алгоритм для машины Тьюринга, в которой можно изменять команды в клетках таблицы (например, заменить команду движения головки по ленте влево на движение вправо). Настоящий кошмар для современного программиста!1Заметим, что так мы, например, сэкономили в программе ячейку, в которой должна была бы хранитьсякоманда обнуления переменной S.2Как уже говорилось, в теории алгоритмов некоторым аналогом такого исполнителя, например, являетсятакая модификация машины Тьюринга, которая в процессе выполнения алгоритма может изменять клетки своей таблицы.

Доказана теорема о том, что все задачи, которые может решать такая модифицированная машинаТьюринга, может решить и обычная машина Тьюринга, т.е. такие алгоритмические системы эквивалентны.3В выборе этой константы есть небольшая тонкость. Как мы вскоре узнаем, целые числа в нашей машинепредставляются в так называемом дополнительном коде (что это такое, мы скоро изучим).

В дополнительномкоде первый бит целого числа определяет его знак, поэтому команды с кодами операций больше 15 будут отрицательными целыми числами, что следует учитывать при подборе константы переадресации. В нашем примере, однако, команда сложения с кодом операции СЛВ=01 является положительным целым числом, и всёбудет хорошо.4Повторное выполнение находящейся в памяти программы может оказаться весьма полезным, например,при счёте нескольких вариантов задачи с разными входными данными. Вспомните так же, как многие диалоговые программы идут на своё повторное выполнение, задав вопрос "Повторить? (Да/Нет)".9В нашей учебной машине, однако, самомодифицирующаяся программа – это единственныйспособ обработки достаточно больших массивов.

В других архитектурах ЭВМ, с которыми мы познакомимся несколько позже, есть и другие, более эффективные способы работы с массивами, поэтому метод программирования с модификацией команд в современных компьютерах, как уже говорилось, обычно не используется.3.3. Формальное описание учебной машиныПри описании архитектуры нашей учебной ЭВМ УМ-3 на естественном языке многие вопросыостались нераскрытыми.

Характеристики

Тип файла
PDF-файл
Размер
630,93 Kb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6505
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее