Il y a trois types d'interruptions :
Lors de l'appel d'une interruption, le processeur va stopper le code en cours d'éxecution et va sauter sur le code de l'interruption.
En mode réel, les adresses du code à éxecuter lors d'un appel sont placées au tout début de la mémoire ( en 0000:0000 ) dans la table des vecteurs d'interruptions.
Ces vecteurs font 4 octets comme sur le schéma ci-dessous :

L'exemple suivant crée un vecteur vers une routine d'interruption :
Code d'exemple
mov bx,0 ; on met es à 0
mov es,bx ; pour écrire dans le premier segment
mov word [es:21h*4],cs ; segment de code
mov word [es:21h*4+2],int21 ; offset de la fonction
; ...
int 21h ; on apelle l'interruption
; ...
int21:
; code de l'interruption
iret ; pour revenir au code, on utilise iret
Parmis les 255 vecteurs d'interruptions possibles, on ne peut tous les utiliser pour une interruption logicielle. Certains sont réservés pour les interruptions systèmes et d'autres pour les interruptions matérielles.
Ces identifiants (numéros) d'interruption peuvent être changés, comme nous le verrons plus tard quand nous parlerons du mode protégé, via les PIC's ( Programmable Interrupt Controller, à ne pas confondre avec les PIC de microchip© ).
Il y a un PIC maître et un PIC esclave avec chacunes des 8 broches d'entrées. Nous pouvons donc avoir 14 matériels branchés simultanément, 2 broches étant utilisées pour brancher l'esclave au maître.
Les interruptions systèmes, celles qui sont lancées à chaque fois qu'il y a une erreur dans l'éxécution du code, iront, par défaut, de 0 à 0x7. Si on utilise le vecteur de l'interruption 00h comme chargeur de fichier par exemple, à chaque fois qu'on fera une division par zéro, notre code sera lancé.
Le bios configure les PIC's pour utiliser les interruptions de 0x8 à 0XF et de 0x70 à 0x77 pour le matériel.
On évitera aussi d'utiliser les interruptions du BIOS pour y avoir encore accès.
Pour toutes vos questions, allez sur le forum !
Vous pouvez retrouver cet article sur Informatips.