Шаг 50.
Сравнение строк (команда CMPS)

    На этом шаге мы рассмотрим команду, используемую для сравнения строк.

    Команда CMPS сравнивает содержимое одной области памяти (адресуемой регистрами DS:SI) с содержимым другой области, адресуемой как ES:DI. В зависимости от флага DF команда CMPS также увеличивает или уменьшает адреса в регистрах SI и DI на 1 для байта или на 2 для слова. Команда CMPS устанавливает флаги AF, CF, OF, PF, SF и ZF. При использовании префикса REP в регистре CX должна находиться длина сравниваемых полей. Команда CMPS может сравнивать любое число байт или слов.

    При выполнении команд CMPS и SCAS возможна установка флагов состояния, так чтобы операция могла прекратиться сразу после обнаружения необходимого условия. Перечислим модификации префикса REP для этих целей:


    Пример. Рассмотрим процесс сравнения двух строк, содержащих наборы символов '12AB' и '12BB'. Они отличаются друг от друга третьим символом. Так как эти наборы не равны, операция должна прекратиться, как только будет обнаружено условие "не равно". Для этих целей команда REP имеет модификацию REPE, которая повторяет сравнение до тех пор, пока сравниваемые элементы равны, или регистр CX не равен нулю. Кодируется повторяющееся однобайтовое сравнение следующим образом:
    REPE CMPSB                           .

    На следующем шаге мы рассмотрим команду, применяемую для просмотра строк.




Предыдущий шаг Содержание Следующий шаг