CMPS – сравнение строк
A6 | CMPSB | сравнение байтов [DS:SI] и [ES:DI] | |||
A7 | CMPSW | сравнение слов [DS:SI] и [ES:DI] |
Описание.
Эта инструкция сравнивает между собой байты или слова источника и приёмника.
Инструкция CMPS относится к группе инструкций обработки строк. Оба её операнда находятся в памяти. Адрес источника задаётся регистровой парой DS:SI, адрес приёмника – регистровой парой ES:DI. Сегментный регистр DS может быть заменён другим сегментным регистром с помощью префикса замены сегмента; сегментный регистр ES заменён быть не может.
После выполнения операции содержимое регистров SI и DI автоматически увеличивается или уменьшается на размер операнда, т.е. на 1 или на 2. Увеличение (автоинкремент) имеет место, если флажок направления DF в регистре флагов сброшен; уменьшение (автодекремент) – если флажок DF установлен.
Сравнение, как и в команде CMP, выполняется вычитанием значения приёмника из значения источника. Эти значения рассматриваются как двоичные числа со знаком. Результат вычитания теряется, исходные значения операндов не изменяются. По результатам вычитания устанавливаются соответствующие признаки в регистре флагов.
Инструкция CMPS выполняет сравнение одной пары байтов или слов. При необходимости вместе с ней могут использоваться префиксы повторения REP/REPcc, что обеспечит сравнение последовательностей байтов или слов памяти.
Флажки CF, OF, SF, ZF, AF и PF устанавливаются в соответствии с результатами выполнения операции сравнения.