Команды CMPS, CMPSB, CMPSW и CMPSD позволяют производить сравнение строк байтов, двухбайтных слов или двойных слов между собой. Сравнение работает аналогично команде CMP, но с некоторыми дополнительными действиями для строк.

 

Команда CMPS
Синтаксис: CMPS op1,op2
Операнды: op1 - m8, m16, m32
op2 - m8, m16, m32
Назначение: Сравнение строк
Процессор: 8086+
Флаги: Флаги OF, SF, ZF, AF, PF и CF устанавливаются в соответствии с результатом.
Комментарий: Команда CMPS на самом деле не является командой процессора. Когда в тексте программы встречается эта команда, компилятор вычисляет размерность ее операндов и на основании вычислений подставляет на ее место одну из реальных команд процессора CMPSB, CMPSW или CMPSD.
Ограничения: Операнды должны иметь один и тот же размер
Примеры:
cmps	str1, es:str2
Команда CMPSB
Синтаксис: CMPSB
Операнды: Нет
Назначение: Сравнение строк байтов
Процессор: 8086+
Флаги: Флаги OF, SF, ZF, AF, PF и CF устанавливаются в соответствии с результатом.
Комментарий: Команда CMPSB сравнивает один байт из памяти по адресу DS:SI с байтом по адресу ES:DI. Аналогична по действию команде CMP.
После выполнения команды, регистры SI и DI увеличиваются на 1, если флаг DF = 0, или уменьшаются на 1, если DF = 1.
Если команда используется в 32-разрядном режиме адресации, то используются регистры ESI и EDI соответственно.
Ограничения: Нет
Примеры:
mov	si,offset str1
mov	di,offset str2
cld
cmpsb
Команда CMPSW
Синтаксис: CMPSW
Операнды: Нет
Назначение: Сравнение строк слов
Процессор: 8086+
Флаги: Флаги OF, SF, ZF, AF, PF и CF устанавливаются в соответствии с результатом.
Комментарий: Команда CMPSW сравнивает слово из памяти по адресу DS:SI со словом по адресу ES:DI. Аналогична по действию команде CMP.
После выполнения команды, регистры SI и DI увеличиваются на 2, если флаг DF = 0, или уменьшаются на 2, если DF = 1.
Если команда используется в 32-разрядном режиме адресации, то используются регистры ESI и EDI соответственно.
Ограничения: Нет
Примеры:
mov	si,offset str1
mov	di,offset str2
cld
cmpsw
Команда CMPSD
Синтаксис: CMPSD
Операнды: Нет
Назначение: Сравнение строк байтов
Процессор: 80386+
Флаги: Флаги OF, SF, ZF, AF, PF и CF устанавливаются в соответствии с результатом.
Комментарий: Команда CMPSD сравнивает двойное слово из памяти по адресу DS:SI с двойным словом по адресу ES:DI. Аналогична по действию команде CMP.
После выполнения команды, регистры SI и DI увеличиваются на 4, если флаг DF = 0, или уменьшаются на 4, если DF = 1.
Если команда используется в 32-разрядном режиме адресации, то используются регистры ESI и EDI соответственно.
Ограничения: Нет
Примеры:
mov	si,offset str1
mov	di,offset str2
cld
cmpsd