| 
      Sezione | 
      
       
   
    
      Indirizzi Base
    
    
    
      Registri Interni
    
      | 
    
| Schede del Tutorial | 
| Stack - Definizione e Gestione | 
      SCHEDA n° 06 [ 3 di 7]  | 
   
  | 
| 
     | 
    
  | 
  
Quando il processore esegue un'istruzione di
    chiamata (CALL ProcNear) di Procedura
    NEAR provvede ai seguenti compiti:
  
  | |||||||||
| Dopo l'esecuzione di CALL ProcNear, il processore si trova in tutt'altro ambiente, lontano dal programma principale da cui è partito, ma nel medesimo segmento; si mette ad eseguire diligentemente tutte le istruzioni della procedura, in attesa della RET, che gli consentirà di tornare nel suo percorso nativo, naturalmente subito dopo l'istruzione CALL. | |||||||||
Quando il processore esegue l'istruzione 
   
  RET
    (probabilmente l'ultima della Procedura NEAR
    in cui è stato costretto a saltare) provvede ai seguenti compiti:
  
  | |||||||||
| Dopo l'esecuzione di RET, il processore è dunque rientrato nei ranghi... | 
| 
     
  | 
      
I movimenti del processore e dei suoi registri
    possono essere monitorati, sviluppati e analizzati in ambiente Debug,
    con l'aiuto di una semplice sequenza di istruzioni usata come banco di
    prova; a sinistra osserviamo i valori dei registri
    e a destra l'aspetto dello   Stack, nelle
    varie fasi:
 
 
  | 
All'inizio (punto *1*),
    poichè la coppia di registri CS:IP
    contiene 1192:0100,
    il processore si trova costretto ad eseguire l'istruzione          MOV
    AX,0102
  
  | |||||
| Dopo l'esecuzione di MOV AX,0102 (punto *2*), la coppia di registri CS:IP contiene 1192:0103: il processore si accinge ad eseguire CALL 010C: il puntatore di Stack non è stato influenzato dall'istruzione MOV: il suo valore è ancora SP=FFFE. | |||||
Dopo l'esecuzione di          CALL   010C
    (punto *3*):
  
  | 
| Dopo l'esecuzione di ADD BX,AX , dentro la procedura (punto *4*), la coppia di registri CS:IP contiene 1192:010E: il processore si accinge ad eseguire RET: il puntatore di Stack non è stato influenzato dall'istruzione ADD: il suo valore è ancora SP=FFFC. | |||||
Dopo l'esecuzione di RET,
    dentro la procedura (punto *5*):
  
  | 
| 
     
  | 
      
Riassumiamo la dinamica
    dello Stack, nella gestione di una chiamata
    di procedura intrasegmentale (NEAR);
    quando il processore è finalmente rientrato nel programma principale (per
    l'azione della 
   
  RET near della procedura,
    dopo esserne uscito per l'azione di  
   
  CALL ProcNear):
  
 
 
  | 
  | 
| 
      
       |     
    Scheda n° 06 | 
      
       | 
    Stack - Definizione e Gestione | 
     | 
    
    
     | 
    
     | 
 ||
| Scheda n° 06 - 3 | 
      
  | 
    
| 
     
  | 
  
        
  | 
    
        
  | 
    
| 
      
         
        Home 
     | 
      
  | 
    |||||||
      
  | 
       
          
        Motore Ricerca  | 
      
  |