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 byte is found.