Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Micro_systK.doc
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
4 Мб
Скачать
☆

Команды передачи управления

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

  • op – операнд;

  • i8, i16, – 8- и 16-разрядные константы находящиеся непосредственно в командах;

  • r16 – имя регистра РОН, содержащего 16-разрядный операнд;

  • m16, m32 – адрес ячейки памяти, содержащей 16- или 32-разрядный операнд;

  • H(op) – старшие 16 разрядов операнда;

  • L(op) – младшие 16 разрядов операнда;

  • CF – флаг переноса;

  • SF – флаг знака;

  • ZF – флаг нуля;

  • OF – флаг переполнения;

  • PF – флаг четности.

Таблица П.4. Команды передачи управления

Мнемоника

Операция

Допустимые значения операндов

Описание команды

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

JMP op

IP :=IP+ op

i8, i16,

Безусловный переход (jump)

JMP op

IP := [op]

r16, m16

Безусловный переход косвенный

JMP op

CS := [op+2]

IP := [op]

m32

Дальний косвенный переход

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

CALL op

SP:=(SP-2)

mod 216

IP[SS:SP]

IP := op

i16

Вызов процедуры (близкий)

CALL op

SP:=(SP-2)

mod 216

CS[SS:SP]

SP:=(SP-2)

mod 216

IP[SS:SP]

CS := H(op)

IP := L(op)

i32

Вызов процедуры (дальний)

RET

[SS:SP] IP

SP:=(SP+2)

mod 216

Возврат (близкий) из процедуры (return)

RET

[SS:SP] IP

SP:=(SP+2)

mod 216

[SS:SP] CS

SP:=(SP+2)

mod 216

Возврат (дальний) из процедуры (return)

RET op

стекIP {стекCS}

SP :=SP+ op

i16

Возврат из процедуры и увеличение указателя стека

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

JC op

Если CF=1, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если есть перенос (CF=1)

JNC op

Если CF=0, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если нет переноса (CF=0)

JS op

Если SF=1, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если результат отрицательный (SF=1)

JNS op

Если SF=0, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если результат положительный (SF=0)

JE op

JZ op

Если ZF=1, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если операнды равны/результат равен нулю (ZF=1)

JNE op

JNZ op

Если ZF=0, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если операнды не равны/результат не равен нулю (ZF=0)

JO op

Если OF=1, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если есть переполнение (OF=1)

JN op

Если OF=0, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если нет переполнения (OF=0)

JP op

JPE op

Если PF=1, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если количество единиц четное (PF=1)

JNP op

JPO op

Если PF=0, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если количество единиц нечетное (PF=0)

JL op

JNGE op

Если SFOF=1, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если число со знаком меньше (не больше и не равно)

JGE op

JNL op

Если SFOF=0, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если число со знаком больше или равно (не меньше)

JLE op

JNG op

Если (SFOF)ZF=1, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если число со знаком меньше или равно (не больше)

JG op

JNLE op

Если (SFOF)ZF=0, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если число со знаком больше (не меньше и не равно)

JB op

JN op

Если CF=1, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если число без знака меньше (не больше и не равно)

JAE op

JNB op

Если CF=0, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если число без знака больше или равно (не меньше)

JBE op

JNA op

Если CFZF=1, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если число без знака меньше или равно (не больше)

JA op

JNBE op

Если CFZF=0, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если число без знака больше (не меньше и не равно)

Команды, предназначенные для организации циклов

LOOP op

CX:=CX-1

Если CX0, то IP:=IP+ op, иначе IP:=IP+2

i8

Управление циклом по счетчику (переход, если CX0)

LOOPE op

LOOPZ op

CX:=CX-1

Если

(CX0) ZF=1, то IP:=IP+ op, иначе IP:=IP+2

i8

Цикл по счетчику и пока равно (пока ноль)

LOOPNE op

LOOPNZ op

CX:=CX-1

Если

(CX0) ZF=1, то IP:=IP+ op, иначе IP:=IP+2

i8

Цикл по счетчику и пока не равно (пока не ноль)

JCXZ op

Если CX=0, то IP:=IP+ op, иначе IP:=IP+2

i8

Переход, если CX=0 (jump if CX is zero)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]