Команды условного перехода по результату команды сравнения

Для сравнения значений двух операндов применяется команда CMP (от англ. CoMPare – сравнить). Формат команды приведен на рис.9.5.

Команды условного перехода по результату команды сравнения - student2.ru

Рис. 9.5. Формат команды CMP

Эта команда вычитает из первого операнда второй и по результатам вычитания устанавливает флаги, которые определяют отношения между операндами. Эти флаги анализируются с помощью специальных команд условного перехода, которые располагаются сразу за командой сравнения. Мнемоника команд зависит от условий, которые они определяют, и берется по табл.9.1. Размерности операндов в команде CMP должны быть одинаковыми.

Таблица 9.1. Мнемоника команд условного перехода по результату команды сравнения

Символ Английский Русский Тип операндов
E Equal Равно Любые
N Not Не Любые
G Greater Больше Числа со знаком
L Less Меньше Числа со знаком
A Above Выше Числа без знака
B Below Ниже Числа без знака

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

Таблица 9.2. Команды условного перехода по результату команды сравнения

Тип операндов Команда Критерий условного перехода Значения флагов для перехода
Любые JE Команды условного перехода по результату команды сравнения - student2.ru ZF = 1
Любые JNE Команды условного перехода по результату команды сравнения - student2.ru ZF = 0
Со знаком JL/JNGE Команды условного перехода по результату команды сравнения - student2.ru SF <> OF
Со знаком JLE/JNG Команды условного перехода по результату команды сравнения - student2.ru SF <> OF или ZF = 1
Со знаком JG/JNLE Команды условного перехода по результату команды сравнения - student2.ru SF = OF и ZF = 0
Со знаком JGE/JNL Команды условного перехода по результату команды сравнения - student2.ru SF = OF
Без знака JB/JNAE Команды условного перехода по результату команды сравнения - student2.ru CF = 1
Без знака JBE/JNA Команды условного перехода по результату команды сравнения - student2.ru CF = 1 или ZF = 1
Без знака JA/JNBE Команды условного перехода по результату команды сравнения - student2.ru CF = 0 и ZF = 0
Без знака JAE/JNB Команды условного перехода по результату команды сравнения - student2.ru CF = 0

Пример использования команд условного перехода по результату команды сравнения:

MOV BX,7

MOV AX,12

CMP AX,BX

JGE m1 ;Переход по метке m1 если AX Команды условного перехода по результату команды сравнения - student2.ru BX

m1:

Так как команды условного перехода не изменяют флагов, то после команды CMP может следовать несколько команд условного перехода, определяющих отношения между одними и теми же операндами:

pole DB 12,25,1,75,120

LEA BX,pole

CMP [BX],5 ;Сравнить элемент массива с 5

JE m1 ;Переход если элемент равен 5

JB m2 ;Переход если элемент больше 5

JA m3 ;Переход если элемент меньше 5

m1:

m2:

m3:

С помощью этих команд можно организовывать циклы, используя регистр CX как счетчик цикла, следующим образом:

MOV CX,10 ;Десять итераций цикла

m1: MOV AX,12

DEC CX ;Уменьшение значения на единицу

CMP CX,0 ;Сравнение с нулем

JNE m1 ;Возврат на начало цикла

Наши рекомендации