Vous êtes sur la page 1sur 6

1

CHAPITRE 1 :Les interruptions du 8086


1.0 INTRODUCTION
Une interruption est un vnement qui interrompt, lexcution squentielle des
instructions dun programme..
Lors dune interruption, lexcution du programme principal est suspendue.
Linterruption est excute, puis le programme principal est continu.
o Les sauts conditionnels ou inconditionnels ainsi que les appels de
sous-programmes ne sont pas des interruptions.
1.1 TYPES DINTERRUPTION
Il existe 2 catgories dinterruptions: les interruptions matrielles et les
interruptions logicielles.
Les interruptions matrielles surviennent lorsque les lignes NMI ou INTR du 8086
sont actives( un signal dit est mis par un priphrique vers le circuit pic qui a
son tour envoie un signal dinterruption sur la ligne INTR))
. Les interruptions logicielles surviennent lorsque linstruction INT apparat ou lors
dexceptions logicielles (exemples: dbordement de pile (stack overflow), division
par zro).
Toutes les interruptions ont un numro de 0 255d, sauf reset. Certains numros
sont fixs par le matriel, dautres par les concepteurs du 8086 et finalement il en
reste de disponibles pour le programmeur.
A toute interruption il correspond un programme appel traitant de lit ou routine.
Toute routine dit se termine par linstruction IRET dont le rle est de garantir un
retour correct au programme interrompu.
Les routines dits se trouvent dans la mmoire centrale ds le dmarrage de la
machine.






..

INT n
TRAITANT DE
LIT n

.
IRET
2

Les adresses des routines dinterruptions sont sauvegardes dans une table dite table des
vecteurs dinterruptions ou table des its.

1.2 LA TABLE DES VECTEURS DITS
La table des vecteurs dinterruption contient ladresse des programmes
excuter (routines dit) lorsquune interruption survient. Pour chaque
interruption, la table contient 4 octets dinformations( le vecteur dinterruption):
CS et IP. La taille de la table des vecteurs dinterruption est donc 256ints *
4bytes = 1Ko. ;
La table des vecteurs dinterruption commence ladresse 00000h(0 :0h) et
elle finit ladresse 003FFh.
Le vecteur i est associ a linti : exemple :le vecteur 21h est associ a lit 21h.
00000H
Fig : table des interruptions
VECTEUR O : est associ a la division par 0 (it logicielle)
VECTEUR 8 : est associ a lit provenant du TIMER :IT matrielle
VECTEUR 9/ :est associ a lit provenant du CLAVIER : IT matrielle
VECTEUR 21H : est associ a lit 21h .


VECTEUR0




VECTEUR 1

IP poids faible
IP poids fort
CS poids faible
CS poids fort










VECTEUR 255

3

Lorsquune interruption survient, le numro de linterruption permet de
trouver ladresse du vecteur dit qui lui est associ. Le numro de
linterruption est multipli par 4 afin de trouver ladresse du CS et du IP
rechercher (IP est ladresse infrieure, suivi de CS). Puis un JMP
CS:IP est fait. CS:IP est un pointeur vers le code excuter afin de
rpondre linterruption.
Exemple1 : les adresses des vecteurs correspondants aux IT00H, 04h,
21h sont respectivement : 0000h , 0010h, 0084h.
Exemple2: :Si le contenu de la mmoire, partir de ladresse 00000h est
00h, 01h, 02h, 03h, 04h, 05h, 06h, 07h, 08h, etc... et que linterruption 1
survient, alors la routine ladresse 0706:0504 sera excute.
- Reset est la seule interruption sans numro. Pour reset, CS:IP = FFFF :0000H.
1.3 Squence dvnements aprs une interruption
Lors dune interruption logicielle ou matrielle, les vnements suivants se
produisent:
o Trois registres sont mis sur la pile (empils)dans lordre qui suit: le
PSW,, CS actuel, puis IP actuel., on parle de sauvegarde du petit
contexte. Les flags IF et TF sont mis 0 aprs le PUSH du PSW.,Le
processeur va ignorer les interruptions matrielles qui arrivent sur la
ligne INTR tant que le flag if est gal a zro. il ya donc masquage des
its matrielles qui arrivent sur la ligne INTR ;. elles pourront tre
dmasques a tout moment dans la routine dit., Un JMP est excut
ladresse CS:IP trouve dans la table des vecteurs dinterruption
partir du numro de linterruption.
o La routine de service de linterruption (ISR ou Interrupt Service Routine)
est excute . Toute routine dit doit commencer par la sauvegarde du
grand contexte ;elle doit sauvegarder tous les registres quelle modifie ;
et elle doit galement les restaurer avant excution de la dernire
instruction .
o Thoriquement, la dernire instruction de lISR est IRET (Interrupt
return). Un IRET est quivalent trois POP dans cet ordre: IP, CS et
PSW..,on parle de restauration du petit contexte.
Le petit contexte et le grand contexte sont sauvegards dans le segment
pile







INT X

ROUTINE X
Sauvegarde du
grand contexte

.
Restauration du
grand contexte
IRET
4


1.3.1Le segment pile
Le segment pile est caractris par 2 registres SS et SP, il est gr selon
la politique LIFO.
SP=sommet de pile, adresse du dernier lment empil.
2 oprations sont possibles: empiler et dpiler
Empiler : SP := SP-2 ;
[SP] := lment a empiler ; la taille de llment a empiler est toujours gale a
un mot(8086) ; Cette opration est assure par linstruction PUSH op1
EXEMPLE : PUSH AX ;empile le contenu du registre AX
PUSHF : empile le PSW
Dpiler : X= [SP] ; x est la destination
. SP :=SP+2 .cette opration est assure par linstruction POP.op1
EXEMPLES :POP BX .,dpiler dans BX
POPF dpile dans le PSW.

1.3.2 Structure du PSW

x x x x Of df If Tf Sf Zf Af Pf Cf

Le flag if permet de masquer ou dmasquer les its matrielles , la valeur
0 masque les its ,la valeur 1 les dmasque; lorsque les its sont masques
le microprocesseur ignore les its matrielles
STI :positionne le flag IF , CLI annule le flag IF

1.4 Interruptions Logicielles
Les interruptions logicielles sont utilises pour excuter des tches logicielles
ayant priorit sur le programme principal.
Une interruption logicielle sappelle avec linstruction INT # o # est le numro de
linterruption.
Chaque interruption peut avoir des sous-fonctions. Pour spcifier une sous-
fonction, il faut placer dans un registre prdtermin le numro de la sous-
5

fonction voulu avant dappeler linterruption (le registre est souvent AH). La sous-
routine de service de linterruption testera la valeur du registre prdtermin et
aiguillera la sous-routine en consquence.
Voici quelques exemples :
INT 20h Quitte le systme dexploitation.
INT 21h / AH=09h Sortie dune chane de caractres depuis DS :DX.
INT 21h / AH=0Ah Entre dune chane de caractres vers DS :DX, le premier
octet indique la taille du buffer, le deuxime octet indique le nombre de caractres
rellement lus.
INT 21h / AH=4Ch Quitte le systme dexploitation.
INT 21h / AH=01h lit un caractre sur lentre standard, avec cho, le rsultat
est stock dans AL.
INT 21h / AH=02h crit un caractre vers la sortie standard, DL = le caractre
crire, aprs excution, AL = DL.
1.5 Interruptions Internes (Exceptions)
Les interruptions internes sont des interruptions qui peuvent se produire sans que
linstruction INT soit prsente. Il sagit dexceptions qui surviennent quand un
vnement logiciel spcial arrive (division par zro par exemple)
Linterruption 0 survient lorsque le diviseur de DIV ou IDIV est 0.
Linterruption 4 survient lorsque le drapeau Overflow est 1 et que linstruction
INTO est excute.
1.6 Interruptions matrielles
-Une interruption matrielle correspond a un signal mis par un priphrique vers
Un circuit interface (PIC) , le PIC va slectionner la demande la plus prioritaire et
envoie aprs cela un signal sur la ligne INTR, si IF=1 le p accepte la demande
par lactivation de la ligne INTA , aprs cela le PIC envoie le numro N du vecteur
dIT a travers le bus de donnes.
o Psw est sauvegard.
o IF et TF sont remis a 0
o Sauvegarde de cs et ip.
o Chargement de CS et IP a partir de la table des ITS
o Excution de la routine dIT ;IRET provoque le retour au programme
interrompu .
-La ligne RESET cre un reset du CPU si elle est HIGH pendant au moins 4 cycles
dhorloge, elle permet de redmarrer lordinateur.
-La ligne NMI (Non Maskable Interrupt) dclenche linterruption 2 lorsquelle passe
de LOW HIGH. Linterruption NMI nest pas dsactive lorsque IF est 0,
contrairement aux interruptions sur INTR, do son nom.
6

La ligne INTR sert toutes les autres interruptions matrielles du 8086. Une
interruption se produit lorsque la ligne est Vcc.
Les interruptions matrielles seront revues en dtail dans le chapitre 3

Vous aimerez peut-être aussi