Académique Documents
Professionnel Documents
Culture Documents
Objectives
Les objectifs de ce chapitre sont:
C’est un avènement extérieure qui informe la CPU qu’un circuit externe (DMA, E/S, …) a besoin de
son service.
Le P8088/86 est muni d’un total de 256 interruptions: INT 00, … INT FF, appelés parfois TYPEs.
INT N Addresse
Logique
INT 00 0000:0000
Quand une interruption est exécutée, le P automatiquement sauvegarde
INT 01 0000:0004
Dans la pile les registres FR, IP, et CS, et se dirigera vers une location INT 02 0000:0008
Mémoire dont l’adresse physique est : 00004 x NN, NN étant le numéro INT NN 0000:[00NNx4]
de
INT FF 0000:03FC
l’interruption [NN = 0 FF].
INT NN est une instruction à 2 octets (Opcode + Nombre). Il existe 256 INTs (Software + Hardware)
Quand NMI est activée (haut), CPU 4. Chercher CS:IP pour exécuter l’ISR associé
location mémoire 00008 pour obtenir 5. A la fin d’ISR l’instruction IRET CPU à POPer
CS:IP (00008:0000B) de la ISR associé à NMI. de la pile FR CS, IP.
6. CPU continue son programme normalement.
Avec INTR plusieurs types sont associés
(INT NN), via PIC8259.
Quelques INT NN sont prédéfinies comme INT00 (/0), 01(Trace), 03(Point d’arrêt), et 04
(dépassement).
Les autres (05FF) sont utilisés pour implémenter des interruptions Software et Hardware.
Interruptions et le registre FR 15 11 9 8 0
OF IF TF
INT 01 (Single-Stepping) 1. TF du FR 1
2. CPU CS:IP = 00004 pour chercher l’adresse de ISR associé
(DUMPer le contenu des registres sur l’écran)
INT 02 (NMI) Si le Pin NMI est ‘1’ CPU CS:IP = 00008 ISR associée
INT 03 (BreakPoint) Comme INT 01 mais arrêt après un bloc d’instructions Debuguage
8 x 4 = 20H
VCC GND
A0 IR7
CS 1 28 VCC
IR6
WR 2 A0
IR5
RD INTA D7 .. D0
IR4
D7 IR7
IR6 IR3
D6
8259A
IR2
D5
D4 PIC IR5
IR4
IR3
P
WR
RD
IR1
IR0
D3
D2
D1
8259A IR2
IR1 I/F INTA
D0 IR0 INT
CAS 0 INT CAS 0, 1, 2
CAS 1 SP/EN (I/F Cascade)
14 15 CAS 2 CS
GND
SP/EN
IR0-IR7: Interruptions Hardware. Si ‘1’, le P8088/86 saute vers la location de l’interruption correspondante.
Pour chaque IR existe une adresse physique correspondante dans la Table des vecteurs d’Interruptions
R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs
10/ 21
D6 ...... CS A0 Initialisation
A0 D7 D2 D1 D0
0 0 0 0 1 LTIM 0 SNGL ICW4 0 0 ICW1
0 1 ICW2, ICW3, ICW4
ICW1
1 x 8259 non sélectionné
NOTE:
‘1’ pas besoin
Toujours ‘1’ pour de ICW4 Si A7-A1 = 0010011 permettent de sélectionner
ICW1 ( différencier PIC8259 les adresses de ICW1, 2, 3, 4 sont:
de OCW2)
‘0’ mode Cascade 26H ICW1 et
Pour les P80x86 ‘1’ Trig Niveau (IRx)
Sinon PIC est seul 27H ICW2, 3, 4
Sinon Trig Edge
ICW2
IR X (X = 000 111)
INT NN
11/ 21
ICW1 000 1 1 0 1 1 1BH (Besoin du ICW4, PIC Seul, 0 pour x86, IRx Trig Niveau, 1, 000 pour x86)
ICW2 01010 000 50H (000 IR0, 0101 0000 INT 50H)
ICW3 Pas Besoin, un seul PIC est utilisé
ICW4 0000 1001 09H (P8088/86, Normal EOI avant IRET, Mode Buffer Esclave, Non Imbriqué, 000 )
Note:
Si INT 50H est assigné à IR0
IR1IR7 INT 51H INT 57H
Adresses Logiques (des IR0:IR7): 0000:0140H 0000:015C (4 Octets chacune)
R. Beguenane, UQAC, 2002/2003 Systèmes à microprocesseurs
13/21
Priorité des Interruptions Si plusieurs IRx (X=07) sont activées rôle du OCW
(Opération Command Word)
CS A0 Initialisation
Après Initialisation (avec ICW1, ICW2, ICW4), le P8088/86 est prêt
0 0 OCW2, OCW3
pour recevoir des interruptions, via les pins IRx du PIC8259.
0 1 OCW1
Ensuite OCW est envoyée pour masquer n’importe quel IRx, 1 x 8259 non sélectionné
ou bien changer la priorité assignée à chacun des IRx (7 NOTE:
0).
Il est à noter l’existence de 3 registres dans le PIC8259 Si A7-A1 = 0010011 permettent de sélectionner
PIC8259 les adresses de OCW1, 2, 3 sont:
ISR, IRR, et IMR
26H OCW2 et OCW3
27H OCW1
Logique de Contrôle
Bus Interne
R S
E
L
Exemple: Si ‘011’ Niveau des Priorités: IR3, IR4, IR5, IR6, IR7, IR0, IR1, IR2
0
L
O 0 0
2
L L
(A noter que: Dans IBM PCs 00100000B est
I 1 0
le contenu par défaut de OCW2)
OCW2
XXX Fonction
001 Commande EOI non Suivre un ordre de priorités des IRx par défaut: IR0 IR7
spécifique
010 /
Après chaque programme ISR (Interrupt Service Routine), et avant l’instruction IRET, il convient d’insérer:
MOV AL, 20H ; EOI de OCW2 (A noter que: 00100000B est le contenu par défaut de OCW2)
OUT 26H, AL ; vers le port désigné pour OCW2
Pourquoi?
1. Assumant que PIC8259 est initialisé à sa configuration par défaut: IR0 IR7 (Fully Nested Mode)
2. IR3 activée et la CPU répond par INTA et va vers la table des vecteurs d’interruptions et ISRIR3
3. Une fois INTA reçue, PIC8259 met à ‘1’ le bit associé à IR3 dans le registre ISR (In-Service
Register) pour indiquer que IR3 est en service.
4. L’instruction EOI (MOV AL, 20H et OUT 26H, AL) permet de RESETer à ‘0’ le bit associé à IR3 dans
le registre ISR, pour permettre à IR3 de revenir la prochaine fois.
5. Sinon pour le PIC l’IR3 est en train de s’exécuter, et la CPU en allant au programme principal,
après le IRET de ISRIR3, ne peut servir à nouveau IR3 car le bit associé à IR3 dans
le registre ISR est toujours ‘1’.
6. Par conséquent les autres IRx de moindre priorités (IR4 IR7) seront empêchées d’être servis
également. Mais les IR2 IR0 seront servis, puisque prioritaires, pendant que IR3 est faussement
servis.
A0 D7 D6 ...... D2 D1 D0
ES S
0 0 1 P RR RIS
0 M M
M M
OCW3
’11’ Lire ISR
’01’ Lire IRR
’00’ et ’10’ Pas d’action
A noter que OCW1 lire IMR
17/ 21
P8088 IBM PC/XT utilise un PIC8259 pour étendre les interruptions hardware vers 8, alors que
ceux munis de P80286- IBM PC/AT en utilise 2 pour étendre les interruptions hardware vers
15.
AEN A9 A8 A7 A6 A5 A4 …A1 A0 HEX Fonction
D0
1 0 0 0 0 1 X XXX0 20 Adresse du Port de ICW1 D7
D7 … D0
0 0 0 0 A0 A0
8259A
1 0 0 0 0 1 0 0 0 00 20 Port Adresse de OCW2, 3 A5 A
A6 B Y0
Y1 CS
1 0 0 0 0 1 0 0 0 01 21 Port Adresse de OCW1 A7 C
LS138 Y2
A8 G2A Y3 RD WR
Y4
Adresse des Ports ICWs et OCWs A9 G2B Y5
Y6
AEN G1 Y7
C’est la fonction de ICW2 d’informer 8259 à quelles INT?? Correspondent les IRQ0 IRQ7
Autrement ICW2 est le numéro d’interruption INT pour IR0 qui dans le cas d’IBM PC/XT est INT08.
ICW1 000 1 0 0 1 1 13H (Besoin du ICW4, PIC Seul, 0 pour x86, IRx Trig Edge, 1, 000 pour x86) MOV AL, 13H ; ICW1
OUT 20H, AL ; ICW1
ICW2 00001 000 08H, … (INT 08H IRQ0, INT 09H IRQ1, … INT 0FH IRQ7) MOV AL, 8 ; INT08
OUT 21H, AL ; ICW2
ICW3 Pas Besoin, un seul PIC est utilisé (plusieurs PICs en mode Esclave/Maître seulement pour 80x86)
MOV AL, 9 ; ICW4
ICW4 0000 1001 09H (P8088/86, Normal EOI avant IRET, Mode Buffer Esclave, Non Imbriqué, 000 ) OUT 21H, AL
18/ 21
IOB 1 20 VCC
INTA:force 8259 à poser D0D7
CLK 2 S0
(dépend de ICW2: INT NN) sur le bus
VCC CS S1 S2
28 1 de données (pour être Latché)
A0 2 WR DT/R MCE/PDEN
GND 1 40 VCCALE
INTA RD
AD14 2 39 AD15
8288 DEN
IR7 D7 AEN CEN
IR6 D6 AD13 A16/S3
MRDC INTA
IR5
IR4
IR3
PIC D5
D4
AD12
AD11
A17/S4
AMWC
A18/S5
MWTC 9 12
IORC
D3 AD10 AIOWC
IR2
IR1
8259A D2
D1
AD9
A19/S6
GND
BHE/S7
10 11 IOWC
IR0 AD8 MX
D0
INT CAS 0 AD7 RD
SP/EN CAS 1 AD6 RQ/GT0
CAS 2 15 14 GND AD5 RQ/GT1
AD4 LOCK
AD3 S2
Circuit PIC 8259 AD2
AD1
CPU S1
S0
AD0
NMI 8086 QS0
QS1
P8088/86 FR (Pile),
INTR (16-BITS Int.) TEST
CLK 19 22 READY clear IF (Désactive
GND 20 21 RESET d’autres requête INTs), et
CS, IP actuels (Pile).
Cet octet sera décodé (INT NN x4) pour calculer P8088/86 lit CS:IP de lSRoutine à partir
le vecteur d’interruption correspondant. de la table des vecteurs d’INTs, pour l’exécuter
19/ 21
Sources des Interruptions Hardware IBM PC/XT possède, via PIC8259, 8 interruptions
hardware IR0IR7, en plus de NMI du P8088/86.
IR0:R7
62-Slot Expansion
INT 0B IRQ3 Port Série COM2)
INT 0C IRQ4 Port Série COM1
INT 0D IRQ5 Port Parallèle LPT2
INT 0E IRQ6 Controleur Lecteur Disquette
INT 0F IRQ7 Port Parallèle Imprimante LPT1
NMI Pas besoin de INTA et ne peut être masquée (CLI) contrairement à INTR (IR0:IR7)
20/ 21
Section 9.4: Les interruptions avec les
P80x86-PCs
28 28
INTA INTA
IR15 IR7
IR14 IR6
IR13
IR12
IR11
PIC IR5
IR4 PIC INTA
P
IR3
8259
IR2
IR10
IR9
INT
IR1
8259 INT INT
80x86
IR8 Esclave IR0 Maitre (IBM PC/AT)
CAS 0 CAS 0
CAS 1 CAS 1
‘0’ SP/EN CAS 2 ‘1’ SP/EN CAS 2 NMI
MOV AL, 11H ; ICW1, Edge, ICW4 MOV AL, 11H ; ICW1, Edge, ICW4
OUT A0H, AL ; Port adresse ICW1 OUT 20H, AL ; Port adresse ICW1
MOV AL, 70H ; ICW2, INT type 70 (70-77) MOV AL, 8 ; ICW2, INT type 8 (8-F)
OUT A1H, AL ; Port adresse ICW2 OUT 21H, AL ; Port adresse ICW2
MOV AL, 02H ; ICW3, Esclave niveau 2 MOV AL, 04H ; ICW3, Maître niveau 2
OUT A1H, AL ; Port adresse ICW3 OUT 21H, AL ; Port adresse ICW3
MOV AL, 01H ; ICW4, NonBuffer, Mode x86 MOV AL, 01H ; ICW4, NonBuffer, Mode x86
OUT A1H, AL ; Port adresse ICW4 OUT 21H, AL ; Port adresse ICW4
21/ 21
62-Slot Expansion
INT 0B IRQ3 Port Série COM2)
1 Instruction INT (Exception)
INT 0C IRQ4 Port Série COM1
2 Single-Step (Debuggage)
INT 0D IRQ5 Port Parallèle LPT2
3 NMI
INT 0E IRQ6 Contrôleur Lecteur Disquette
4 Dépassement
INT 0F IRQ7 Port Parallèle Imprimante LPT1
5 INTR
IRQ0
INT 70 IRQ8 CMOS Horloge
IRQ1
INT 71 IRQ9 Re-direction SW vers INT10 (IRQ2) IRQ8
INT 72 IRQ10 Valable Utilisateur IRQ9
36-Slot Expansion
INT 73 IRQ11 Valable Utilisateur .
.
INT 74 IRQ12 Souris (PS/2)
.
INT 75 IRQ13 Co-Proc Math IRQ15
INT 76 IRQ14 Contrôleur Disque Dur IRQ3
INT 77 IRQ15 Valable Utilisateur IRQ4
.
.
.
IRQ7