| L'analisi del codice suggerisce queste considerazioni:
| prendiamo nota della tecnica con cui viene riservata memoria per le 2
aree da confrontare, con la pseudoistruzione
Dup. |
| notiamo la presenza dell'istruzione CLD,
per imporre un'analisi in avanti. |
| per inizializzare gli offset
dei puntatori delle 2 aree da confrontare si è fatto uso l'uso dell'istruzione LEA. |
| i segment si ritengono quelli di default, DS e
ES. |
| il contatore CX è stato caricato con la dimensione di
entrambe le aree e il prefisso REPNZ
provvederà a ripetere automaticamente il confronto se i 2 bytes
assunti dalla coppia di locazioni sono uguali tra loro, fino
all'esaurimento di tutti gli elementi. |
| se le coppie di bytes sono
tutte diverse il processo ha termine regolarmente e, essendo NZ
la condizione d'uscita, l'istruzione JZ
non verrà eseguita e il programma
proseguirà subito sotto, nella zona di programma indicata
dall'etichetta tutte_non_nulle. |
| se viene rilevata una coppia
uguale il processo verrà
immediatamente interrotto prima della fine e, essendo ora Z
la condizione d'uscita, l'istruzione JZ
verrà eseguita e il programma
proseguirà più in basso, nella zona di programma indicata
dall'etichetta trovata_nulla: le
prime istruzioni da eseguire sono, in questo caso, il decremento dei
puntatori DI e SI,
così da favorire la localizzazione dei dati trovati diversi. |
|