Tutorial |
Dettaglio Istruzioni |
Istruzioni della Cpu 80x86 |
SCHEDA n° 07 [I/ 185 di 198] |
|
|
Questa istruzione non appartiene al Set dell'8088/86; si usa solo con 80386/486. | |
Il suo compito è quello di trasferire nella locazione di memoria puntata da ES:DI il dato a 32 bit (byte), assunto per default da EAX. |
L'istruzione non ha operandi (la dimensione del dato da scrivere in memoria è prefissata per default) ma, per il suo corretto funzionamento, è necessario comunque inizializzare il registro DI con l'etichetta associata alla memoria in cui stoccare i dati, per esempio anticipando la STOSD con LEA DI,Tab_32, vedi esempio successivo). |
Da notare che la LODSD esegue il compito opposto della STOSD. | |
Le sue caratteristiche sono riassunte nella seguente tabella (leggi le istruzioni ): |
STOSD | Destinazione (ES:[DI]) << Sorgente (EAX) | |||||||||||||||
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 | ||
STOSD |
|
15 | 7 | 7 | 6 | 2 | 1 |
La tabella evidenzia che l'istruzione non
modifica le flag e che è priva di operandi: in
realtà, essendo un'applicazione particolare della STOS,
pur non dichiarandoli esplicitamente l'istruzione coinvolge i dati a 32
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: |
MOV ES:[DI],EAX ADD DI,4 |
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, per l'impossibilità di "aggiornare" il dato a 32 bit (doubleword) assunto da EAX prima del giro successivo, la memoria coinvolta viene riempita (fill) con il medesimo valore, rendendo piuttosto particolare l'uso dell' auto ripetizione!; per il corretto uso dei questo prefisso è comunque 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 185 - STOSD |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|