Numéro d'article: 462492 - Dernière mise à jour: vendredi 2 décembre 1994 - Version: 1.0

Accès au registre BP en langage "C"

Ancien nº de publication de cet article : F12492
Agrandir tout | Réduire tout

Résumé

QUESTION :

Comment accéder au registre BP du processeur pour l'appel de certaines
interruptions logicielles depuis un module C ?

REPONSE :

Les structures _BYTEREGS et _WORDREGS constituant l'union _REGS définie
dans DOS.H ne possèdent pas de membres permettant d'accéder au registre
BP.

Cette absence prohibe l'usage des fonctions _int86, int86x, _bdos et
_intdosx pour l'appel d'interruptions logicielles travaillant sur le
registre CPU BP (par exemple INT 10H AH=11h).

Depuis un module en langage "C", il faut avoir recours à l'assembleur
en ligne (_asm) pour accéder aux registres et réaliser l'appel à
l'interruption.

Des précautions doivent être prises car le registre BP est utilisé
pour tout accès aux variables automatiques.

Quelques règles doivent être IMPERATIVEMENT appliquées pour pouvoir
manipuler BP dans un bloc d'instructions assembleur "inline".

Avant l'appel à l'interruption :
--------------------------------
- Avant l'initialisation de BP celui ci doit être sauvé, un empilage
semblant le plus simple (push BP).
- Apres avoir modifié BP, aucune variable automatique et aucun
paramètre de la fonction ne seront accessibles.

Après l'appel à l'interruption :
--------------------------------
- Si la valeur de BP doit être exploitée, il faut la ranger dans un
autre registre ou dans une variable globale (éventuellement déclarée
"static" dans le corps de la fonction), surtout pas dans une variable
faisant référence à une variable automatique ou un des paramètres de la
fonction.
- Restaurer la valeur de BP originelle par dépilage (pop BP) si celle
ci est dans la pile.

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft QuickC 1.0
Mots-clés : 
KB462492
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Retired KB ArticleExclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.