Синтаксис | CMP приёмник,источник |
Машинный код | 3C ib — CMP AL,imm8 3D iw — CMP AX,imm16 3D id — CMP EAX,imm32 80 /7 ib — CMP r/m8,imm8 81 /7 iw — CMP r/m16,imm16 81 /7 id — CMP r/m32,imm32 83 /7 ib — CMP r/m16,imm8 83 /7 ib — CMP r/m32,imm8 38 /r — CMP r/m8,r8 39 /r — CMP r/m16,r16 39 /r — CMP r/m32,r32 3A /r — CMP r8,r/m8 3B /r — CMP r16,r/m16 3B /r — CMP r32,r/m32 |
Описание | Сравнение. |
Действие | Инструкция CMP сравнивает 2 операнда. Основное применение инструкции – проверка условий в циклах. CMP вычитает один операнд от другого, затем сравнивает, являются операнды равными или нет (см. команда SUB). Исходные операнды не меняются. Также используется для условных переходов по меткам. |
Флаги | OF=r SF=r ZF=r AF=r PF=r CF=r |
Пример использования инструкции CMP:
1 2 3 4 5 | CMP AX,0 ; Сравнить AX с 0 JE proc ; Если ноль, переход на метку proc ... ... proc: ... |
CMP часто используется для сверки счетчика, то есть сравнения числа повторений цикла с условием. Рассмотрим типичный случай:
1 2 | cmp cx,0xA ; Проверка, достиг ли счетчик 16 Jle lp1 ; Если счетчик равен или меньше 16, перейти на метку lp1 |