Сами операнды не изменяются. Таким образом, если команду сравнения записать в общем виде

стр операнд_1, операнд_2


то ее действие можно условно изобразить следующим образом:

операнд_1 - операнд_2 -> флаги процессора

В качестве первого операнда команды сmр можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго - регистр (кроме сегментного), ячейку памяти или непосредственное значение, однако не допускается определять оба операнда одновременно, как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Обычно вслед за командой сmр стоит одна из команд условных переходов, анализирующих состояние флагов процесс
сора. При сравнении чисел без знака необходимо использовать команды условных переходов, предназначенные для анализа чисел без знака (ja, jb и проч.). При сравнении чисел со знаком необходимо использовать команды условных переходов, предназначенные для анализа чисел со знаком (jl, jg и проч.).

Пример 1


cmp АХ,10000 ;АХ-10000

je eqlOOOO ;Переход на метку eql0000,

;если АХ=10000

Пример 2


;В полях данных:
base dw 8002h
;В программном сегменте:
cmp DX,base DX-base
jb below ;Переход на метку below,
;если DX, рассматриваемое
;как число без знака, меньше
;числа без знака 8002h=32770

Пример 3


;В полях данных:
base dw 8002h
;В программном сегменте:
cmp DX,base DX-base
jl less ;Переход на метку less, если
;DX, рассматриваемое как
;число со знаком, меньше
;числа со знаком 8002h=-32766

 Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров.

Пример


cmp EAX,8000000 Oh

ja above ;Переход, если

;EAX=80000001h...FFFFFFFFh