- •Лекция №2
- •Лекция №3 программирование вОдноадресноЙкоманде
- •Программирование в двухадресных командах
- •Лекция №4 архитектура эвм
- •Общая структура классической эвм
- •Организация вычислительного процесса эвм
- •Лекция №5 эвм с единым интерфейсом
- •Лекция №6 программное обеспечение эвм
- •Базовое программное обеспечение
- •Системное программное обеспечение
- •Лекция №7 основные функции ос
- •Организация файловой структуры хранения информации
- •Лекция №8
- •Операционные оболочки
- •Сервисное программное обеспечение
- •Прикладное по
Программирование в двухадресных командах
Анализ созданных трех и одноадресных программ позволяет сделать вывод о достоинствах и недостатках каждого варианта:
компактность программы в целом и относительная сложность каждой команды в ней определяет трехадресную программу.
увеличенный размер программы при минимальной сложности каждой команды в ней характерен для одноадресных программ.
Желание увеличить максимальное количество достоинств приводит к необходимости использования команд двухадресной структуры.
-
КОП
Адрес 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