Микропроцессоры с изменяемой (наращиваемой) разрядностью слова и микропрограммным управлением (секционные микропроцессоры) на примере микропроцессора К1804, страница 12

(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