Tutorial |
Dettaglio Istruzioni |
Istruzioni della Cpu 80x86 |
SCHEDA n° 07 [I/ 183 di 198] |
|
|
Questa istruzione copia il contenuto dell'accumulatore nella locazione di memoria puntata da ES:DI. | |
Per funzionare correttamente è necessario specificare un operando destinazione, di solito l'etichetta del primo dei dati assunti dall'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) sorgente, cioè AL se il dato assunto è un byte,o AX se è una word o EAX se è una doubleword (con processori 80386/486). | |
Nonostante la necessità di dichiarare l'operando sorgente (solo per motivi di corretta compilazione) i dati sono comunque memorizzati nella 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 STOS ES:Testo01 con LEA DI,Testo01, vedi esempio successivo. | |
Da notare che la LODS esegue il compito opposto della STOS. | |
Le sue caratteristiche sono riassunte nella seguente tabella (leggi le istruzioni ): |
STOS | Destinazione (ES:[DI]) << Sorgente (Accumulatore) | |||||||||||||||
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 | ||
STOS |
[Depo01] |
11 | 3 | 4 | 5 | 1 | 1 | |||||||||
STOS |
[Depo02] |
15 |
La tabella evidenzia che l'istruzione non modifica le flag. La figura seguente mostra le risorse richieste da questa istruzione in funzione degli operandi coinvolti (leggi le istruzioni) e sottolinea l'assoluta indipendenza del codice generato dall'etichetta della zona di memoria coinvolta, necessaria solo per evitare segnalazioni d'errore da parte dell'assemblatore: |
|
Riassumendo, in dettaglio l'istruzione si
comporta in questo modo:
| |||||||||||||||
Questa potente istruzione esegue con un solo codice operativo il compito di 2 istruzioni, cioè equivale all'esecuzione del seguente codice: |
MOV
ES:[DI],AL INC DI |
Prima di concludere è opportuno sottolineare che questa istruzione può fruire dell'operatore di autoripetizione REP: anteponendolo al suo mnemonico il processo di copia dall'accumulatore viene ripetuto automaticamente CX volte, con conseguente scrittura automatica di tutta l'area di memoria; è tuttavia curioso notare che, data l'impossibilità di "aggiornare" il dato assunto in AL prima del giro successivo, la memoria coinvolta viene riempita (fill) con il medesimo dato, rendendo piuttosto particolare l'uso dell' auto ripetizione!; per il corretto uso dei questo prefisso è dunque necessario caricare preventivamente CX con il numero di trasferimenti da eseguire. | |
Viene proposto un esercizio d'esempio: |
|
L'analisi del codice suggerisce queste considerazioni:
| |||||||||||
Per confrontare i bytes compilati dall'assemblatore viene proposto anche un breve codice con il prefisso REP. |
|
Scheda n° 07 | Istruzioni Cpu 80x86 | |||||||
Istruzione 183 - STOS |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|