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.
                                    -♦-