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