je n'ai pas trouvé de lien direct qui pourraient t'intéresser, il y a déja ce cours d'architecture(intéresse toi surtout a la partie concernant les interruption matrérielles et logicielles)
http://kiwi.emse.fr/JJG/ASI/ASI99-6.PPT
a la base il faut utiliser l'assembleur, mais le C permet de travailler sur les registres...
La suite je te sort ca de tête, si je récupère mes cours d'archi je te donneré plus de détails:
C'est dans <dos.h> , tu a les structures REGS et SREGS
#include <dos.h>
union REGS r;
r.h.ah=0x07
r.h.dx=0xFFFF;
int86(0x21, &r, &r);
c'est un exemple bidon certainement truffé d'erreurs.
En gros dans ce cas, tu mets 07h dans le registre ah, puis 0FFFFh dans dx, puis on apelle l'exécution de la fonction spécifiée dans ah(ici 07h) de l'interruption 21h.
pour utiliser SREGS, c'est pareil sauf qu'il faut utiliser int86x() à la place.
sinon je te cite pèle mèle setvect(), getvect() pour les vecteurs d'interruption (des unsigned char je crois)
void interrupt nom_du_sous_programme_d_interruption()
{}
pour créer un sous programme d'interruption(qui s'exécute quand le systeme capture un IRQ.
Un programme dois toujours faire cela:
on sauve l'ancien vecteur(getvect),on défini le nouveau, puis lorsque le programme est fini, on restaure la derniere interruption.
J'arrete mes explications(mais je les efface pas , ca peux toujours servir...)car je viens de trouver ce lien très interressant et qui réponds certainement a toutes tes questions:
http://www.tsi.enst.fr/~blanchet/livres/MSDOS_PC.pdf
Pour des exemples plus concret je viens de trouver également
http://www-gtr.iutv.univ-paris13.f [...] hitecture/
tout y est expliqué.