Appelle Procédure Mode Réel Avec un Cadre Far Ret
![[0.9]](../09.gif)
Simule un FAR CALL vers une procédure mode réel. La procédure
appelée doit finir en executant une instruction RETF (retour far)
.
Appel avec

AX = 0301H
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 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 généraux 32-bit ou
FS et GS au mode réel même s'ils s'éxecutent sur un 80386 ou supérieur.
- La procedure mode réel 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é
, doit finir avec un RETF (retour far) et ne doit pas effacer
de la pile d'autres paramètres que ceux qui lui ont été transmis
sur la pile.
- 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é.