Команда CMP процессоров семейства i80x86 используется для сравнения двух операндов. Говоря проще, эта команда сравнивает два числа, то есть проверяет, равны эти два числа или НЕ равны.
Таким образом, комбинации ЧИСЛО1-ЧИСЛО2 могут быть следующими:
Сравнение чисел в Ассемблере с помощью инструкции CMP выполняется по следующему алгоритму:
Остальные флаги также устанавливаются или сбрасываются в зависимости от результата.
Итак, чтобы сравнить два числа в Ассемблере нам надо выполнить следующие действия:
Ну а дальше, в зависимости от результата, мы можем выполнить переход на какую-то метку в программе. В статье об использовании инструкции JMP я рассказывал о метках и о безусловном переходе.
Для того, чтобы выполнить переход после сравнения чисел, требуется использовать одну из команд условного перехода. Но об этих команда будет рассказано в соответствующих статьях.
Пример участка программы сравнения чисел на Ассемблере приведён ниже:
Здесь мы сначала помещаем в регистры AL и AH два одинаковых числа (5), а затем выполняем команду CMP - сравниваем значения в регистрах AL и AH.
Так как эти значения равны, то после выполнения команды CMP флаг ZF будет установлен, то есть равен 1.
Затем мы сравниваем содержимое регистра AL с число 6. Так как в регистре AL у нас осталось число 5, то после выполнения команды CMP флаг ZF будет сброшен (то есть равен 0), так как сравниваемые значения НЕ равны.
В конце как обычно расскажу, почему эта команда ассемблера называется CMP. Это сокращение от английского слова COMPARE, которое можно перевести как “сравнить”.