Команды безусловных переходов

Команда PCHL обеспечивает загрузку счётчика команд из регистровой пары HL.

(PC)(HL)

Адрес перехода предварительно должен быть определён в регистровой паре HL. Данная команда – очень короткая (1 байт) и быстрая (всего 5 тактов). Эффективность её применения зависит от решения с подготовкой адреса в HL.

Пример1.29

Адрес Число Метка Мнемокод Комментарий

0800 21 10 08 LXI H,M00 ;Загрузка в HL адреса перехода

0803 E9 PCHL ;Переход по адресу в HL

…………………………………….

0810 78 M00: MOV A,B

0811 41 MOV B,C

…………………………………….

Команда JMP adr обеспечивает непосредственную прямую загрузку счётчика команд байтами adr из состава команды. Она по формату состоит из трёх байтов и требует для выполнения 10 тактов. Но, в отличие от команды PCHL, эта команда не требует подготовительных операций.

Команды условных переходов

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

Общая схема выполнения таких команд

JMP if cnd (перейти, если выполнено условие cnd)

Условиями могут быть выбранные состояния битов регистра признаков. Например, Z=0, Z=1, CY=0, CY=1, так далее. Для каждого из пяти битов признаков возможны по два условия. Поэтому имеется всего 10 команд условных переходов.

Общий формат мнемоник таких команд

Jcnd adr

где adr – адрес перехода для случая выполнения условия, а вместо cnd добавляются символы выбранного условия:

JNZ adr – переход, если обнаружен ненулевой результат,

JZ adr – переход, если обнаружен нулевой результат,

JNC adr – переход, если обнаружено отсутствие переноса,

JC adr – переход, если обнаружен наличие переноса,

JPO adr – переход, если обнаружено нечётное число битов “1” результата,

JPE adr – переход, если обнаружено чётное число битов “1” результата,

JP adr – переход, если обнаружен положительный знак результата,

JM adr – переход, если обнаружен отрицательный знак результата.

Все команды – трёхбайтные по формату и требуют на выполнение 10 тактов, как и команда JMP.

Пример1.30

Метка Мнемокод Комментарий

MVI C,55h ;Установка счётчика проходов цикла

LXI H,0BF0h ;Установка указателя ячеек памяти

MVI A,00 ;Обнуление аккумулятора

M00: MOV M,A ;Обнуление очередной ячейки памяти

INX H ;HL+1 Продвижение указателя ячеек

DCR C ;C–1 Подсчёт ячеек и установка Z

JNZ M00 ;Переход к M00, если не выполнено Z=1

HLT ;Останов, если Z=1