Tutorial Sezione Assembler

Dettaglio Istruzioni 

Le Schede del Tutorial

  Istruzioni della Cpu 80x86

SCHEDA n° 07 [I/ 095 di 198] 

    

    LGS - Crea il Puntatore GS:Offset assumendolo dalla memoria
     
bulletQuesta istruzione non appartiene al Set dell'8088/86; si usa solo con 80386/486.
bulletQuesta istruzione legge il contenuto di 4 locazioni consecutive di memoria (indicate dall'operando sorgente) e ne copia il contenuto nel registro di Segmento GS 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...).
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):
         
         LGS Registro,Memoria  GS (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

LGS

SI,[Depo04]

no no 7 6 no 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

Depo0
4
.386
DD 55AA1188H
---- ---------------- ----------------- ------- ----------------------
0104
0108
010C
0110
0114
0F B5 36 0100
0F B5 3E 0100
0F B5 06 0100
0F B5 1E 0100
0F B5 0E 0100
0F B5 36 00 01
0F B5 3E 00 01
0F B5 06 00 01
0F B5 1E 00 01
0F B5 0E 00 01
LGS SI,[Depo04]
LGS DI,[Depo04]
LGS AX,[Depo04]
LGS BX,[Depo04]
LGS 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 GS, 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 GS:SI = GS:DI = GS:AX = GS:BX = GS:CX, tutti uguali a 55AA:1188H
bulleti valori esadecimali sono ovviamente assunti dalle 4 locazioni puntate da GS:[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 GS
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 0FB53E0000  LGS DI,[0000]            DS:0000=1068

L'istruzione ha preso 4 bytes da DS:[0000], 68 18 A7 00
e gli ha messi sotto forma di puntatore, 00A7:1068, in GS:DI

         
bulletQuesta istruzione ha 3 codici operativi,  0FH e B5H, 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 095 - LGS

    

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