Команда 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