Tutorial Sezione Assembler

Dettaglio Istruzioni 

Le Schede del Tutorial

  Istruzioni della Cpu 80x86

SCHEDA n° 07 [I/ 091 di 198] 

    

    LEAVE - Ripristina lo Stack dopo 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 uscita, a scaricare i parametri (cioè sostanzialmente dati) dallo 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 LEAVE esegue, sostanzialmente, istruzioni già disponibili nel set per cui, sebbene piuttosto raffinata, non sembra strettamente necessaria.
bulletIn uscita da una procedura che ha beneficiato di parametri passati per essa nello stack è necessario provvedere alla sua pulizia e al ripristino delle condizioni di partenza; per questo l'istruzione LEAVE fa coppia con ENTER, ad essa complementare, che si occupa di riservare le locazioni utilizzate e a predisporre i puntatori.
bullet In pratica l'effetto di LEAVE è esattamente quello della sequenza di istruzioni:
          

Addr

Sequenza Bytes

Istruzione

0100
0101
55
89 E5
               MOV   SP,BP
POP   BP
         

cioè, oltre a recuperare il puntatore effettivo da quello dedicato (MOV SP,BP), recupera dallo stack anche il valore originale di BP (POP BP); solitamente il puntatore di stack viene poi arretrato alla corretta posizione iniziale con un'istruzione RET nn, con nn uguale al numero passato come primo operando alla ENTER, al fine di scaricare tutti i dati passati in precedenza.

bulletLe sue caratteristiche sono riassunte nella seguente tabella (leggi le istruzioni Legenda della Tabella):
         
       LEAVE   
 

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

LEAVE

 

no 5 4 5 no 1                  
         
bulletLa tabella evidenzia che l'istruzione non modifica alcuna flag e che non ha operandi; da notare che, per evitare errori di compilazione, è necessario specificare, all'inizio del sorgente, la pseudoOperazione .286:
bulletQuesta istruzione ha un unico codice operativo, C9H.

    

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 091 - LEAVE

    

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