Section courante

A propos

Section administrative du site

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

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 :

  1. Message DB 'Bonjour$' 
  2. ; Place des instructions ici
  3. MOV AH,09h
  4. MOV DX,Offset Message 
  5. INT 21h

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.

Dernière mise à jour : Vendredi, le 5 septembre 2014