Вычитание чисел и ожидаемый результат:
00 000 010 00 000 000
- 00 000 000 10 000 000
00 000 001 10 000 000 – разность в регистровой паре по адресу H = 000, L = 200.
2.4. Программа 4: «обнуление» заданной области памяти
Ячейки памяти с адресами от L = 011 до L = 040 содержат ненулевые элементы.
Адрес |
Код команды |
Мнемоника команды |
Комментарии |
L = 000 |
227 |
SUB A |
обнуление А |
001 002 003 |
041 011 000 |
LXI H B2 B3 |
загрузка начального адреса памяти |
004 |
167 |
MOV M, A |
запоминание А |
005 |
043 |
INX H |
увеличение содержимого (H)(L) на 1 |
006 007 010 |
303 004 000 |
JMP B2 B3 |
безусловный переход |
Данная программа представляет собой пример некорректной программы. После выполнения часть ее, до адреса 005, оказывается стертой. Это объясняется тем, что мы достигаем максимального значения адреса (INX H – перенос при сложении) и вновь переходим к адресу 000. Как только программа стирает команду пересылки по адресу 004, она прекращает работать.
Для корректного завершения программы необходимо добавить следующую группу команд:
Адрес |
Код команды |
Мнемоника команды |
Комментарии |
L = 006 |
274 |
CMP Н |
сравнение (А) – (Н) |
007 010 011 |
322 004 000 |
JNC B2 B3 |
переход при отсутствии переноса (по нулевому значению флага С) |
012 |
275 |
CMP L |
сравнение (А) – (L) |
013 014 015 |
322 004 000 |
JNC B2 B3 |
переход при отсутствии переноса (по нулевому значению флага С) |
016 |
166 |
HLT |
останов |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.