Команды SCAS, SCASB, SCASW, SCASD - это команды, предназначенные для сканирования строк байтов, слов и двойных слов в поисках искомого значения. Искомое значение должно при этом находиться в регистре AL, AX или EAX соответственно.

 

Команда SCAS
Синтаксис: SCAS op1
Операнды: op1 - m8, m16, m32
Назначение: Сканирование строки
Процессор: 8086+
Флаги: Флаги OF, SF, ZF, AF, PF, CF устанавливаются в соответствии с результатом.
Комментарий: Команда SCAS на самом деле не является командой процессора. Когда в тексте программы встречается эта команда, компилятор вычисляет размерность ее операнда и на основании вычислений подставляет на ее место одну из реальных команд процессора SCASB, SCASW или SCASD.
Ограничения: Нет
Примеры:
scas	es:str2
Команда SCASB
Синтаксис: SCASB
Операнды: Нет
Назначение: Сканирование строки байт
Процессор: 8086+
Флаги: Флаги OF, SF, ZF, AF, PF, CF устанавливаются в соответствии с результатом.
Комментарий: Команда SCASB сравнивает регистр AL с байтом в ячейке памяти по адресу ES:DI и устанавливает флаги аналогично команде CMP. После выполнения команды, регистр DI увеличивается на 1, если флаг DF = 0, или уменьшается на 1, если DF = 1.
Если команда используется в 32-разрядном режиме адресации, то используется регистр EDI.
Ограничения: Нет
Примеры:
mov	di,offset str1
cld
scasb
Команда SCASW
Синтаксис: SCASW
Операнды: Нет
Назначение: Сканирование строки слов
Процессор: 8086+
Флаги: Флаги OF, SF, ZF, AF, PF, CF устанавливаются в соответствии с результатом.
Комментарий: Команда SCASW сравнивает регистр AX со словом в ячейке памяти по адресу ES:DI и устанавливает флаги аналогично команде CMP. После выполнения команды, регистр DI увеличивается на 2, если флаг DF = 0, или уменьшается на 2, если DF = 1.
Если команда используется в 32-разрядном режиме адресации, то используется регистр EDI.
Ограничения: Нет
Примеры:
mov	di,offset str1
cld
scasw
Команда SCASD
Синтаксис: SCASD
Операнды: Нет
Назначение: Сканирование строки двойных слов
Процессор: 8086+
Флаги: Флаги OF, SF, ZF, AF, PF, CF устанавливаются в соответствии с результатом.
Комментарий: Команда SCASD сравнивает регистр EAX с двойным словом в ячейке памяти по адресу ES:DI и устанавливает флаги аналогично команде CMP. После выполнения команды, регистр DI увеличивается на 4, если флаг DF = 0, или уменьшается на 4, если DF = 1.
Если команда используется в 32-разрядном режиме адресации, то используется регистр EDI.
Ограничения: Нет
Примеры:
mov	di,offset str1
cld
scasd