Assembly Language Help (alang.hlp) (
Table of Contents;
Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software,
purely for historical purposes.
If you're looking for up-to-date documentation, particularly for programming,
you should not rely on the information found here, as it will be woefully
out of date.
SCAS Instruction
◄Detail► ◄Key► ◄Example► ◄Up► ◄Contents► ◄Index► ◄Back►
────────────────────────────────────────────────────────────────────────────
Title: Scan String Flags Flags: O D I T S Z A P C
═════════════════
Syntax: SCAS dest ± ± ± ± ± ±
SCASB
SCASW
SCASD (80386/486 Only)
Description:
Scans a string to find a value specified in the accumulator
register. The string to be scanned is considered the destination
and must be pointed to by ES:DI (even if an operand is specified).
For each element, the destination element is subtracted from the
accumulator value and the flags are updated to reflect the result
(although the result is not stored). DI is adjusted according to
the size of the operands and the status of the direction flag. DI
is increased if the direction flag has been cleared with CLD or
decreased if the direction flag has been set with STD.
If the SCAS form of the instruction is used, an operand must be
provided to indicate the size of the data elements to be
processed. No segment override is allowed. If SCASB (bytes), SCASW
(words), or SCASD (doublewords) is used, the instruction
determines the size of the data elements to be processed and
whether the element scanned for is in AL, AX, or EAX.
SCAS and its variations are normally used with repeat prefixes.
Use REPNE (or REPNZ) to find the first element in a string that
matches the value in the accumulator. Use REPE (or REPZ) to
find the first mismatch.
Before the scan, CX should contain the maximum number of elements
to scan. After a REPNE SCAS, the zero flag is clear if the string does
not contain the accumulator value. After a REPE SCAS, the zero flag
is set if a the string contains nothing but the accumulator value.
When the instruction finishes, ES:DI points to the element that follows
(if the direction flag is clear) or precedes (if the direction flag is
set) the match or mismatch. If CX decrements to 0, ES:DI points to the
element that follows or precedes the last comparison. The zero flag is
set or clear according to the result of the last comparison, not
according to the value of CX.
-♦-