Assembleur 80x86 | INT |
---|---|
INTEL 8088+ | Interrupt |
Syntaxe
INT numéro |
Paramètres
Nom | Description |
---|---|
numéro | Ce paramètre permet d'indiquer le numéro d'interruption, soit un nombre situé entre 0 et 255 en décimal ou 00h et FFh en hexadécimal. |
Description
Cette instruction permet d'exécuter l'interruption avec le numéro spécifié.
Algorithme
MODULE INT(numéro) drapeaux préservé SP ← SP - 2 drapeau IF ← 0 drapeau TF ← 0 CS préservé SP ← SP - 2 IP préservé CS ← Donnée à l'adresse mémoire (numéro x 4 + 2) IP ← Donnée à l'adresse mémoire (numéro x 4) |
Mnémonique
Instruction | Opcode | Description |
---|---|---|
INT 03h | CCh | Cette instruction permet d'exécuter l'interruption avec le numéro 03h. |
INT imm8 | CDh ib | Appel une routine de service d'interruption spécifié par le vecteur imm8. |
Exceptions
Message | Mode réel | Virtuel 8086 | Mode protégé | Description |
---|---|---|---|---|
#TS(Sélecteur) | X | X | Une partie de l'échangeur de pile, la destination du sélecteur de segment de pile ou le registre (R)SP dans le TSS est en dehors des limites du TSS. | |
X | X | Une partie de l'échangeur de pile, la destination du sélecteur de segment de pile ou le registre (R)SP dans le TSS a sélecteur nulle. | ||
X | X | Une partie de l'échangeur de pile, la destination du sélecteur du bit TS est fixé, mais le sélecteur LDT a un sélecteur nulle. | ||
X | X | Une partie de l'échangeur de pile, la destination du sélecteur du TSS est en dehors des limites des tables de descripteur GDT ou LDT. | ||
X | X | Une partie de l'échangeur de pile, la destination du sélecteur du TSS contient un RPL n'étant pas égale au DPL. | ||
X | X | Une partie de l'échangeur de pile, la destination du sélecteur du TSS contient un DPL n'étant pas égale au CPL du sélecteur de code segment. | ||
X | X | Une partie de l'échangeur de pile, la destination du sélecteur du TSS n'est pas dans un segment écrivable. | ||
#NP(Segment non présent) | X | X | L'accès au segment de code, le pont d'interruption, le pont de la trappe, le pont de la tâche ou le TSS ne sont pas présent. | |
#SS(Pile) | X | X | X | Une adresse mémoire dépasse la limite du segment de pile ou n'est pas canonique |
#SS(Sélecteur) | X | X | Après un échange de pile, une adresse mémoire dépasse les limites du segment de pile ou est non-canonique. | |
X | X | Après un échange de pile, le registre SS est chargé dans un sélecteur de segment non-nulle et le segment est marqué comme non présent. | ||
#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 |
X | X | X | La destination de déplacement dépasse la limite du segment de code ou n'est pas canonique. | |
X | Le IOPL est inférieur à 3 et le CR4.VME vaut 0. | |||
X | Le IOPL est inférieur à 3, le CR4.VME vaut 1 et le bit correspondant à la redirection de la cartographie d'interruption VME vaut 1. | |||
#GP(Sélecteur) | X | X | X | Le vecteur d'interruption est en dehors des limites du IDT. |
X | X | Le descripteur d'IDT n'est pas une interruption, une trappe ou une tâche de pont dans un mode «legacy» ou n'est pas une interruption 64 bits ou un pont de trappe pour un mode «long». | ||
X | X | Le DPL de l'interruption, de la trappe, du descripteur de pont de tâche est inférieur au CPL. | ||
X | X | Le sélecteur de segment spécifié par l'interruption ou la trappe du pont est un bit TI fixé, mais le sélecteur LDT a un sélecteur nulle. | ||
X | X | Le sélecteur de segment spécifié par l'interruption ou la trappe du pont dépasse la limite de la table de descripteur ou a un sélecteur nulle. | ||
X | X | Le descripteur de segment spécifié par l'interruption ou le pont de la trappe n'est pas un segment de code dans un mode «legacy», ou un segment de code 64 bits dans un mode «long». | ||
X | Le segment de DPL spécifié par l'interruption ou le pont de la trappe est supérieur au CPL. | |||
X | Le segment de DPL spécifié par l'interruption ou le pont ne pointe pas sur 0 ou est dans un segment conforme. | |||
#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
L'exemple suivant permet d'afficher un message «Bonjour» sur la console du système d'exploitation DOS :
On obtiendra le résultat suivant :
Bonjour |
Voir également
Liste des interruptions
Instruction assembleur 80x86 - Instruction INTO
Instruction assembleur 80x86 - Instruction IRET
Références
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 814
Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 405
AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 122 à 128.
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 581 à 595.