Tutorial Sezione Assembler

Dettaglio Istruzioni 

Le Schede del Tutorial

  Istruzioni della Cpu 80x86

SCHEDA n° 07 [I/ 103 di 198] 

    

    LODSW - Assume un dato a 16 bit da un'area di memoria (tabella)
     
bulletQuesta istruzione trasferisce in AX il dato a 16 bit (word), assunto per default dalle locazioni di memoria puntata da DS:SI.
bulletL'istruzione non ha operandi (la dimensione del dato da leggere è prefissata per default) ma, per il suo corretto funzionamento, è necessario comunque inizializzare il registro SI con l'etichetta associata ai dati da leggere, per esempio anticipando la LODSW con LEA SI,Tabel16, vedi esempio successivo).
bulletDa notare che la STOSW esegue il compito opposto della LODSW.
bulletLe sue caratteristiche sono riassunte nella seguente tabella (leggi le istruzioni Legenda della Tabella):
         
         LODSW   Destinazione (AX) << Sorgente  (dato a 16 bit)
 

Esempio di Applicazione

Cicli di Clock Mem
Acces

Bytes
Flag   influenzate
Mnemonico Operandi 86 268 386 486 O D I T S Z A P C

LODSW

   

16 5 5 5 1 1                     
         
bulletLa tabella evidenzia che l'istruzione non modifica alcuna flag, ed essendo un'applicazione particolare della LODS, pur non dichiarandoli esplicitamente, l'istruzione si accinge a leggere dalla memoria dati a 16 bit; in dettaglio:
bulletIl dato prelevato dalla memoria (puntata da SI) ha la dimensione di un byte.
bulletil segmento dell'area Dati è sempre DS (cioè non è possibile forzare nessun altro registro di segmento, con l'override).
bulletdopo aver provveduto alla memorizzazione aggiorna il valore del registro di offset SI, in funzione del valore della flag di direzione DF (che va quindi predisposta con certezza prima di iniziare il confronto):
bulletse DF=0 (direzione in avanti) al puntatore viene sommato 2.
bulletse DF=1 (direzione indietro) al puntatore viene sottratto 2.
bullet la presenza di operandi non è necessaria: la lettera W posta dopo lo mnemonico LODS fa capire all'assemblatore che i dati da trattare sono a 16 bit.
bulletin tutti i casi non va dimenticato che questa istruzione usa per default il puntatore DS:SI, per cui è assolutamente necessario inizializzarlo (insieme alla flag DF) prima di utilizzarle.
bulletQuesta istruzione esegue con un solo codice operativo, ADH, il compito di 2 istruzioni, cioè equivale all'esecuzione del seguente codice:
         
MOV   AX,DS:[SI]
ADD   SI,2
     
bulletSebbene sia possibile fruire dell'operatore di autoripetizione REP, anteponendolo allo mnemonico dell'istruzione, questa pratica risulta in questo caso del tutto inutile; il dato a 16 bit, (word) viene effettivamente letto in AX automaticamente CX volte ma, data l'impossibilità di "consumarlo" viene sovrascritto, cioè inesorabilmente perso, rendendo inutile l'uso della auto ripetizione!
bulletData l'utilità di questa tecnica viene proposto un esercizio d'esempio:
         

Addr

Codifica Masm

Istruzione


0100

1234
5678
9ABC
        EXTRN Wor2Asc:NEAR     
Tabel16
DW 1234H
        DW 5678H
        DW 9ABCH
---- ---------------- ------- ----------------------
0106
0107
010B
010E
010F
0112
FC
8D 36 0100
B9 0003
AD
E8 XXXX
E2 FA



next:

CLD
LEA SI,Tabel16
MOV CX,3
LODSW
CALL Wor2Asc
LOOP next
         
bulletL'analisi del codice suggerisce queste considerazioni:
bulletla presenza dell'istruzione CLD impone la lettura della memoria in avanti.
bullet per inizializzare l'offset SI del puntatore si è fatto uso l'uso dell'istruzione LEA.
bulletil segment si ritiene quello di default, DS.
bulleti dati trattati hanno la dimensione della word, come si evince dalla direttiva DW, scritta dopo l'etichetta.
bulletil contatore CX è stato caricato con il numero di dati della tabella.
bulletla procedura Wor2Asc appartiene alla libreria Giobe.ASM/LIB, dell'ambiente Assembler, ed è qui dichiarata EXTRN.
bulletl'azione del LOOP e della Wor2Asc stampa a video, in sequenza, la traduzione Ascii dei numeri esadecimali word assunti dalla memoria.

    

Pagina Precedente Scheda n° 07 Pagina Successiva Istruzioni Cpu 80x86 Torna al Menu delle Schede del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
Istruzione 103 - LODSW

    

SCHEDE » 1.Header EXE 2.PseudoOp MASM 3.Differenza tra Macro e Procedure
4.
Tabella Vettori 5.PSP 6.Stack 7.Istruzioni 80x86
8.La misura dell'Informazione 9.Numeri e Logica Binaria
TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati