Организация ЭВМ и систем: Курс лекций (Позиционные системы счисления. Процессоры семейства IA-32. Лазерные принтеры), страница 23

Команда не изменяет значений флагов.

Jxx            операнд                               условный переход                       8086

Команды выполняют переход, если выполняется соответственное условие.

Процессоры 8086-80286 поддерживают только короткие переходы. Процессоры семейства IA-32 поддерживают короткие и ближние переходы.

Правила для операнда — как в команде JMP.

Команда не изменяет значений флагов.

Таблица 7.1. Мнемоники условий в условных командах

xx

Реальное условие

Интерпретация для CMP

AE

NB

NC

CF=0

выше или равно не ниже нет переноса

B

NAE

C

CF=1

ниже не выше и не равно перенос

NO

OF=0

нет переполнения

O

OF=1

переполнение

NS

SF=0

нет знака, положительное

S

SF=1

есть знак, отрицательное

NP

PO

PF=0

нет чётности

P

PE

PF=1

есть чётность

NE

NZ

ZF=0

не равно не ноль

E

Z

ZF=1

равно ноль

A

NBE

CF=0 & ZF=0

выше не ниже и не равно

BE

NA

CF=1 | ZF=1

ниже или равно не выше

G

NLE

ZF=0 & SF=OF

больше не меньше и не равно

GE

NL

SF=OF

больше или равно не меньше

L

NGE

SF¹OF

меньше не больше и не равно

LE

NG

ZF=1 | SF¹OF

меньше или равно не больше

JCXZ         операнд                               переход, если CX=0                    8086

JECXZ       операнд                               переход, если ECX=0                80386

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

Процессоры 8086-80286 поддерживают только короткие переходы. Процессоры семейства IA-32 поддерживают короткие и ближние переходы.

Команды не изменяют значений флагов.

LOOP         операнд                               цикл                                              8086

Уменьшает на единицу значение регистра CX в 16-разрядном или ECX в 32-разрядном режиме и, если значение в данном регистре не равно нулю, выполняет короткий переход по адресу, заданному операндом.

Примечание. Команда

                LOOP    label

эквивалентна паре команд

                DEC     ECX
                JNZ     label

но короче пары этих команд на один байт, работает быстрее и не изменяет значений флагов.

LOOPE       адрес                                    цикл, пока равно                          8086

LOOPZ       адрес                                    цикл, пока ноль                           8086

LOOPNE     адрес                                    цикл, пока не равно                     8086

LOOPNZ     адрес                                    цикл, пока не ноль                       8086

Все четыре команды уменьшают значение регистра CX или ECX на один, после чего выполняют короткий переход по указанному адресу, если значение CX или ECX не равно нулю и, кроме того, выполняется соответствующее условие.

LOOPE и LOOPZ — две мнемоники одной команды, LOOPNE и LOOPNZ — две мнемоники другой команды.

Команды не изменяют флагов.

CALL         адрес                                    вызов процедуры                         8086

Сохраняет текущий адрес в стеке и передаёт управление по адресу, указанному в операнде.

Допустимая адресация:

—  непосредственная,

—  регистровая,

—  косвенная в любой своей разновидности.

Если в качестве адреса перехода указано только смещение, считается, что адрес перехода расположен в том же сегменте, что и команда CALL. При этом происходит ближний вызов процедуры. А именно: процессор помещает в стек значение регистра IP или EIP, соответствующее следующей за CALL команде, и загружает в счётчик команд указанный в операнде адрес, осуществляя тем самым передачу управления.