Tutorial |
Dettaglio Istruzioni |
Istruzioni della Cpu 80x86 |
SCHEDA n° 07 [I/ 158 di 198] |
|
|
L'istruzione RET 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 ): |
RET [numero pari] | equivale
a POP
IP
(se near, RETN) equivale a POP IP + POP CS (se far, RETF) |
|||||||||||||||
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 | ||
RET (RETN) |
|
16 | 11+m | 10+m | 5 | 1 | 1 |
|
|
|||||||
RET (RETF) |
|
26 | 15+m | 18+m | 13 | 1 | 1 | |||||||||
RET (RETN) |
02H |
20 | 11+m | 11+m | 5 | 2 | 3 | |||||||||
RET (RETF) |
10H |
25 | 15+m | 18+m | 14 | 2 | 3 |
La tabella evidenzia che l'istruzione non altera alcuna flag. |
Se la procedura da cui si torna è NEAR l'istruzione
RET (o specificatamente RETN)
provvede ai seguenti compiti:
|
Se la procedura da cui si torna è FAR
l'istruzione RET (o specificatamente RETF) provvede ai seguenti compiti:
| |||||||||||||
Se insieme all'istruzione RET 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. |
Le 2 sequenze precedenti sono tratte dalle preziose schede dedicate allo Stack: se vuoi scoprire in dettaglio cosa fa il processore in questi casi consulta quelle dedicate alla gestione di RETNEAR e alla gestione della RETFAR. |
Dopo l'esecuzione di RET, il processore è dunque rientrato nei ranghi..., nel programma principale da cui è partito, nel medesimo segmento se NEAR o in un altro se FAR. |
La figura seguente mostra l'unico codice operativo di queste istruzioni con i bytes dell'eventuale operando coinvolto (leggi le istruzioni): |
|
|
Scheda n° 07 | Istruzioni Cpu 80x86 | |||||||
Istruzione 158 - RET |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|