Команда сравнения CMP сравнивает два числа, вычитая одно из
другого. Она не записывает результат, но флаги состояния
устанавливает в соответствии с результатом. Эта команда изменяет
только флаги. В программе команда сравнения используется так же,
как и команда вычитания; однако команды сравнения с заемом не
существует.
Сравнение с повышенной точностью требует чуть больше усилий,
чем сравнение байтов или слов. Фактически в этих случаях много
проще использовать команду вычитания вместо команды сравнения. На
Фиг. 4.11 показано сравнение пары 32=битовых чисел в памяти с
использованием регистра AX в качестве области временного хранения.
Это сравнение определяет, какое из чисел больше. Программа в
результате своего выполнения устанавливает коды условия. Флаг
переноса определяет, какое из чисел больше: если флаг равен 1,
число VALUE больше.
Вторая программа на Фиг. 4.11 проверяет два 32=битовых числа на
равенство. Программа сохраняет младший результат, а затем
комбинирует его со старшим, и таким образом выясняет
эквивалентность результата нулю. Команда OR описана в следующем
разделе, а здесь существенно то, что она комбинирует два значения
так, что окончательное значение равно 0 тогда и только тогда, когда
оба исходных значения равны 0. Результат этой подпрограммы
сравнения - значение флага нуля; если он равен 1, числа равны.
Microsoft (R) Macro Assembler Version 5.00 1/1/80 04:00:59
Фиг. 4.11 Сравнение чисел заданных с повышенной точностью Page 1-1
PAGE ,132
TITLE Фиг. 4.11 Сравнение чисел заданных с повышенной точностью
0000 CODE SEGMENT
ASSUME CS:CODE,DS:CODE
0000 ???????? VALUE1 DD ? ; Область данных размером 32 разряда