|
Tutorial
|
Dettaglio Istruzioni |
| Istruzioni della Cpu 80x86 |
SCHEDA n° 07 [I/ 168 di 198] |
|
|
|
|
| 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 del byte destinazione da AL senza però alterarne il contenuto (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. | |
| 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 CMPSB, che si basa sul medesimo principio di funzionamento. | |
| Le sue caratteristiche sono riassunte nella
seguente tabella (leggi le istruzioni
|
| SCASB | Cambia le Flag simulando {AL - byte in ES:[DI]} | |||||||||||||||
|
Esempio di Applicazione |
Cicli di Clock | Mem Acces |
N° Bytes |
Flag influenzate | ||||||||||||
| Mnemonico | Operandi | 86 | 268 | 386 | 486 | O | D | I | T | S | Z | A | P | C | ||
|
SCASB |
|
15 | 7 | 7 | 6 | 2 | 1 | # | # | # | # | # | # | |||
La tabella evidenzia che l'istruzione
modifica alcune flag e l'assenza di operandi: in
realtà, essendo un'applicazione particolare della SCAS,
pur non dichiarandoli esplicitamente l'istruzione coinvolge i dati a 8
bit presenti nella locazione messa a confronto con l'accumulatore; in dettaglio:
| |||||||||||||||
| Questa potente istruzione esegue con un solo codice operativo il compito di 2 istruzioni, cioè equivale all'esecuzione del seguente codice: |
|
CMP AL,ES:[DI] INC DI |
| La figura seguente mostra le caratteristiche di questa istruzione: |
|
||||||||||||||||||||||||||||||
| Prima di concludere è opportuno sottolineare che questa istruzione può fruire dell'operatore di autoripetizione REPE o REPNE: anteponendolo al suo mnemonico il processo di confronto viene ripetuto automaticamente CX volte su tutta l'area sotto test, a meno che non venga trovato un valore uguale (E) o diverso (NE) dall'accumulatore; per il corretto uso dei questo prefisso è dunque necessario caricare preventivamente CX con il numero di confronti da eseguire. | |
| Data l'utilità di questa tecnica viene proposto un esercizio d'esempio: |
|
||||||||||||||||||||||||||||||
L'analisi del codice suggerisce queste considerazioni:
|
|
|
|
Scheda n° 07 |
|
Istruzioni Cpu 80x86 |
|
|
|
||
| Istruzione 168 - SCASB |
|
|
|
|
|
Home
|
|
|||||||
|
Motore Ricerca |
|