Микропроцессор Z80



Операции переходов - часть 2


Инструкция CALL обеспечивает безусловный или условный переход к подпрограмме, заданной с помощью абсолютной адресации (в коде команды содержится двухбайтовый адрес перехода). При переходе к подпрограмме адрес инструкции, следующей за командой CALL, сохраняется в стеке, после чего в счётчик команд заносится адрес подпрограммы.

Инструкция RET производит безусловный или условный возврат из подпрограммы; адрес возврата извлекается из вершины стека.

Обозначение

Код

Условие

NZ

000

не нуль (Z=0)

Z

001

нуль (Z=1)

NC

010

нет переноса (C=0)

C

011

есть перенос (C=1)

PO

100

нечётность (P/V=0)

PE

101

чётность (P/V=1)

P

110

плюс (S=0)

M

111

минус (S=1)

Все инструкции условных переходов имеют своим первым (а для RET – единственным) операндом код условия, обозначаемый в форматах инструкций буквами cc. Для инструкций относительного перехода JR возможны переходы по состоянию флажка Z (JR NZ и JR Z) и флажка C (JR NC и JR C), при этом условие перехода определяется кодом операции. В остальных инструкциях (JP, CALL и RET) набор условий перехода более широкий; он кодируется тремя разрядами кода команды, как показано в приведённой таблице.

Инструкция DJNZ облегчает организацию циклов по счётчику. Она уменьшает содержимое регистра B на единицу и, если результат отличен от нуля, производит переход на указанный адрес. Для определения адреса перехода используется относительная адресация: код команды содержит 8-разрядное смещение d относительно адреса инструкции, следующей за командой DJNZ, рассматриваемое как число со знаком.

Инструкции RETI и RETN предназначены для завершения программ обработки прерываний; первая используется в обработчиках маскируемых прерываний, возникающих по запросам внешних устройств, а вторая – в обработчике немаскируемых прерываний. Обе инструкции извлекают из вершины двухбайтовый адрес возврата и заносят его в счётчик команд.

Команда RETI никаких дополнительных действий в процессоре не производит, но “родные” микросхемы, предназначенные для совместной работы с микропроцессором Z80, распознают её машинный код (анализируя состояние шины данных в процессе выборки команды и отслеживая появление байтов 0EDh и 4Dh, составляющих код инструкции RETI) и благодаря этому определяют, что обработка прерывания завершена.


Содержание  Назад  Вперед