Accueil des Chevaliers de Malte - Développeur Notes légal des Chevaliers de Malte/Développeur Flux RSS des nouvelles du site Les Chevaliers de Malte/Développeur - Assembleur et Pascal - Interruption 00h à 07h - Les interruptions processeur Section du logiciel DOS «MonsterBook» des Chevaliers de Malte/Développeur Inventaire de la bibliothèque des Chevaliers de Malte/Développeur Entrée administrateur

00h à 07h 08h à 0Fh 10h 11h 12h 13h 14h 15h 16h 17h 18h 19h 1Ah 1Bh 1Ch 1Dh 1Eh 1Fh 20h 21h 22h 23h 24h 25h 26h 27h 28h 29h 2Ah 2Bh 2Eh 2Fh 33h 41h 4Bh 59h 5Ch 67h 7Ah 80h à F0h Rechercher

Table des matières



Ces interruptions sont utilisées par le micro-processeur lorsqu'une opération irrégulière survient. On entend par ce terme, les opérations suivantes: division par zéro, déboguage pas à pas, erreur mémoire (NMI), débordement, instruction inconnu, émulation coprocesseur,... Ces interruptions ne devrait pas être appeler directement, car le processeur devrait être même de l'appeler au moment opportun.

Procedure Int00h(Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:Word);Begin 
  If Mem[CS:IP]shr 4=$FThen Begin 
   If Mem[CS:IP+1]in[$70..$77]Then Inc(IP)Else 
   If Mem[CS:IP+1]in[$36,$3E,$B0..$B7]Then Inc(IP,2);
   Inc(IP,2);AX:=0
  End 
   Else 

  Halt(200)
 End;


  • Interruption 01h: Pas à pas: Cette interruption est appelée après chaque interruptions si le drapeau TRAP est fixé à 1. Dans le cas ou il est 0 il ne sera donc jamais appelé. Cette interruption à pour but de suivre instruction par instruction un programme comme le fait par exemple DEBUG, TURBO DEBUG, SoftICE, CodeView,...

  • Pour ceux voulant protéger leurs programmes contre le piratage, la première précaution à prendre est d'empêcher que le programme puisse être exécuté sous le contrôle de DEBUG. Pour cela, il faudra corrompre la bonne exécution des interruptions 01h et 03h. Dans ce but, la meilleure opération consiste à installer 2 routines très fréquemment utilisées à la place de ces interruptions. Le programme exécutera donc des instructions INT 1 ou INT 3 à la place d'un CALL classique pour appeler ces routines. Ce système empêchera toute utilisation du programme avec DEBUG.

    Voici un exemple d'un commencement de programme débuguage écrit en langage Pascal afin que vous compreniez comment il procède:

Procedure Int01h(Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:Word); Interrupt;Begin
 Write('Breakpoint:',CS,':',IP);
 Case Mem[CS:IP] of 
  $98: WriteLn('CBW');
  { ... }
 End;
End
  • Interruption 02h: Erreur mémoire: Cette interruption est appelée lorsqu'une erreur dans le circuit de mémoire électronique à lieu, il n'est pas masquable et ne peut donc pas être empêcher du la gravité de l'erreur.

  • Même l'instruction assembleur CLI empêchant toute interruption ne bloquera pas sont exécution étant donné la gravité de la situation.

    Le point d'entrée de cette interruption sur les Bios 386 d'American Megatrend 1985-1990 est F000h:E98Ah.

  • Interruption 03h: Point d'arrêt: Cette interruption est un peu particulière, elle ne prend qu'un octet de code machine, le code est 0CCh. En peut le mettre dans un programme dans le but de passer en mode point d'arrêt (BreakPoint) lorsqu'elle est rencontrée. Elle est utilisée dans des programmes ou processus de déboguage.

    Interruption 04h: Débordement: Cette interruption est utilisé lorsqu'il y a un débordement d'opération d'addition, soustraction,... Cette interruption n'est appeler que si le drapeau de débordement du microprocesseur (Overflow - OF) est fixé à 1 et qu'une instruction INTO est rencontrée. C'est naturellement une instruction intéressant d'avantage les concepteurs de compilateur que les programmeurs d'assembleur...

    Interruption 05h: Impression de l'écran: Cette interruption est sans celle ayant le plus une apparence de hors contexte parmi la liste des interruptions du processeurs. En effet, elle est appeler lorsque vous enfoncé la touche «PrintScreen» par l'intermédiaire de l'interruption 09h (IRQ1) et donc si les instructions n'était pas écrit dans le BIOS ou le système d'exploitation, le processeur ne l'appellerait jamais! Il s'agit donc d'un service indépendant du microprocesseur n'ayant rien à voir avec ceux de cette liste.

    Valeur Description
    0 Il n'y a pas d'impression de l'écran actuellement en cours ou le dernier appel à ce processus c'est bien déroulé!
    1 Il y a pas d'impression de l'écran actuel en cours.
    255 (0FFh) Il y a eu malheureusement une erreur lors du dernier impression de l'écran.

    Interruption 06h: Instruction invalide: Cette interruption n'a obtenu une fonctionnalité qu'à partir, hélas d'un 80286, ainsi il aurait été de bonne augure de l'avoir dès les 8088 afin d'émuler de façon logiciel les futurs instructions des microprocesseur. Vous l'avez devinez, cette interruption est appelé chaque fois qu'une instruction non reconnu par le micro-processeur est rencontrée, disponible qu'avec le 80286, elle permet a un programme de lancer un processus d'urgence lorsqu'une instruction inconnu dans son programme est rencontré. A l'autre extrême, le programmeur pourra se lancer tenter d'émuler certaine instruction non reconnue par les concurrents d'INTEL, comme par exemple, l'instruction SETALC, instruction offrant la possibilité de transférer le contenu de drapeau de retenu directement dans le registre processeur AL sans être obliger de faire deux instructions compliquer: «MOV AL,0; ADC AL,0». Ce genre de possibilité est très sous-estimer par la plupart des programmes et cette interruption permettrait pourtant de mieux résoudre ce genre de situation.

    Interruption 07h: Instruction coprocesseur: Cette interruption, un peu l'image de la précédente vise combler une situation de manque. Ainsi lorsque vous n'avez pas de coprocesseur d'inclus sur votre ordinateur et qu'une instruction de coprocesseur est rencontré, cette interruption est appelé. Il s'agira donc d'une alternative pour émuler les coprocesseurs même si la machine n'en possède pas. Le seul inconvénient de cette interruption c'est qu'elle n'est appelé qu'à partir du 80286, ainsi votre émulateur ne pourra être disponible qu'avec les processeurs 80286, 80386 et 80486! Très court longévité pour une mécanisme fort essentiel afin d'offrir un maximum de possibilité à une machine... Bravo INTEL, encore une fois t'a manquer ton propre bateau!


Références

Aide-mémoire des interruptions du MS-DOS, Edition Marabout, Philippe Mercier, 1990, ISBN: 2-501-01297-6, page 19 à 24.

Dernière mise à jour: Samedi, le 28 janvier 2006