Шаг 51.
Просмотр строк (команда SCAS)

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

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

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


    Пример. В заданной строке осуществить поиск и замену символа 'm' на символ пробела. Когда команда SCASB обнаружит символ 'm' (в примере это будет позиция STRING+4), то операция сканирования прекратится и регистр DI будет содержать aдрес STRING+5. Для получения адреса символа 'm' необходимо уменьшить содержимое DI на единицу и записать по полученному адресу символ пробела.
    STRLEN    EQU  9                 ;Длина поля STRING.
    STRING    DB   'Assembler'
              .        .           .
              CLD                    ;Установка флага направления в 0.
              MOV  AL,'m'            ;Искомый символ.
              MOV  CX,STRLEN         ;Длина поля STRING.
              LEA  DI,STRING         ;Адрес поля STRING.
              REPNE SCASB            ;Поиск.
              JNZ  K20               ;Символ найден?
              DEC  DI                ;Да - уменьшить адрес.
              MOV  BYTE PTR[DI],20H  ;Подставить пробел.
    K20:      RET

    На следующем шаге приведем пример программы с использованием рассмотренных команд работы со строками.




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