Tutorial Sezione Assembler

Dettaglio Istruzioni 

Le Schede del Tutorial

  Istruzioni della Cpu 80x86

SCHEDA n° 07 [I/ 037 di 198] 

    

    ENTER - Prepara lo Stack per il Passaggio dei Parametri ad una Procedura
     
bulletQuesta istruzione non appartiene al Set dell'8088/86; si usa solo con 80286/486.
bulletIl suo compito è quello di facilitare le procedure, in ingresso, a ricevere i parametri (cioè sostanzialmente dati) attraverso lo stack (Stack Frame); l'uso dello stack come zona dati provvisoria è una consuetudine piuttosto diffusa nei programmi scritti in un linguaggio ad alto livello e, per evitare di entrare in conflitto con la Cpu, nella condivisione di questa preziosa struttura, è necessario perseguire tecniche sicure.
bulletPer questa ragione la gestione delle locazioni dello stack è affidata, in questi casi al puntatore SS:BP, invece del classico SS:SP, lasciato esclusivamente alla Cpu.
bulletL'istruzione ENTER esegue, sostanzialmente, una serie di istruzioni già disponibili nel set per cui, sebbene piuttosto raffinata, non sembra strettamente necessaria.
bulletHa 2 operandi:
bulletil primo (numero a 16 bit) indica il numero di bytes che saranno inseriti nello stack dalla procedura, cioè in sostanza lo spazio da riservare alle variabili locali. Se questo numero è 0 l'effetto di ENTER è esattamente quello della sequenza di istruzioni:
          

Addr

Sequenza Bytes

Istruzione

0100
0101
55
89 E5
               PUSH  BP
MOV   BP,SP
         

Altrimenti, oltre a spingere nello stack il valore di BP (PUSH BP) e a copiare il puntatore effettivo in quello dedicato (MOV BP,SP), sottrae da BP il numero passato come primo operando, al fine di puntare il primo dato passato.

bulletil secondo (numero a 8 bit, da 0 a 31) indica il livello di annidamento della procedura dentro il codice sorgente scritto in linguaggio ad alto livello
bulletNaturalmente al termine delle operazione di scambio dati è necessario provvedere a pulire lo stack e ripristinare le condizioni di partenza; per questo l'istruzione ENTER fa coppia con LEAVE, ad essa complementare, che si occupa di rilasciare le locazioni utilizzate e a ripristinare i puntatori.
bulletLe sue caratteristiche sono riassunte nella seguente tabella (leggi le istruzioni Legenda della Tabella):
         
ENTER N°Bytes,Annidamenti   Riserva locazioni nello stack e aggiusta i puntatori 
 

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

ENTER

0,0

no 11 10 14 no 4                   

ENTER

12,1

no 15 12 17 no 4

ENTER

0,6

no 12+4(n-1) 15+4(n-1) 17+3(n-1) no 4
         
bulletLa tabella evidenzia che l'istruzione non modifica alcuna flag e che ammette una sola possibile tipologia di operandi: una coppia di numeri interi.
          
bulletLa figura seguente mostra le risorse richieste da questa istruzione in funzione dei suoi operandi (leggi le istruzioni); da notare che, per evitare errori di compilazione, è necessario specificare, all'inizio del sorgente, la pseudoOperazione .286:
          

Addr

Codifica Masm

Sequenza Bytes

Istruzione

.286
0100
0104
0108
C8 0000 00
C8 000C 01
C8 0000 06
C8 00 00 00
C8 0C 00 01
C8 00 00 06
         ENTER 0,0
ENTER 12,1
ENTER 0,6

    

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 037 - ENTER

    

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