Отличие между командами JMP addr и CALL addr в том, что для корректного выполнения команды CALL перед ее вызовом необходимо инициализировать стек, куда потом будет записан адрес следующей после CALL команды. Это позволяет осуществить возврат из подпрограммы.
2.9. Программа 9: действие команд RST N и RET при работе с прерывающими программами
Адрес |
Код команды |
Мнемоника команды |
Комментарии |
L = 000 001 002 |
061 067 000 |
LXI SP B2 B3 |
инициализация указателя стека |
003 |
317 |
RST 1 |
вызов подпрограммы по адресу L = 010 |
010 |
311 |
RET |
безусловный возврат из подпрограммы |
004 005 006 |
315 010 000 |
CALL B2 B3 |
безусловный вызов подпрограммы |
007 |
166 |
HLT |
останов |
020 |
311 |
RET |
безусловный возврат из подпрограммы |
Полное описание работы программы по машинным циклам:
Адрес (состояние ША) |
Содержимое памяти (содержимое ШД) |
000 |
061 |
001 |
067 |
002 |
000 |
003 |
317 |
066 |
000 |
065 |
004 |
010 |
311 |
065 |
004 |
066 |
000 |
004 |
315 |
005 |
020 |
006 |
000 |
066 |
000 |
065 |
007 |
020 |
311 |
065 |
007 |
066 |
000 |
007 |
166 |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.