Tutorial Sezione Assembler

Dettaglio Istruzioni 

Le Schede del Tutorial

  Istruzioni della Cpu 80x86

SCHEDA n° 07 [I/ 089 di 198] 

    

    LDS - Crea il Puntatore DS:Offset assumendolo dalla memoria
     
bulletQuesta istruzione legge il contenuto di 4 locazioni consecutive di memoria (indicate dall'operando sorgente) e ne copia il contenuto nel registro di Segmento DS e nel registro di Offset indicato dall'operando destinazione.
bulletIl registro coinvolto per ricevere l'offset del puntatore assunto dalla memoria può essere uno qualunque dei registri a 16 bit (naturalmente esclusi quelli di segmento...) sebbene sia logico pensare a SI (o ESI), partner riconosciuto di DS.
bulletLa sequenza dei 4 bytes presenti nella memoria sorgente, segue la logica Lo-Hi più volte sottolineata: nella locazione puntata dall'etichetta è presente il byte meno significativo dell'offset del puntatore, seguito dal suo byte più significativo e dai bytes basso e alto del segment del puntatore stesso.
bulletLe sue caratteristiche sono riassunte nella seguente tabella (leggi le istruzioni Legenda della Tabella):
         
         LDS Registro,Memoria  DS (segment)          << contenuto word Sorgente + 02h
 Destinazione (offset) << contenuto word Sorgente
 

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

LDS

SI,[Depo04]

24+EA 7 7 6 2 2,4                    
         
bulletLa tabella precedente sottolinea che nessuna flag viene alterata da questa operazione; la figura seguente mostra le risorse richieste da questa istruzione in funzione degli operandi coinvolti (leggi le istruzioni):
          

Addr

Codifica Masm

Sequenza Bytes

Istruzione

0100 55AA 1188 88 11 AA 55 Depo04 DD 55AA1188H
---- ---------------- ----------------- ------- ----------------------
0104
0108
010C
0110
0114
C5 36 0100
C5 3E 0100
C5 06 0100
C5 1E 0100
C5 0E 0100
C5 36 00 01
C5 3E 00 01
C5 06 00 01
C5 1E 00 01
C5 0E 00 01
LDS SI,[Depo04]
LDS DI,[Depo04]
LDS AX,[Depo04]
LDS BX,[Depo04]
LDS CX,[Depo04]
         
bulletGli esempi appena proposti non aiutano a capire il funzionamento di questa istruzione; con una più attenta analisi possiamo dire:
bulletciascun esempio genera un puntatore logico che ha come segment il registro DS, caricato certamente con 55AAH.
bulletla parte offset del puntatore sarà costituita dai registri passati come operando destinazione, in ogni caso lasciati con il valore 1188H.
bulletdopo l'esecuzione saranno dunque disponibili rispettivamente i puntatori DS:SI = DS:DI = DS:AX = DS:BX = DS:CX, tutti uguali a 55AA:1188H
bulleti valori esadecimali sono ovviamente assunti dalle 4 locazioni puntate da DS:[Depo04]; la variabile locale Depo04 contiene infatti, in sequenza, i bytes 88H, 11H, AAH e 55H (la logica Lo-Hi è evidente...) e il programma la riconosce per default nel segmento DS
bulletQuesta pratica istruzione può tornar utile nella lettura dei puntatori presenti nella Tabella dei Vettori, nelle fasi di rimappatura dei Vettori stessi, in occasione della scrittura di nuove procedure di servizio per i vari INT; naturalmente lo stesso vale per altre zone di memoria chiamate a raccogliere puntatori completi di vario tipo, come per esempio lo stack.
bulletIl codice seguente mostra il contenuto dei registri dopo l'azione di questa istruzione:
     

Il contenuto delle prime 16 locazioni RAM è il seguente:        
0000:0000 68 10 A7 00 BC 2C 95 08-16 00 B4 03 AB 2C 95 08

Prima di eseguire l'istruzione il registro DS è stato posto a 0 
-R
AX=0000 BX=0000 CX=0000 DX=0000 SP=ED5F BP=0000 SI=0000 DI=0000
DS=0000 ES=1190 SS=1190 CS=1190 IP=0100 NV UP EI PL NZ NA PO NC
1190:0100 C5360000   LDS SI,[0000]             DS:0000=1068

L'istruzione ha preso da DS:[0000] e ha messo in DS:SI ....   
-T
AX=0000 BX=0000 CX=0000 DX=0000 SP=ED5F BP=0000 SI=1068 DI=0000
DS=00A7 ES=1190 SS=1190 CS=1190 IP=0104 NV UP EI PL NZ NA PO NC
1190:0104 

         
bulletQuesta istruzione ha 2 codici operativi,  C3H, seguito da quello che tiene conto dell'operando coinvolto.

    

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 089 - LDS

    

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