(3 байта)CALL addr (PC)->((SP)-2) ((SP)-1); B2, B3->(PC); (SP):= (SP) + 2 – безусловный вызов подпрограммы по адресу, указанному в B2, B3.
(1 байт)RST N (PC)->((SP)-1) ((SP)-2); (SP):= (SP) – 2; (PC):= 00000000 00AAA000, где ААА – код прерывающей программы. Происходит загрузка счетчика команд вектором прерывания ААА с предварительным запоминанием текущего содержимого PC в стеке.
Эта команда представляет собой повторный запуск (вызов прерывающей программы). Особенностью данной команды является ограничение пространства памяти для размещения в ней прерывающих программ, поскольку двоичный код ААА ставит границы от 000 000 до 000 070.
Также различие команд CALL и RST заключается в указании адреса перехода: в первом случае – явная адресация, во втором – неявно из кода команды.
Программа 8:Работа нескольких прерывающих программ.
В данной программе для вызова подпрограмм используется команда RST (формат 3х7, где х – номер подпрограммы). Такая команда вызывает подпрограмму по адресу 010*х. При вызове подпрограммы микропроцессор К580 записывает в стек адрес команды, вызвавшей подпрограмму, при возврате – извлекает его из стека.
Таблица №9
Адреса |
Команды |
Мнемоника команд |
Комментарии |
000 |
061 |
LXI SP |
Установка указателя стека |
001 |
067 |
B2 |
Младший байт адреса |
002 |
000 |
B3 |
Старший байт адреса |
003 |
317 |
RST 1 |
Вызов подпрограммы по адресу L=010 |
004 |
166 |
HLT |
Останов |
010 |
327 |
RST 2 |
Вызов подпрограммы по адресу L=020 |
011 |
311 |
RET |
Возврат из подпрограммы 1 |
020 |
337 |
RST 3 |
Вызов подпрограммы по адресу L=030 |
021 |
311 |
RET |
Возврат из подпрограммы 2 |
030 |
347 |
RST 4 |
Вызов подпрограммы по адресу L=040 |
031 |
311 |
RET |
Возврат из подпрограммы 3 |
040 |
357 |
RST 5 |
Вызов подпрограммы по адресу L=050 |
041 |
311 |
RET |
Возврат из подпрограммы 4 |
050 |
311 |
RET |
Возврат из подпрограммы 5 |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.