
FAQ AssembleurConsultez toutes les FAQ
Nombre d'auteurs : 8, nombre de questions : 50, dernière mise à jour : 29 avril 2007
Sommaire→F.A.Q. Assembleur x86→Interruptions
La première étape consiste a écrire le code de l'interruption lui même.
Il est identique a celui de l'écriture d'une procédure "normale" si ce n'est qu'il se termine par une instruction iret au lieu de ret.
Par exemple, on va créer une interruption FDh :
IntFD:
[...]
iret
La seconde étape consiste à initialiser le vecteur d'interruption de manière à pointer la zone mémoire qui contient le programme a éxécuter.
Chaque vecteur occupe 4 octets a partir de l'adresse 0000:0000 et qui indiquent la zone de la mémoire où se trouve le code de l'interruption.
C'est donc cet espace qu'il faut mettre a jour.
Exemple :
Init_IntFD:
push ax
push es
xor ax,ax
mov es,ax; Es <--- 0
mov word[es:0FDh*4],IntFD; Initialisation du vecteur
mov word[es:0FDh*4+2],cs; de l'interruption
pop es
pop ax
ret
C'est terminé ! Il ne reste plus qu'a déclencher l'interruption :
int 0FDh
Pour programmer sur un système x86, il est indispensable d'avoir une table des interruptions sous la main... On peut en trouver de nombreuses plus ou moins complètes sur le Web... Celle de Ralf BROWN est très complète. Vous la trouverez en consultation en ligne ici : http://www.ctyme.com/rbrown.htm Ou si vous préférez tout télécharger, rendez-vous ici : http://www-2.cs.cmu.edu/afs/cs/user/ralf/pub/WWW/files.html



