Tutorial Sezione Assembler

Dettaglio Istruzioni 

Le Schede del Tutorial

  Istruzioni della Cpu 80x86

SCHEDA n° 07 [I/ 159 di 198] 

    

    RETF - Pone fine ad una procedura FAR
     
bulletL'istruzione RETF organizza il ritorno al programma chiamante al termine di una procedura posta in un segmento diverso da quello in cui è chiamata, cioè un sottoprogramma chiamato con CALL FAR.
bulletNella 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.
bulletA 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.   
bulletLe sue caratteristiche sono riassunte nella seguente tabella (leggi le istruzioni Legenda della Tabella):
         
       RETF [numero pari] equivale a   POP IP + POP CS
 

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

RETF

 

26 15+m 18+m 13 1 1  

 

           

 

   

RETF

 10H

25 15+m 18+m 13 2 3
         
bulletLa tabella evidenzia che l'istruzione non altera alcuna flag. 
bulletSe la procedura da cui si torna è FAR l'istruzione RETF provvede ai seguenti compiti:
bulletpreleva il byte contenuto nella locazione attualmente puntata da SP, lo trasferisce nella parte bassa di IP.
bulletincrementa il valore di SP e lo utilizza per puntare la locazione da cui prelevare il byte da utilizzare come parte alta di IP.
bulletincrementa ancora SP.e lo utilizza per puntate la locazione da cui prelevare la parte bassa di CS.
bulletincrementa ancora SP e lo utilizza per puntare la locazione da cui prelevare la parte alta di CS.
bulletincrementa ancora il valore di SP.
bulletsalta alla locazione di programma indicata dal nuovo valore di CS:IP, praticamente l'indirizzo logico completo della locazione del programma principale successiva a quella con la CALL che l'aveva costretto ad uscirne.
bulletSe insieme all'istruzione RETF 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.
     
bulletLa 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 della RETFAR.
bulletDopo l'esecuzione di RETF, il processore è dunque rientrato nei ranghi..., nel programma principale da cui è partito, in un altro segmento.
bulletLa 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
CB
CA 0010
CB
CA 10 00
     RETF
RETF 10H

    

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

    

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