  | Questa istruzione confronta
    il contenuto dell'accumulatore con quello di una locazione di memoria
    puntata da ES:DI
    e
    modifica le flag in funzione del risultato. | 
    | In pratica simula
    la sottrazione   dell'operando destinazione dall'accumulatore
    senza però alterare
    il contenuto dell'accumulatore (come farebbe invece l'effettiva
    sottrazione, SUB); questo basta per
    modificare le flag coinvolte dal risultato e a favorire gli eventuali salti
    condizionati (Jxx) conseguenti. | 
    | Per funzionare correttamente è necessario
    specificare un operando destinazione, di solito l'etichetta
    del primo dei dati da confrontare con l'accumulatore; in questo
    modo l'assemblatore è in grado di stabilire la dimensione del dato
    da assumere dalla memoria; se l'operando non viene aggiunto l'assemblatore segnala errore. | 
    | In questo modo è chiara anche la dimensione
    del registro (accumulatore) di destinazione, cioè AL
    se il dato letto è un byte, AX
    se word e EAX
    se doubleword (con processori 80386/486). | 
    | L'istruzione è particolarmente utile per trovare
    un determinato byte o carattere in una stringa
    o in una tabella; per confrontare
    2 stringhe o tabelle è disponibile la CMPS,
    che si basa sul medesimo principio di funzionamento. | 
    | Nonostante la necessità di dichiarare
    l'operando sorgente (solo per motivi di corretta compilazione) i dati sono
     comunque assunti
    dalla locazione puntata da  ES:DI, per
    cui l'uso di questa istruzione ha senso solo se, in precedenza, il registro DI è stato inizializzato con l'etichetta usata come operando,
    per esempio anticipando la SCAS
    ES:Testo01 con LEA
    DI,Testo01, vedi esempio successivo). | 
    | Le sue caratteristiche sono riassunte nella
    seguente tabella (leggi le  istruzioni
      ): | 
    | Riassumendo, in dettaglio l'istruzione si
    comporta in questo modo:
  
      | Il dato prelevato dalla locazione di
        memoria ha la dimensione di un byte,
        di una word o di
        una doubleword. |  
      | il segmento
        dell'area Dati è
        per default, ES e l'offset è per
        default DI;
        per questo è assolutamente necessario inizializzare i registri (insieme alla flag DF)
        prima di utilizzarle; non è possibile
        forzare un altro registro di segmento, con l'override. |  
      | dopo aver confrontato il dato con l'accumulatore
        aggiorna il valore del registro di offset (DI o
        DSI),
        in funzione del valore della flag di direzione DF
        (che va quindi  predisposta con certezza
         prima di iniziare il
        confronto):
    
        | se DF=0
            (direzione in avanti) al puntatore viene sommato 1 (cioè viene
            incrementato, se l'operando è un byte), 2 (se è una
            word) o 4
            (se ha dimensione doubleword). |  
        | se DF=1
            (direzione indietro) al puntatore viene sottratto 1
            (cioè viene decrementato, se l'operando è un byte), 2 (se è una
            word) o 4 (se ha dimensione doubleword). |  
     
     |  
      |  la presenza dell'operando  è richiesta dalla sintassi
        per consentire all'assemblatore di capire la dimensione
        dei dati da trattare; esso deve dunque essere dichiarato con la specifica della
        dimensione dei dati a cui fanno riferimento (Byte o 
    Word o Dword Ptr). 
     |  
      | l'assemblatore compila comunque questa istruzione con il medesimo unico byte di
        codice operativo con cui tratta le istruzioni da essa derivate, tutte
        prive di operando, cioè SCASB,
        se i dati manipolati sono bytes, SCASW
        se sono word, o SCASD se doubleword. 
     |  
   
   | 
    | Questa potente istruzione esegue con un solo
    codice operativo il compito di 2 istruzioni, cioè equivale all'esecuzione del seguente codice: |