Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП по циклу ЛР ОМПТ.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.81 Mб
Скачать

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

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

Команды организации подпрограмм

Команды организации подпрограмм, как и команды передачи управления, обеспечивают переключение процессора от нормальной последовательности выполнения команд к выполнению действий команд, начинающихся в выбираемом месте памяти. Но при этом команды организации подпрограмм реализуют не простой переход внутри программы, а переход в соответствии с правилами организации подпрограммы – независимой структурной единицы программы. Согласно этим правилам переход предполагает возврат из подпрограммы к тому месту вызывающей программы, из которого переход был выполнен. Поэтому переход к подпрограмме называют вызовом подпрограммы и он обеспечивается из вызывающей программы командами вызова подпрограммы. А вызываемая подпрограмма, в свою очередь, должна быть структурно построена так, чтобы по завершении операций для выполнения которых она была вызвана, подпрограмма обеспечила бы возврат в исходное место вызывающей программы для продолжения последовательного её хода. Такой возврат обеспечивают команды возврата из подпрограммы.

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

В зависимости от наличия условия вызова и возврата различают команды условных и безусловных вызовов и возвратов. В этом смысле данные команды аналогичны командам передач управления.

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