Assembleur 80x86 | RETN |
---|---|
INTEL 8088+ | Return Near |
Syntaxe
RETN |
RETN immédiat |
Paramètres
Nom | Description |
---|---|
immédiat | Ce paramètre permet d'indiquer une valeur immédiatement correspondant à une addition a effectuer dans la pile, afin de retirer des valeurs empilés par l'instruction PUSH par exemple. |
Description
Cette instruction permet de quitter une procédure. Ainsi, elle indique au microprocesseur qu'il doit désempiler la valeur du pointeur d'instructions contenu dans la pile et la copie dans le registre IP. Ensuite, l'exécution du code se poursuit à l'instruction suivant l'instruction «CALL».
Algorithme
SI opérande de taille = 32 bits ALORS SI les 12 octets du haut de la pile sont en dehors de la limite de la pile ALORS EXCEPTION #SS(0) FIN SI EIP ← Pop() SINON SI les 6 octets du haut de la pile sont en dehors de la limite de la pile ALORS EXCEPTION #SS(0) FIN SI tempEIP ← Pop() tempEIP ← tempEIP ∩ 0000FFFFh SI tempEIP n'est pas dans limite du segment de code ALORS EXCEPTION #GP(0) FIN SI EIP ← tempEIP FIN SI SI instruction a une opérande immédiate ALORS SI taille de l'adresse de la pile = 32 bits ALORS ESP ← ESP + SRC SINON SP ← SP + SRC FIN SI FIN SI |
Mnémonique
Instruction | Opcode | Description |
---|---|---|
RETN | C3h | Retour d'un appel de procédure court. |
RETN imm16 | C2h iw | Retour d'un appel de procédure court et spécifie le nombre d'octets à retirer de la pile. |
Exceptions
Message | Mode réel | Virtuel 8086 | Mode protégé | Description |
---|---|---|---|---|
#SS(Pile) | X | X | X | Une adresse mémoire dépasse la limite du segment de pile ou n'est pas canonique |
#GP(Protection général) | X | X | X | Une adresse mémoire dépasse la limite du segment de données ou n'est pas canonique |
#PF(Faute de page) | X | X | Une faute de page résultat de l'exécution de l'instruction | |
#AC(Vérifie l'alignement) | X | X | Un désalignement de la référence mémoire est effectué quand une vérification d'alignement est activé |
Exemple
Voici un exemple en Turbo Pascal montrant l'utilisation de cette instruction :
on obtiendra le résultat suivant :
AX = 4Voir également
Instruction assembleur 80x86 - Instruction CALL
Instruction assembleur 80x86 - Instruction RET
Langage de programmation - Structure de données - Structures récursives linéaires - Pile
Dernière mise à jour : Lundi, le 1 septembre 2014