Команды CMPS, CMPSB, CMPSW, CMPSD
Рубрика: Архитектура PC
(Команды CPU)
5803
Опубликовано: 26.04.2017
Команды 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 |
Комментарии (0)