Команды перехода, называемые также командами ветвления, позволяют организовать в программах циклы и разветвления. Команды вызова подпрограмм дают возможность сократить объем разрабатываемых программ за счет повторного использования подпрограмм. Наличие в микропроцессоре стека с указателем стека делает возможным возврат в главную программу после выполнения подпрограммы с помощью команд возврата.
Команды перехода и вызова подпрограмм можно разделить на следующие группы:
· команда записи содержимого H-пары в программный счетчик (PCHL).
Ни одна из команд этой группы не изменяет содержимое регистра признаков F.
Формат,
байтов
Время тактов
Код
Мнемо- код
Наименование команды
Описание операции
C3
JMP B3B2
Безусловный переход
В (РС)-регистр записывается адрес перехода (В3В2)
DA
JC B3B2
Переход, если перенос
Если условие верно, то в (РС)-регистр записывается адрес перехода (В3В2), иначе переход к следующей команде (РС)=(РС)+3
D2
JNC B3B2
Переход, если не перенос
Если условие верно, то в (РС)-регистр записывается адрес перехода (В3В2), иначе переход к следующей команде (РС)=(РС)+3
CA
JZ B3B2
Переход, если нуль
Если условие верно, то в (РС)-регистр записывается адрес перехода (В3В2), иначе переход к следующей команде (РС)=(РС)+3
C2
JNZ B3B2
Переход, если не нуль
Если условие верно, то в (РС)-регистр записывается адрес перехода (В3В2), иначе переход к следующей команде (РС)=(РС)+3
F2
JP B3B2
Переход, если плюс
Если условие верно, то в (РС)-регистр записывается адрес перехода (В3В2), иначе переход к следующей команде (РС)=(РС)+3
FA
JM B3B2
Переход, если минус
Если условие верно, то в (РС)-регистр записывается адрес перехода (В3В2), иначе переход к следующей команде (РС)=(РС)+3
EA
JPE B3B2
Переход, если четно
Если условие верно, то в (РС)-регистр записывается адрес перехода (В3В2), иначе переход к следующей команде (РС)=(РС)+3
E2
JPO B3B2
Переход, если нечетно
Если условие верно, то в (РС)-регистр записывается адрес перехода (В3В2), иначе переход к следующей команде (РС)=(РС)+3
CD
CALL B3B2
Безусловный вызов подпрограммы
В стеке сохраняется адрес следующей команды (РС)= (РС)+3, затем в (РС)-регистр записывается адрес вызова подпрограммы (В3В2)
11/17
DC
CC B3B2
Вызов подпрограммы, если перенос
Если условие верно, то в стеке сохраняется адрес следующей команды (РС)=(РС)+3, затем в (РС)- регистр записывается адрес вызова подпрограммы (В3В2). Иначе переход к следующей команде (РС)=(РС)+3
11/17
D4
CNC B3B2
Вызов подпрограммы, если не перенос
Если условие верно, то в стеке сохраняется адрес следующей команды (РС)=(РС)+3, затем в (РС)- регистр записывается адрес вызова подпрограммы (В3В2). Иначе переход к следующей команде (РС)=(РС)+3
11/17
CC
CZ B3B2
Вызов подпрограммы, если нуль
Если условие верно, то в стеке сохраняется адрес следующей команды (РС)=(РС)+3, затем в (РС)- регистр записывается адрес вызова подпрограммы (В3В2). Иначе переход к следующей команде (РС)=(РС)+3
11/17
C4
CNZ B3B2
Вызов подпрограммы, если не нуль
Если условие верно, то в стеке сохраняется адрес следующей команды (РС)=(РС)+3, затем в (РС)- регистр записывается адрес вызова подпрограммы (В3В2). Иначе переход к следующей команде (РС)=(РС)+3
11/17
F4
CP B3B2
Вызов подпрограммы, если плюс
Если условие верно, то в стеке сохраняется адрес следующей команды (РС)=(РС)+3, затем в (РС)- регистр записывается адрес вызова подпрограммы (В3В2). Иначе переход к следующей команде (РС)=(РС)+3
11/17
FC
CM B3B2
Вызов подпрограммы, если минус
Если условие верно, то в стеке сохраняется адрес следующей команды (РС)=(РС)+3, затем в (РС)- регистр записывается адрес вызова подпрограммы (В3В2). Иначе переход к следующей команде (РС)=(РС)+3
11/17
EC
CPE B3B2
Вызов подпрограммы, если четно
Если условие верно, то в стеке сохраняется адрес следующей команды (РС)=(РС)+3, затем в (РС)- регистр записывается адрес вызова подпрограммы (В3В2). Иначе переход к следующей команде (РС)=(РС)+3
11/17
E4
CPO B3B2
Вызов подпрограммы, если нечетно
Если условие верно, то в стеке сохраняется адрес следующей команды (РС)=(РС)+3, затем в (РС)- регистр записывается адрес вызова подпрограммы (В3В2). Иначе переход к следующей команде (РС)=(РС)+3
C9
RET
Безусловный возврат
В (РС)-регистр записывается адрес из верхушки стека
5/11
D8
RC
Возврат, если перенос
Если условие верно, то в (РС)-регистр записывается адрес из верхушки стека. Иначе переход к следующей команде (РС)=(РС)+1
5/11
D0
RNC
Возврат, если не перенос
Если условие верно, то в (РС)-регистр записывается адрес из верхушки стека. Иначе переход к следующей команде (РС)=(РС)+1
5/11
C8
RZ
Возврат, если нуль
Если условие верно, то в (РС)-регистр записывается адрес из верхушки стека. Иначе переход к следующей команде (РС)=(РС)+1
5/11
C0
RNZ
Возврат, если не нуль
Если условие верно, то в (РС)-регистр записывается адрес из верхушки стека. Иначе переход к следующей команде (РС)=(РС)+1
5/11
F0
RP
Возврат, если плюс
Если условие верно, то в (РС)-регистр записывается адрес из верхушки стека. Иначе переход к следующей команде (РС)=(РС)+1
5/11
F8
RM
Возврат, если минус
Если условие верно, то в (РС)-регистр записывается адрес из верхушки стека. Иначе переход к следующей команде (РС)=(РС)+1
5/11
E8
RPE
Возврат, если четно
Если условие верно, то в (РС)-регистр записывается адрес из верхушки стека. Иначе переход к следующей команде (РС)=(РС)+1
5/11
E0
RPO
Возврат, если нечетно
Если условие верно, то в (РС)-регистр записывается адрес из верхушки стека. Иначе переход к следующей команде (РС)=(РС)+1
C7
RST 0
Рестарт по 0-му уровню
В стеке сохраняется адрес следующей команды (РС)= (РС)+1, затем в (РС)-регистр записывается адрес вызова подпрограммы (РС)=8*№рестарта
CF
RST 1
Рестарт по 1-му уровню
В стеке сохраняется адрес следующей команды (РС)= (РС)+1, затем в (РС)-регистр записывается адрес вызова подпрограммы (РС)=8*№рестарта
D7
RST 2
Рестарт по 2-му уровню
В стеке сохраняется адрес следующей команды (РС)= (РС)+1, затем в (РС)-регистр записывается адрес вызова подпрограммы (РС)=8*№рестарта
DF
RST 3
Рестарт по 3-му уровню
В стеке сохраняется адрес следующей команды (РС)= (РС)+1, затем в (РС)-регистр записывается адрес вызова подпрограммы (РС)=8*№рестарта
E7
RST 4
Рестарт по 4-му уровню
В стеке сохраняется адрес следующей команды (РС)= (РС)+1, затем в (РС)-регистр записывается адрес вызова подпрограммы (РС)=8*№рестарта
EF
RST 5
Рестарт по 5-му уровню
В стеке сохраняется адрес следующей команды (РС)= (РС)+1, затем в (РС)-регистр записывается адрес вызова подпрограммы (РС)=8*№рестарта
F7
RST 6
Рестарт по 6-му уровню
В стеке сохраняется адрес следующей команды (РС)= (РС)+1, затем в (РС)-регистр записывается адрес вызова подпрограммы (РС)=8*№рестарта
FF
RST 7
Рестарт по 7-му уровню
В стеке сохраняется адрес следующей команды (РС)= (РС)+1, затем в (РС)-регистр записывается адрес вызова подпрограммы (РС)=8*№рестарта