Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИИ ПО ОСО.doc
Скачиваний:
49
Добавлен:
02.04.2015
Размер:
480.77 Кб
Скачать

Программирование в двухадресных командах

Анализ созданных трех и одноадресных программ позволяет сделать вывод о достоинствах и недостатках каждого варианта:

  1. компактность программы в целом и относительная сложность каждой команды в ней определяет трехадресную программу.

  2. увеличенный размер программы при минимальной сложности каждой команды в ней характерен для одноадресных программ.

Желание увеличить максимальное количество достоинств приводит к необходимости использования команд двухадресной структуры.

КОП

Адрес 1

Адрес 2

Вверху код планирования операции, Адрес 1 и Адрес 2 – адреса, участвующие в операции.

03

100

100

предписывает перемещение копий содержимого ячеек с указаниями адресов, в регистры сумматора и выполнения там над ними планируемой операции. Так для команды:

03

100

100

планируется получение в сумматоре квадрата ячейки 100. Для увеличения надежности хранения полученного результата, его желательно как и в трехадресном варианте дублировать перезаписью копии в ячейку памяти. В рассматриваемой команде это возможно только перемещением результата по одному из указанных в команде адресов (Адрес 1, Адрес 2) с естественной ликвидацией старого содержимого этой ячейки.

Зададимся правилом, что результат выполнения команды автоматически размещается в ячейку с адресом: Адрес 2, тогда команда

03

100

100

предписывает получение квадрата операнда из ячейки 100 с последующим размещением этого значения в ту же самую 100 ячейку, либо в ячейку с адресом: Адрес 2. Исходя из этого можно сделать вывод, что для сохранения содержимого по Адресу 2 необходимо в конкретных точках алгоритма (программы) предварительно получать (формировать) копию второго операнда из исходной ячейки в дополнительную – промежуточную с помощью команды запись.

Запись

Адрес 1

Адрес 2

Команда предписывает перезапись содержимого с ячейки с адресом 1 в ячейку с адресом 2.

06

100

134

Например, команда:

предписывает перезапись содержимого 100 ячейки в ячейку 134. С учетом изложенного выполним программирование примера в двухадресном варианте. В качестве алгоритма примем выполненный ранее, для варианта с одноадресными командами. Распределение исходных данных в ячейках памяти оставим неизменным, как для трех, так и для одноадресного варианта.

<a> - 1008

<b> - 1048

<1200> - 1108

<2> - 1148

<0,8> - 1208

<c> - 1248

<d> - 1308

Составим программу решения:

КОП

Адрес 1

Адрес 2

Пояснение

06

03

01

06

03

03

03

03

06

02

04

124

120

130

100

100

100

104

114

110

140

144

134

134

134

140

140

140

140

140

144

144

134

c 134

0,8c 134

d+0,8c 134

a 140

a2 140

a3 140

ba3 140

2ba3 140

1200 144

2ba3-1200 144

2ba3-1200 / d+0,8c 134

Распределим команды полученной программы по ячейкам памяти.

<06124134> - 5008

<03120134> - 5108

<01130134> - 5208

<06100140> - 5308

<03100140> - 5408

<03100140> - 5508

<03104140> - 5608

<03114140> - 5708

<06110144> - 6008

<02140144> - 6108

<04144134> - 6208