Пример 1. Оператор присваивания.

Составим программу, которая реализует арифметический оператор присваивания.

y := (x+1)2 mod (x-1)2.

Сначала необходимо решить, в каких ячейках памяти будут располагаться наши переменные x и y. Эта работа называется распределением памяти под хранение переменных. При программировании на Паскале эту работу выполняла за нас Паскаль-машина, когда видела описания переменных:

Var x,y: integer;

Теперь нам придётся распределять память самим. Сделаем естественное предположение, что наша программа будет занимать не более 100 ячеек памяти (напомним, что программа вводится, начиная с первой ячейки памяти при нажатии кнопки ПУСК). Тогда, начиная со 101 ячейки, память будет свободна. Пусть для хранения значения переменной x мы выделим 101 ячейку, а переменной y – 102 ячейку. Остальные переменные при необходимости будем размещать в последующих ячейках памяти. В приведенном примере нам понадобятся дополнительные (как говорят, рабочие) переменные r1 и r2, которые мы разместим в ячейках 103 и 104 соответственно.

При программировании на машинном языке, в отличие от Паскаля, у нас не будут существовать константы. Действительно, в какой бы ячейке мы не поместили значение константы, ничто не помешает нам записать в эту ячейку новое значение. Поэтому мы будем называть константами такие переменные, которые имеют начальные значения, и которые мы не планируем изменять в ходе выполнения программы. Отсюда следует, что такие константы, как и переменные с начальным значением, следует располагать в тексте программы и загружать в память вместе с программой при нажатии кнопки ПУСК. Разумеется, такие переменные с начальными значениями следует располагать в таком месте программы, чтобы устройство управления не начало бы выполнять их как команды. Чтобы избежать этого мы будем размещать их в конце программы, после команды СТОП.

Следует обратить внимание и на тот факт, что изначально программист не знает, сколько ячеек в памяти будет занимать его программа. Поэтому адреса программы, ссылающиеся на переменные с начальным значением, до завершения написания программы остаются незаполненными, и уже потом, разместив эти переменные в памяти сразу же вслед за командами программы, следует указать их адреса в тексте программы. В приведённом примере те адреса программы, которые заполняются в последнюю очередь, будут обозначаться подчёркиванием.

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

 

Команда Комментарий
Ввод x
009 r1 := (x+1)
r1 := (x+1)2
009 r2 := (x-1)
r2 := (x-1)2
y := r1 mod r2
Вывод y
Стоп
Целая константа 1

 

Рис 3.1. Текст программы первого примера.

 

После написания программы осталось поместить на устройство ввода два массива – саму программу (9 машинных слов) и число x (одно машинное слово) и нажать кнопку ПУСК. Как мы уже говорили, первый массив заканчивался специальной строкой – признаком конца ввода, так что устройство ввода знает, сколько машинных слов надо ввести в память по кнопке ПУСК.








Дата добавления: 2015-10-05; просмотров: 777;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.