ХАНДЫФАР
Инструкция SCASB/SCASW
Сравнить память с регистром AL или AX
SCASB - Сравнить AL с байтом в ES:DI, затем установить флаги состояния.
SCASW - Сравнить AX со словом в ES:DI, затем установить флаги состояния.
Эта инструкция сравнивает байт или слова, определённые с помощью операнда памяти, со значением в al или ax. Затем она устанавливает флаги состояния в EFLAGS, записывающие результаты. Адрес операнда памяти считывается из регистра es:di. Обратите внимание, что es не может быть переопределен префиксом переопределения сегмента.
После сравнения регистр di увеличивается или уменьшается автоматически в соответствии с установкой флага DF в регистре FLAGS. Если флаг DF равен 0, регистр di увеличивается; если флаг DF равен 1, регистр di уменьшается. Регистр увеличивается или уменьшается на 1 для операций с байтами и на 2 для операций со словами.
В качестве примера рассмотрим случай, когда у нас есть байтовая строка "Hello World!" и нам необходимо проверить нахождение символа 'W'. Если символ 'W' не найден, то вернуть в регистре ax значение -1. Если символ 'W' найден, то вернуть индекс этого символа в строке в регистре ax. Длина байтовой строки указывается в регистре cx.
Инструкция SCASB/SCASW
Сравнить память с регистром AL или AX
__________________SCASB - Сравнить AL с байтом в ES:DI, затем установить флаги состояния.
__________________SCASW - Сравнить AX со словом в ES:DI, затем установить флаги состояния.
Эта инструкция сравнивает байт или слова, определённые с помощью операнда памяти, со значением в al или ax. Затем она устанавливает флаги состояния в EFLAGS, записывающие результаты. Адрес операнда памяти считывается из регистра es:di. Обратите внимание, что es не может быть переопределен префиксом переопределения сегмента.
После сравнения регистр di увеличивается или уменьшается автоматически в соответствии с установкой флага DF в регистре FLAGS. Если флаг DF равен 0, регистр di увеличивается; если флаг DF равен 1, регистр di уменьшается. Регистр увеличивается или уменьшается на 1 для операций с байтами и на 2 для операций со словами.
В качестве примера рассмотрим случай, когда у нас есть байтовая строка "Hello World!" и нам необходимо проверить нахождение символа 'W'. Если символ 'W' не найден, то вернуть в регистре ax значение -1. Если символ 'W' найден, то вернуть индекс этого символа в строке в регистре ax. Длина байтовой строки указывается в регистре cx.