Данные по адресу L=004 |
Мнемоника команды перехода |
Данные по адресу L=200 |
Результат |
302 |
JNZ |
002 |
Есть цикл |
302 |
JNZ |
102 |
Цикла нет |
312 |
JZ |
102 |
Есть цикл |
312 |
JZ |
002 |
Цикла нет |
322 |
JNC |
002 |
Есть цикл |
322 |
JNC |
003 |
Цикла нет |
332 |
JC |
002 |
Цикла нет |
332 |
JC |
003 |
Есть цикл |
342 |
JPO |
002 |
Есть цикл |
342 |
JPO |
006 |
Цикла нет |
352 |
JPE |
002 |
Цикла нет |
352 |
JPE |
006 |
Есть цикл |
362 |
JP |
002 |
Есть цикл |
362 |
JP |
202 |
Цикла нет |
372 |
JM |
002 |
Цикла нет |
372 |
JM |
202 |
Есть цикл |
Существует 8 команд условного перехода - по две на каждый из четырёх флагов: Z, C, P, S. В зависимости от значения соответствующего флага переход происходит (в этом случае программа зацикливается) или не происходит (выполняется останов по команде HLT).
Программа 8
Программа демонстрирует действие команд вызова подпрограммы и возврата в основную программу.
основная программа |
|||
адрес |
команда |
мнемоника |
комментарии |
000 |
061 |
LXI SP |
инициализация стека |
001 |
100 |
||
002 |
000 |
||
003 |
315 |
CALL |
вызов подпрограммы |
004 |
000 |
||
005 |
010 |
||
006 |
166 |
HLT |
останов |
подпрограмма |
|||
010 |
311 |
RET |
возврат из подпрограммы |
Команда Call сохраняет в стеке адрес возврата из подпрограммы (адрес следующей после Call команды) и производит загрузку в указатель команд адреса указанного во втором и третьем байтах команды (PC=000010). Программа RET выполняет обратные действия (извлекает из стека адрес и загружает его в PC).
Существенное различие команд CALL и JMP заключается в том, что вторая команда не записывает в стек адрес возврата. Таким образом, в паре с ней без дополнительных операций не может применяться команда RET.
Программа 9
Программа поясняет действие команд RST N и RET при работе с прерываниями.
Адрес |
Команда |
Мнемоника |
Комментарии |
000 |
061 |
LXI SP |
Инициализация стека |
001 |
200 |
B2 |
|
002 |
000 |
B3 |
|
003 |
317 |
RST 1 |
Вызов подпрограммы по адресу 010 |
004 |
166 |
HLT |
Останов |
010 |
311 |
RET |
Возврат из подпрограммы |
Описание работы программы по машинным циклам:
Адреса (ША) |
Содержимое памяти (ШД) |
Комментарий |
000 |
061 |
инициализация стека |
001 |
067 |
|
002 |
000 |
|
003 |
317 |
код команды RST 1 |
066 |
000 |
запись в стек адреса |
065 |
004 |
возврата из подпрограммы |
010 |
311 |
код команды RET |
065 |
004 |
чтение из стека адреса |
066 |
000 |
возврата |
004 |
166 |
код команды останова |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.