|
Tutorial
|
Dettaglio Istruzioni |
|
|
 |
Istruzioni
della Cpu 80x86 |
SCHEDA n° 07 [I/
160
di 198] |
 |
|
RETN - Pone fine
ad una procedura NEAR |
|
 | L'istruzione RETN
organizza il ritorno
al programma chiamante al termine di una procedura, cioè un sottoprogramma
chiamato con CALL. |
 | La procedura da cui si torna può essere di tipo
NEAR, cioè posta dentro il segmento di codice in cui è
chiamata, o FAR, in caso contrario;
questa caratteristica impone all'istruzione un diverso modo di gestire le
operazioni. |
 | Nella normale programmazione non è necessario
specificare esplicitamente il tipo di RET desiderato: l'assemblatore,
infatti, è in grado di generare automaticamente il codice corretto in
funzione del contesto near (RETN) o far
(RETF) in cui è trovata l'istruzione RET. |
 | A questa istruzione si può, se necessario,
passare un operando numerico che esprime il numero di byte di
stack che devono essere scaricati dopo
il recupero dell'indirizzo ritorno; questa opportunità è frequentemente
utilizzata dai linguaggi di programmazione ad alto livello per liberare
l'area stack dai parametri passati in ingresso alla procedura da cui si
torna. |
 | Le sue caratteristiche sono riassunte nella
seguente tabella (leggi le istruzioni
): |
|
RETN [numero pari] |
equivale
a POP
IP |
| |
|
Esempio
di Applicazione |
Cicli
di Clock |
Mem
Acces |
N°
Bytes |
Flag
influenzate |
| Mnemonico |
Operandi |
86 |
268 |
386 |
486 |
O |
D |
I |
T |
S |
Z |
A |
P |
C |
RETN
|
|
16 |
11+m |
10+m |
5 |
1 |
1 |
|
|
|
|
|
|
|
|
|
RETN
|
02H
|
20 |
11+m |
11+m |
5 |
2 |
3 |
 | La tabella evidenzia che
l'istruzione non altera alcuna flag. |
 | Se la procedura da cui si torna è NEAR l'istruzione
RETN provvede ai seguenti compiti:
 | preleva il
byte contenuto nella locazione attualmente puntata da SP,
lo trasferisce nella parte bassa di IP. |
 | incrementa
il valore di SP e lo
utilizza per puntare la
locazione da cui prelevare il byte da utilizzare come parte
alta di IP. |
 | incrementa
ancora SP. |
 | salta alla locazione di programma indicata
dal nuovo valore di IP, praticamente
l'indirizzo di offset della locazione del programma principale
successiva a quella con la CALL che
l'aveva costretto ad uscirne. |
|
 | Se insieme all'istruzione RETN
viene fornito un operando numerico, dopo le
consuete operazioni illustrate qui sopra, il numero viene semplicemente
sommato a SP; questo significa
effettivamente "scaricare" i
bytes dallo stack, anche se ovviamente di essi rimarrà traccia in memoria,
almeno fino al prossimo riutilizzo di questa preziosa area. |
 | La sequenza precedente è tratta dalle preziose
schede dedicate allo Stack:
se vuoi scoprire in dettaglio cosa fa il
processore in questo caso consulta quelle dedicate alla gestione
di RETNEAR.
|
 | Dopo l'esecuzione di RETN,
il processore è dunque rientrato nei ranghi..., nel programma principale da cui è partito,
nel medesimo segmento. |
 | La figura seguente mostra l'unico codice
operativo di questa istruzione con i bytes
dell'eventuale operando coinvolto (leggi le
istruzioni): |
|
Addr |
|
Codifica
Masm |
|
Sequenza
Bytes |
|
Istruzione |
0100
0101 |
|
C3
C2 0002 |
|
C3
C2 02 00 |
|
|
RETN
RETN 02H |
|
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|