Appelle Procédure Mode Réel Avec un Cadre IRET
![[0.9]](../0.9.gif)
Simule un FAR CALL (avec les flags poussés sur la pile) vers une
procédure mode réel. La routine mode réel doit finir
en executant une instruction IRET.
Appel avec

AX = 0302H
BH = flags
Bit | Signification |
0 | reservé pour raison historiques , doit être zéro |
1-7 | reservé, doit être zéro |
CX = nombre de mots à copier de la pile mode protégé à la pile mode réel
ES:(E)DI = sélecteur:offsetde la structure de données mode réel
au format suivant:
Offset | Longueur | Contenu |
00H | 4 | DI ou EDI |
04H | 4 | SI ou ESI |
08H | 4 | BP ou EBP |
0CH | 4 | reservé, doit être zéro |
10H | 4 | BX ou EBX |
14H | 4 | DX ou EDX |
18H | 4 | CX ou ECX |
1CH | 4 | AX ou EAX |
20H | 2 | CPU status flags |
22H | 2 | ES |
24H | 2 | DS |
26H | 2 | FS |
28H | 2 | GS |
2AH | 2 | IP (reservé, ignoré) |
2CH | 2 | CS (reservé, ignoré) |
2EH | 2 | SP |
30H | 2 | SS |
Retourne

si la fonction réussit
Carry flag = 0
ES:(E)DI = sélecteur:offset de la structure de données mode réel
modifiée
si la fonction échoue
Carry flag = 1
AX = code d'erreur
8012H | mémoire linéaire indisponible (pile) |
8013H | mémoire physique indisponible (pile) |
8014H | backing store indisponible (pile) |
8021H | valeur invalide (CX trop grand) |
Notes
- Les programmes 32-bit doivent utiliser ES:EDI pour pointer la structure
de données mode réel. Les programmes 16-bit doivent utiliser
ES:DI.
- CS:IP dans la structure de données mode réel
specifie l'adresse de la procedure mode réel à appeler.
- Si les champs SS:SP dans la structure de données
mode réel sont à zéro, une pile mode réel sera fournie
par l'hôte DPMI. Autrement, SS:SP mode rée sera fixé
aux valeurs specifiées avant l'appel du gestionnaire
d'interruption.
- Les flags specifiés dans la structure de données mode réel
seront poussés sur le cadre de pile mode réel IRET. La procédure
sera appelée avec les flags d'interruption et de trace à zéro.
- Les valeurs placées dans les emplacements registre
de segment de la structure de données doivent être valides
pour le mode réel; c.a.d. les valeur doivent être des adresses
de paragraphe et pas des sélecteurs.
- Tous les champs registre general dans la structure de données
sont des DWORDs donc les registres 32-bit peuvent être passés
au mode réel. Notez, toutefois, que les hôtes 16-bit ne sont pas
obligés de passer le mot fort des registres generaux 32-bit ou
FS et GS au mode réel même s'ils s'éxecute sur un 80386 ou supérieur.
- La procedure ou le gestionnaire cible doit retourner avec la pile
dans le même état qu'avant l'appel. Ceci signifie que le code
mode réel doit basculer les piles tant qu'il s'exécute,
mais doit retourner sur la pile d'ou il a été appelé
savec un IRET ou retirer les flags de la pile la avec unRETF(2).
- Au retour de cette fonction ,la structure de données mode réel
contient les valeurs qui ont été retournées par la procédure
mode réel.
- Il est de la responsabilité de l'appelant d'enlever les
paramètres poussés sur la pile mode protégé.