Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория микропроцессорных систем АТ_Методическое...docx
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
3.72 Mб
Скачать
  1. Команды передачи управления.

В табл.10 дан список команд безусловных переходов.

В приведенной таблице показана только одна команда "JMP addr", хотя фактически их имеется 3 варианта - SJMP, LJMP и AJMP, различающихся форматом адреса перехода. Мнемоника JMP используется в том случае, когда программист не уверен, какой вариант необходимо применить и предоставляет выбор Макроассемблеру.

Таблица 10.

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

Мнемоника

Операция

JMP addr

Jump to addr

JMP @A+DPTR

Jump to A+DPTR

CALL addr

Call subroutine at addr

RET

Return from subroutine

RETI

Return from interrupt

NOP

No operation

Для короткого перехода (Short JMP) адрес перехода определяется смещением (второй байт команды), при этом "дальность" перехода ограничена диапазоном -128/+127 байт относительно инструкции, следующей за JMP.

В инструкции длинного перехода (Long JMP) используется адрес назначения в виде 16-битной константы, что дает возможность перехода по любому адресу из 64К памяти программ.

Команда AJMP (Absolute JMP) является двухбайтной и использует 11-битную константу адреса. При выполнении инструкции младшие 11 бит РС замещаются 11-битным адресом из команды, старшие 5 бит остаются неизменными.

Инструкция JMP @A+DPTR предназначена для выполнения перехода "по выбору". Адрес назначения вычисляется как сумма значения регистра DPTR и аккумулятора. Обычно DPTR устанавливается на адрес таблицы переходов, а аккумулятор содержит индекс этой таблицы.

Команда "CALL addr" (аналогично команде "JMP addr") имеет две формы - LCALL и ACALL. Инструкция LCALL использует 16-битный адресный формат, ACALL - 11-битный.

Подпрограмма завершается инструкцией RET, позволяющей вернуться к инструкции, следующей за командой CALL.

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

В табл.11 дан список условных переходов.

Таблица 11.

Инструкции условных переходов.

Мнемоника

Операция

Режимы адресации

Dir

Ind

Reg

Imm

JZ rel

JMP if A=0

Accumulator only

JNZ rel

JMP if A0

Accumulator only

DJNZ <byte>, rel

Decrement and Jump if not zero

x

x

CJNE A, <byte>, rel

JMP if A<byte>

x

х

CJNE <byte>#data,rel

JMP if <byte> #data

х

х

Все условные переходы определяют адрес назначения как относительное смещение (rel) с длиной перехода, находящейся в пределах от -128 до +127 байт (относительно инструкции, следующей за условным переходом).

В PSW отсутствует флаг нуля, поэтому инструкции JZ и JNZ проверяют условие "равен нулю" тестированием данных в аккумуляторе.

Инструкция DJNZ (Decrement and Jump if Not Zero) используется для организации циклов.

Инструкция CJNE (Compare and Jump Not Equal) также может использоваться для управления циклами. Другим применением данной инструкции является проверка условий "больше чем", "меньше чем". Два байта в поле операндов представлены как "беззнаковое целое". Если первый операнд меньше, чем второй, то бит переноса "С" устанавливается в "1"; если больше или равен, то флаг "С" очищается.