Tutorial Sezione Assembler

Dettaglio Istruzioni 

Le Schede del Tutorial

  Istruzioni della Cpu 80x86

SCHEDA n° 07 [I/ 101 di 198] 

    

    LODSB - Assume un dato a 8 bit da un'area di memoria (stringa)
     
bulletQuesta istruzione trasferisce in AL il dato a 8 bit (byte), assunto per default dalla locazione 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 LODSB con LEA SI,Testo01, vedi esempio successivo).
bulletDa notare che la STOSB esegue il compito opposto della LODSB.
bulletLe sue caratteristiche sono riassunte nella seguente tabella (leggi le istruzioni Legenda della Tabella):
         
         LODSB   Destinazione (AL) << Sorgente  (dato a 8 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

LODSB

   

12 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 8 bit; in dettaglio:
bulletIl dato prelevato dalla memoria (puntata da SI) ha la dimensione di una word.
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) il puntatore viene incrementato.
bulletse DF=1 (direzione indietro) il puntatore viene decrementato.
bullet la presenza di operandi non è necessaria: la lettera B posta dopo lo mnemonico LODS fa capire all'assemblatore che i dati da trattare sono a 8 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, ACH, il compito di 2 istruzioni, cioè equivale all'esecuzione del seguente codice:
         
MOV   AL,DS:[SI]
INC   SI
     
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 8 bit, (bytes) viene effettivamente letto in AL 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

20 45 73 65 6D 70
69 6F 20 64 69 20
54 65 73 74 6F 20
        EXTRN BIOchr1:NEAR     
Testo01
DB " Esempio di Testo "
---- ---------------- ------- ----------------------
0113
0114
0118
011B
011C
011F
FC
8D 36 0100
B9 0012
AC
E8 XXXX
E2 FA



next:

CLD
LEA SI,Testo01
MOV CX,18
LODSB
CALL BIOchr1
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 del byte, come si evince dalla direttiva DB, scritta dopo l'etichetta.
bulletil contatore CX è stato caricato con la dimensione della stringa, cioè il numero dei suoi caratteri.
bulletla procedura BIOchr1 appartiene alla libreria Giobe.ASM/LIB, dell'ambiente Assembler, ed è qui dichiarata EXTRN.
bulletl'azione del LOOP e della BIOchr1 stampa a video la stringa Testo01.

    

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 101 - LODSB

    

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