A.5.286 SCASB, SCASW, SCASD: Scan String
SCASB ; AE [8086]
SCASW ; o16 AF [8086]
SCASD ; o32 AF [386]
SCASB compares the byte in AL with the byte at [ES:DI] or [ES:EDI], and
sets the flags accordingly. It then increments or decrements (depending
on the direction flag: increments if the flag is clear, decrements if it
is set) DI (or EDI).
The register used is DI if the address size is 16 bits, and EDI if it
is 32 bits. If you need to use an address size not equal to the current
BITS setting, you can use an explicit "a16" or "a32" prefix.
Segment override prefixes have no effect for this instruction: the use
of ES for the load from [DI] or [EDI] cannot be overridden.
SCASW and SCASD work in the same way, but they compare a word to AX or
a doubleword to EAX instead of a byte to AL, and increment or decrement
the addressing registers by 2 or 4 instead of 1.
The REPE and REPNE prefixes (equivalently, REPZ and REPNZ) may be used
to repeat the instruction up to CX (or ECX - again, the address size
chooses which) times until the first unequal or equal element is found.
To NASM, REP is an alias for REPE.