Vous êtes sur la page 1sur 206

Cours: Généralités sur les

microprocesseurs et les interfaces


Cycle INE1
2011 - 2012

Jamal KHALLAAYOUNE - INPT


Calendrier prévu du cours µP & µC année 2011-12
Groupe: ABCD

Date Heure Heure Prévision


Lundi 21 Novembre 2011 8h15-9h30 9h45-11h Généralités sur les microprocesseurs
Mardi 22 Novembre 2011 14h15-15h30 15h45-17h Généralités sur les microprocesseurs & µP 8086
Mercredi 23 Novembre 2011 14h15-15h30 15h45-17h Généralité µC & ST7 & Modes d’adressages
Vendredi 25 Novembre 2011 8h15-9h30 9h45-11h Modes d’adressages & TD & Jeu d’Instructions
Jeudi 01 Décembre 2011 8h15-3h30 9h45-11h Interrupt Externes & Port E/S & TD
Jeudi 08 Décembre 2011 8h15-9h30 9h45-11h TD (Transcodeur&Grafcet&Interrup) & Convertisseur A/N & TD
Jeudi 15 Décembre 2011 8h15-9h30 9h45-11h 1ère SPI, 2ème: TD & MAX7219
Jeudi 22 Décembre 2011 8h15-9h30 9h45-11h WatchDog & Lite TIMER & TD AutoReload TIMER
Jeudi 29 Décembre 2011 8h15-9h30 9h45-11h TD (Robotique)
Jeudi 05 Janvier 2012 8h15-9h30 9h45-11h Présentation de Proteus-ISIS

TP & Date Heure


TP1 : 28/11(GB), 29/11(GY), 30/11(GA) et 02/12(GX) (année: 2011) 14h15 – 17h00
TP1 : 05/12(GD), 06/12(GZ), 07/12(GC) et 09/12(GW) (année 2011) 14h15 – 17h00
TP2 : 12/11(GB), 13/11(GY), 14/11(GA) et 16/12(GX) (année: 2011) 14h15 – 17h00
TP2 : 19/12(GD), 20/12(GZ), 21/12(GC) et 23/12(GW) (année 2011) 14h15 – 17h00
TP3 : 26/11(GB), 27/11(GY), 28/11(GA) et 30/12(GX) (année: 2011) 14h15 – 17h00
TP3 : 02/01(GD), 03/01(GZ), 04/01(GC) et 06/01(GW) (année 2012) 14h15 – 17h00

27/11/2011 Jamal KHALLAAYOUNE (INPT) - Cours µC ST7 2


Calendrier prévu du cours µP & µC année 2011-12
Groupe: XYZW

Date Heure Heure Prévision


Lundi 21 Novembre 2011 14h15-15h30 15h45-17h Généralités sur les microprocesseurs
Mardi 22 Novembre 2011 8h15-9h30 9h45-11h Généralités sur les microprocesseurs & µP 8086
Mercredi 23 Novembre 2011 11h15-12h30 Généralité µC & ST7 & Modes d’adressages
Jeudi 24 Novembre 2011 11h15-12h30 Généralité µC & ST7 & Modes d’adressages
Vendredi 25 Novembre 2011 14h15-15h30 15h45-17h Modes d’adressages & TD & Jeu d’Instructions
Mercredi 30 Novembre 2011 8h15-3h30 9h45-11h Interrupt Externes & Port E/S & TD
Mercredi 07 Décembre 2011 8h15-9h30 9h45-11h TD (Transcodeur&Grafcet&Interrup) & Convertisseur A/N & TD
Mercredi 14 Décembre 2011 8h15-9h30 9h45-11h 1ère SPI, 2ème: TD & MAX7219
Mercredi 21 Décembre 2011 8h15-9h30 9h45-11h WatchDog & Lite TIMER & TD AutoReload TIMER
Mercredi 28 Décembre 2011 8h15-9h30 9h45-11h TD (Robotique)
Mercredi 04 Janvier 2012 8h15-9h30 9h45-11h Présentation de Proteus-ISIS

TP & Date Heure


TP1 : 28/11(GB), 29/11(GY), 30/11(GA) et 02/12(GX) (année: 2011) 14h15 – 17h00
TP1 : 05/12(GD), 06/12(GZ), 07/12(GC) et 09/12(GW) (année 2011) 14h15 – 17h00
TP2 : 12/11(GB), 13/11(GY), 14/11(GA) et 16/12(GX) (année: 2011) 14h15 – 17h00
TP2 : 19/12(GD), 20/12(GZ), 21/12(GC) et 23/12(GW) (année 2011) 14h15 – 17h00
TP3 : 26/11(GB), 27/11(GY), 28/11(GA) et 30/12(GX) (année: 2011) 14h15 – 17h00
TP3 : 02/01(GD), 03/01(GZ), 04/01(GC) et 06/01(GW) (année 2012) 14h15 – 17h00
27/11/2011 Jamal KHALLAAYOUNE (INPT) - Cours µC ST7 3
NUMERATION
• Algèbre de Boole
• Format des nombres
• Représentation binaire des nombres non signés (unsigned)
• Représentation binaire des nombres signés (signed)
• Représentation binaire des nombres en complément à 2
• Opérations arithmétiques
• Représentation binaires des nombres fractionnaires en
virgule fixe
• Représentation binaires des nombres fractionnaires en
virgule flottante
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 4
Algèbre de Boole

• Fonctions de base
– Fonctions à 1 entrée
• F1 IDENTITE
A F1 F2
• F2 INVERSION 0 0 1
1 1 0
– Fonctions à 2 entrées
• F1 ET (AND)
• F2 OU (OR) A B F1 F2 F3 F4 F5 F6
• F3 NON ET (NAND) 0 0 0 0 1 1 0 1
0 1 0 1 1 0 1 0
• F4 NON OU (NOR)
1 0 0 1 1 0 1 0
• F5 OU EXCLUSIF (XOR) 1 1 1 1 0 0 0 1
• F6 EQUIVALENCE (XNOR)

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 5


Algèbre de Boole
• Fonction logique sur plusieurs bits:
Soit A = 10010011 et B = 01111010
Le OR Logique peut s’exprimer par le symbole ‘+’ et représente une addition logique :
X = A + B  X7 = A7 OR B7, X6 = A6 OR B6, …., X0 = A0 OR B0
 X = 11111011

Le AND Logique peut s’exprimer par le symbole ‘.’ et représente une multiplication
logique :
X = A . B  X7 = A7 AND B7, X6 = A6 AND B6, …., X0 = A0 AND B0
 X = 00010010

Le XOR Logique peut s’exprimer par le symbole ‘’:


X = A  B  X7 = A7 XOR B7, X6 = A6 XOR B6, …., X0 = A0 XOR B0
 X = 11101001

Le NON Logique :
X = NON(A) = A  X7 = NON(A7), X6 = NON(A6), …., X0 = NON(A0)
 X = 01101100
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 6
Formats des nombres

– Décimal: suite de chiffre 0, 1, 2, … 9


Exemple: 2010
– Binaire: suite de chiffre 0 et 1
Exemple: 011111011010b représente le nombre décimal 2010
– Hexadécimal: suite de chiffre 0,1,2,…9 et des lettres A, B, C, D, E et F
Exemple: 7DAh représente le nombre décimal 2010
Décimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Binaire 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

Hexadécimal 0 1 2 3 4 5 6 7 8 9 A B C D E F

– BCD (Binary Coded Decimal ou Décimal Codé en Binaire): suite de


chiffre 0, 1, 2, …9
Exemple: 0010000000010000b ou 2010h

2 0 1 0
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 7
Représentation binaire des nombres non signés (unsigned)
Exemple: Représentation Non Signés sur 8 bits
00h 0
FFh 01h 02h
FEh 254 255 1 2

Positif Positif Positif Positif

82h
81h 7Fh
7Eh 130
129 127 126
80h 128

Hexadécimal Décimal
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 8
Représentation binaire des nombres non signés (unsigned)

Format Binaire Hexadécimal Décimal

8 bits 11111111 - 0000000000 FFh – 00h 255 - 0

9 bits 111111111 - 00000000000 1FFh – 000h 511 - 0

16 bits 1111111111111111-0000000000000000 FFFFh – 0000h 65535 - 0

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 9


Représentation binaire des nombres signés

Exemple: Représentation sur 3 bits

Entiers relatifs Binaire décalé Signe, valeur absolue Complément à 1 Complément à 2


+3 111 011 011 011
+2 110 010 010 010
+1 101 001 001 001
0 000 000
0 100 100 111 000
-1 011 101 110 111
-2 010 110 101 110
-3 001 111 100 101
-4 000 100

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 10


Représentation des nombres signés en Complément à 2

Exemple: Représentation sur 8 bits


Entier Complément à 2 Entier Complément à 2
Positif en 8 bits signé Négatif en 8 bits signé
0 0000 0000
1 0000 0001 -1 1111 1111
2 0000 0010 -2 1111 1110
3 0000 0011 -3 1111 1101
4 0000 0100 -4 1111 1100
… … … …
… … … …
… … … …
… … … …
126 0111 1110 -126 1000 0010
127 0111 1111 -127 1000 0001
-128 1000 0000
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 11
Représentation des nombres signés en Complément à 2

Exemple: Représentation sur 8 bits


00h 0
FFh 01h 02h
FEh -2 -1 1 2

Négatif Positif Négatif Positif

82h 7Eh -126 126


81h 7Fh -127 127
80h -128
Attention à
Hexadécimal Décimal ce passage
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 12
Représentation des nombres signés en Complément à 2

• Conversion Binaire Signée en Décimal:


Soit le nombre binaire (B)2 = bn-1bn-2bn-3……b2b1b0 avec Signe = bn-1

 (B)10= -bn-12n-1 + bn-22n-2 + bn-32n-3 + …+ b222 + b121 + b020

• Représentation en Complément à 2 des Nombres Signés sur 8 bits:


La valeur 81h = 1000 0001b = -27 + 20 représente –127 en décimal

• Représentation en Complément à 2 des Nombres Signés sur 9 bits:


La valeur 81h = 0 1000 0001b = -0*28 + 27 + 20 représente +128

• Représentation en Complément à 2 des Nombres Signés sur 16 bits:


Max = 7FFFh = 215-1 = 32767
Min = 8000h = -215 = -32768

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 13


Opérations Arithmétiques en Binaire

• Addition arithmétique:
A = 10010011
+
B = 01111010
X = 100001101

• Soustraction arithmétique:
A = 10010011
-
B = 01111010
X = 00011001

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 14


Opérations Arithmétiques en Binaire
• Multiplication arithmétique:
A = 10010011
*
B = 01111010
X = 100011000001110

• Multiplication par 2: Equivalent à un décalage d’un bit vers la gauche


A = 10010011
*
B= 10
X = 100100110

• Division par 2: Equivalent à un décalage d’un bit vers la droite


A = 10010011

B= 10
X = 01001001
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 15
Opérations Arithmétiques en Binaire

Soient C, H, N, Ov, P, Z des indicateurs de l’état d’une opération arithmétique:

 C (Carry ou Retenue): bit de sauvegarde lorsque le résultat déborde d’un bit


 H (Half Carry ou Demi Retenue ): Retenue de la partie LSB sur 4 bits
 N (Négation): bit de signe du résultat, il représente le dernier bit MSB
 Ov (Overflow ou Dépassement): Résultat dépasse la capacité de représentation
 P (Parité): bit de parité du nombre de bit à 1 du résultat
 Z (Zéro): indique que le résultat est nul

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 16


Opérations Arithmétiques en Binaire

Décimal Hexadécimal Binaire


A: -96 A0h 1010 0000b
+ + +
B: 79 4Fh 0100 1111b

S= -17 EFh 1110 1111b

C H N Ov P Z
0 0 1 0 1 0

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 17


Opérations Arithmétiques en Binaire

Décimal Hexadécimal Binaire


A: -95 A1h 1010 0001b
+ + +
B: 127 7Fh 0111 1111b

S= 32 20h 0010 0000b

C H N Ov P Z
1 1 0 0 1 0

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 18


Opérations Arithmétiques en Binaire

Décimal Hexadécimal Binaire


A: 3 03h 0000 0011b
+ + +
B: 127 7Fh 0111 1111b

S= -126 82h 1000 0010b

C H N Ov P Z
0 1 1 1 0 0

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 19


Opérations Arithmétiques en Binaire

Décimal Hexadécimal Binaire


A: 3 03h 0000 0011b
+ + +
B: -3 FDh 1111 1101b

S= 0 00h 0000 0000b

C H N Ov P Z
1 1 0 0 0 1

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 20


Opérations Arithmétiques en Binaire

Décalage arithmétique ou logique à gauche sur 8 bits:

S = Décalage d’un bit à gauche de A


Décimal Hexadécimal Binaire
A 3 03h 0000 0011b
S 6 06h 0000 0110b
Représentation pour n = 8
-1
0
1 S = Décalage d’un bit à gauche de A
Décimal Hexadécimal Binaire
-64 64
A -3 FDh 1111 1101b
S -6 FAh 1111 1010b
127
-128
Si -2n-2  A  2n-2  Décalage d’un bit à gauche sur n bits réalise une multiplication par 2
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 21
Opérations Arithmétiques en Binaire

Décalage arithmétique ou logique à gauche sur 8 bits:

S = Décalage d’un bit à gauche de A


Décimal Hexadécimal Binaire
A 126 7Eh 0111 1110b
S -4 FCh 1111 1100b

Représentation pour n = 8
-1
0
1
S = Décalage d’un bit à gauche de A
Décimal Hexadécimal Binaire
-64 64 A -126 82h 1000 0010b
S 4 04h 0000 0100b
127
-128
Si A< -2n-2 ou 2n-2  A  Décalage d’un bit à gauche sur n bits ne réalise pas une multiplication par 2

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 22


Opérations Arithmétiques en Binaire

Décalage arithmétique à droite sur 8 bits:

S = Décalage arithmétique d’un bit à droite de A


Décimal Hexadécimal Binaire
A 126 7Eh 0111 1110b
S 63 3Fh 0011 1111b

S = Décalage arithmétique d’un bit à droite de A


Décimal Hexadécimal Binaire
A -126 82h 1000 0010b
S -63 C1h 1100 0001b

Le décalage arithmétique d’un bit à droite réalise toujours une division par 2
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 23
Opérations Arithmétiques en Binaire

Décalage logique à droite sur 8 bits:

S = Décalage logique d’un bit à droite de A


Décimal Hexadécimal Binaire
A 126 7Eh 0111 1110b
S 63 3Fh 0011 1111b

S = Décalage logique d’un bit à droite de A


Décimal Hexadécimal Binaire
A -126 82h 1000 0010b
S 65 41h 0100 0001b

Le décalage logique d’un bit vers la droite ne tient pas compte du bit du signe
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 24
Opérations Arithmétiques en Binaire

Conversion d’un format à un autre supérieure


A a un format sur 8 bits signés
S a un format sur 16 bits signés

Décimal Hexadécimal Binaire


A (8bits) 126 7Eh 0111 1110b
S (16 bits) 126 007Eh 0000 0000 0111 1110b

Décimal Hexadécimal Binaire


A (8bits) -126 82h 1000 0010b
S (16 bits) -126 FF82h 1111 1111 1000 0010b

Le passage d’un format vers un format supérieure exige l’extension du signe


27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 25
Opérations Arithmétiques en Binaire
Addition en BCD
Soit deux nombres A et B exprimés en BCD, la somme A + B n’est
pas forcément en BCD:

Exemple d’additions sur 4 bits:

Addition en Addition en Résultat en binaire BCD


hexadécimal binaire et hexadécimal

3h + 7h = 0011b + 0111b = 1010b = Ah 10h


8h + 6h = 1000b + 0110b = 1110b = Eh 14h
9h + 8h = 1001b + 1000b = 10001b = 11h 17h

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 26


Opérations Arithmétiques en Binaire
Addition en BCD
Retenu b3 b2 b1 b0

0000b = 0h
0001b = 1h
0010b = 2h
0011b = 3h
0100b = 4h
0101b = 5h
0110b = 6h
0111b = 7h
1000b = 8h
A (BCD) + B(BCD) = R 1001b = 9h
1010b = Ah
1011b = Bh
1100b = Ch
1101b = Dh
1110b = Eh Erroné
1111b = Fh
10000b = 10h
Maximum:
10001b = 11h
10010b = 12h
9h + 9h = 1001b + 1001b = 10010b = 12h
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 27
Opérations Arithmétiques en Binaire
Addition en BCD
Retenu b3 b2 b1 b0

0000b = 0h
0001b = 1h
0010b = 2h
0011b = 3h
0100b = 4h Il faut rajouter 110b = 6h au
0101b = 5h résultat hexadécimal lorsqu’on a:
0110b = 6h
0111b = 7h b3 = b1 = 1
1000b = 8h b3 = b2 = 1
A (BCD) + B(BCD) = R 1001b = 9h
1010b = Ah Retenu = 1
1011b = Bh
1100b = Ch
1101b = Dh
1110b = Eh Erroné
1111b = Fh
10000b = 10h
10001b = 11h
10010b = 12h
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 28
Opérations Arithmétiques en Binaire
Addition en BCD: Solution Hardware

Additionneur BCD sur 3 Digits :


A(12 bits) + B(12 bits) = Résultats sur 4 Digits

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 29


Opérations Arithmétiques en Binaire
Addition en BCD: Solution Software
Isoler les digits des opérandes A et B, et à chaque fois que
l’addition de deux digits est supérieure ou égale à 1010b = 0Ah,
on rajoute 110b = 6h. Il ne faut pas oublier de tenir compte de la
retenu intermédiaire entre les digits. Exemple:
A = 98h DG_2_A = 9h
+ DG_1_A = 8h +
B = 49h + DG_2_B = 4h
DG_1_B = 9h
R = 147h = Dh = 1101b
= 11h = 10001b ≥ Ah +
+ 0110b Carry_DG_1 = 1b

Eh = 1110b ≥ Ah
17h = 10111b
+ 0110b

Carry_DG_1 = 1b 14h = 10100b


Retenu = 1
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 30
Opérations Arithmétiques en Binaire
Addition en BCD: Solution Software
Isoler les digits des opérandes A et B, et à chaque fois que
l’addition de deux digits est supérieure ou égale à 1010b = 0Ah,
on rajoute 110b = 6h. Il ne faut pas oublier de tenir compte de la
retenu intermédiaire entre les digits. Exemple:
A = 98h DG_2_A = 9h
+ DG_1_A = 8h +
B = 49h + DG_2_B = 4h
DG_1_B = 9h
R = 147h = Dh = 1101b
= 11h = 10001b ≥ Ah +
+ 0110b Carry_DG_1 = 1b

Eh = 1110b ≥ Ah
17h = 10111b
+ 0110b

Carry_DG_1 = 1b 14h = 10100b


Retenu = 1 => BCD = 147h
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 31
Représentation binaires des nombres fractionnaires en
virgule fixe

Soit un nombre binaire D sur N bits ayant une partie fractionnaire sur k bits

 On dit que le nombre D est représenté suivant le format Qk(N)

Exemples:
D = 0111,1010 => N = 8 et k = 4 : Q4(8)

D = 10010111,101101 => N = 14 et k = 6 : Q6(14)

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 32


Représentation binaires des nombres fractionnaires non
signés en virgule fixe
Nombre fractionnaire non signé (unsigned):
Partie entière Partie fractionnaire

Format Virgule Fixe Qk(N) = bN-1-k …. b1 b0 , b-1 b-2 …. b-k

(D)10 = bN-1-k2N-1-k + bN-2-k2N-2-k + …. + b0 + b-12-1 + …. + b-k2-k

Exemple:

D en Q4(14) = 1001100011,1001

=> (D)10 = 29 + 26 + 25 + 21 + 20 + 2-1 + 2-4 = 611,5625

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 33


Représentation binaires des nombres fractionnaires signés
en virgule fixe
Nombre fractionnaire signé (signed):
signe Partie entière Partie fractionnaire

Format Virgule Fixe Qk(N) = bN-1-k bN-2-k …. b1 b0 , b-1 b-2 …. b-k

(D)10 = -bN-1-k2N-1-k + bN-2-k2N-2-k + …. + b0 + b-12-1 + …. + b-k2-k

Exemple:

D en Q4(14) = 1001100011,1001

=> (D)10 = -29 + 26 + 25 + 21 + 20 + 2-1 + 2-4 = -412,4375

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 34


Représentation binaires des nombres fractionnaires signés
en virgule fixe
Pour représenter un nombre fractionnaire D en virgule fixe format Q k(N), on le
multiplie par 2k, on arrondi à l’entier le plus proche et on convertit en binaire:

Virgule Fixe Qk(N) = Conversion_Binaire( Arrondi(2k * D) )

Nombre Représentation Binaire Equivalence Erreur


Fractionnaire en Virgule Fixe Format Q8(16) Décimale Commise
1/3 00000000 01010101 0,33203125 0,00130208
2 00000001 01101010 1,4140625 0,0001510
 00000011 00100100 3,140625 0.0009676

Nombre Représentation Binaire Equivalence Erreur


Fractionnaire en Virgule Fixe Format Q8(16) Décimale Commise

-1/3 11111111 10101011 -0,33203125 0,00130208


-2 11111110 10010110 -1,4140625 0,0001510
- 11111100 11011100 -3,140625 0.0009676
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 35
Représentation binaires des nombres fractionnaires signés
en virgule fixe
Valeur extrême en format Qk(N):
Max = 2N-1-k - 2-k
Min = -2N-1-k

Exemple: Format Q15(16)


Max = 20 – 2-15 = 0,999999… = 7FFFh
Min = -20 = -1 = 8000h

Donc l’intervalle [-1,1[ peut être représenté comme suit:


Hexadécimal
Format Qk(N)
[-1,0] et [0,1[
N = 16 Q15(16) 8000h-0000h et 0000h-7FFFh
N=8 Q7(8) 80h-00h et 00h-7Fh

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 36


Représentation binaires des nombres fractionnaires signés
en virgule fixe
L’addition et la soustraction en virgule fixe:
• Les opérandes A et B doivent avoir même format Qk(N).
Exemple:
A = 3,9 et B = -7,731, on veut calculer la somme A + B (= -3.831)

On remarque que la partie entière de B nécessite au moins 4 bits


en complément à 2.
Format N = 8 bits  Signe + 3 bits + 4 bits fractionnaire  Q4(8)
A en Q4(8) : arrondi(24 * A) = 62 = 00111110b
,
B en Q4(8) : arrondi(24 * B) = -124 = 10000100b
,
Somme A + B en Q4(8) = 11000010b
, = -3,875
-23+22+0*21+0*20+0*2-1+0*2-2+2-3+0*2-4 = -23+22+2-3 = -3,875
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 37
Représentation binaires des nombres fractionnaires signés
en virgule fixe
L’addition et la soustraction en virgule fixe:
• Les opérandes A et B doivent avoir même format Qk(N).
Exemple:
A = 3,9 et B = -7,731, on veut calculer la somme A + B (= -3.831)

On remarque que la partie entière de B nécessite au moins 4 bits


en complément à 2.
Format N = 12 bits  Signe + 3 bits + 8 bits fractionnaire  Q8(12)
A en Q8(12) : arrondi(28 * A) = 998 = 001111100110b
,
B en Q8(12) : arrondi(28 * B) = -1979 = 100001000101b
,
Somme A + B en Q4(8) = 110000101011b
, = -3,832
-23+22+0*21+0*20+0*2-1+0*2-2+2-3+0*2-4+2-5+0*2-6+2-7+2-8 = -3,832
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 38
Représentation binaires des nombres fractionnaires signés
en virgule flottante
• Standard IEEE 754 de virgule flottante :
Le standard IEEE 754 fixe la norme en simple précision (32 bits) et double
précision (64 bits). En simple précision, la représentation binaire en virgule flottante utilise
un format N=32 bits, un bit S de signe, un exposant e sur 8 bits et une mantisse non signé sur
23 bits :
31 30 23 22 0
Signe Exposant e sur 8 bits entier Mantisse m sur 23 bits non signé en
non signé avec : format Q23(23) avec :
E = e - 127 M=m+1

Un nombre réel R est représenté comme suit :

R = (-1)S.(1+m).2e-127
1  e  254 et 0m1

Positif: Négatif:
Max = +(1.99999..)*2127  2128 Max = -2-126
Min = +2-126 Min = -2128
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 39
Représentation binaires des nombres fractionnaires en
virgule flottante
• Standard IEEE 754 de virgule flottante :
Le standard IEEE 754 fixe la norme en simple précision (32 bits) et double
précision (64 bits). En simple précision, la représentation binaire en virgule flottante utilise
un format N=32 bits, un bit S de signe, un exposant e sur 8 bits et une mantisse non signé sur
23 bits :
31 30 23 22 0
Signe Exposant e sur 8 bits entier Mantisse m sur 23 bits non signé en
non signé avec : format Q23(23) avec :
E = e - 127 M=m+1

Un nombre réel R est représenté comme suit :


R = (-1)S.(1+m).2e-127
1  e  254 et 0m1

Le tableau suivant donne des exemples de la norme IEEE 754 de virgule flottante :
Valeur Réelle S E M e (8 bits) m (23 bits)
28 = 1,75 x 24 0 4 1,75 10000011 (131) 110000….0 (0,75)
2 = 1,4142… x 20 0 0 1,414213… 01111111 (127) 0110101000001… (0,4142…)

1/3 = 0,333333… 0 -2 1,333333... 11111101 (125) 01010101010101...(0,3333...)


= 1,3333… x 2-2
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 40
Généralités sur les microprocesseurs

Documentations:
http://perso.orange.fr/xcotton/electron/coursetdocs.htm

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 41


Logique 3 états: ‘0’, ‘1’ et ‘Z’
CE (Chip Enable): Entrée permettant la sélection du composant
OE (Output Enable): Entrée permettant l’activation des sorties

E0 e0 s0 S0
E1 e1 s1 S1
1ér cas:
ENTREES

SORTIES
. . . . CE\ = 1 OE\ = ?
. . . .
Ej ej sj Sj Ej ej si Si
. . . . 0 Z 0 Z
. . . .
1 Z 1 Z
Em em sm Sm

CE\ OE\
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 49
Logique 3 états: ‘0’, ‘1’ et ‘Z’
CE (Chip Enable): Entrée permettant la sélection du composant
OE (Output Enable): Entrée permettant l’activation des sorties

E0 e0 s0 S0
E1 e1 s1 S1
2ème cas:
ENTREES

SORTIES
. . . . CE\ = 0 OE\ = 0
. . . .
Ej ej sj Sj Ej ej si Si
. . . . 0 0 0 0
. . . .
1 1 1 1
Em em sm Sm

CE\ OE\
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 50
Logique 3 états: ‘0’, ‘1’ et ‘Z’
CE (Chip Enable): Entrée permettant la sélection du composant
OE (Output Enable): Entrée permettant l’activation des sorties

E0 e0 s0 S0
E1 e1 s1 S1
3ème cas:
ENTREES

SORTIES
. . . . CE\ = 0 OE\ = 1
. . . .
Ej ej sj Sj Ej ej si Si
. . . . 0 0 0 Z
. . . .
1 1 1 Z
Em em sm Sm

CE\ OE\
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 51
Architecture externe d’un microprocesseur
Horloge
de type Von Newman
Bus de Données

Mémoire Centrale
Périphériques:
MICROPROCESSEUR

- Clavier
ROM, - Ecran
RAM
(EPROM, - Imprimante
(SRAM PIO - Port série
EEPROM, - USB
ou DRAM)
ou FLASH) - Disque Dur
- ….

Bus d’Adresses

Bus de Commande

ROM: Read Only Memory RAM: Random Access Memory PIO: Port Input Output

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 52


Architecture externe d’un microprocesseur
de
Horloge
type Harvard
Bus d’Instructions Bus de Données

Périphériques:

MICROPROCESSEUR
- Clavier
ROM, - Ecran
RAM
(EPROM, - Imprimante
(SRAM PIO - Port série
EEPROM, - USB
ou DRAM)
ou FLASH) - Disque Dur
- ….

Bus d’Adresses (Instr) Bus d’Adresses (Données)

Bus de Commande Bus de Commande

ROM: Read Only Memory RAM: Random Access Memory PIO: Port Input Output

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 53


La Mémoire Centrale

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 54


La mémoire centrale
Fonction

 Dispositif de stockage
 des données (écriture/lecture)
 des programmes (lecture seule)

 Caractéristiques
 sa taille (nombre de bits)
 son organisation (nombre de bits par mot)
 sa vitesse (temps d’accès)
 Type d’accès mémoire : en lecture ou écriture

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 55


La mémoire centrale
Organisation
La mémoire est un ensemble de mots de n bits, chaque mot
ayant son adresse propre. Exemple : mémoire de 96 bits
12 mots de 8 bits 8 mots de 12 bits 6 mots de 16 bits
@0 @0 @0
@1 @1 @1
@2 @2 @2
@3 @3 @3
@4 @4 @4
@5 @5 @5
@6 @6
@7 @7
@8
@9
@ 10
@ 11
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 56
La mémoire centrale
Les circuits mémoires Mot de 8 bits = 1 Octet
 Un mot = k bits (k: nombre de bits du bus de données) Mot de 16 bits = 2 octets
Mot de 32 bits = 4 octets
 Capacité = 2n mots (n: nombre de bits de bus d’adresses)
A0 D0 A0 D0
A1 D1 A1 D1
A2 D2 A2 D2
RAM ROM
An-1 Dk-1 An-1 Dk-1

WR/ RD/ CE/ RD/ CE/

Bus adresse n bits Bus données k bits Signaux de contrôle


• Monodirectionnel • Monodirectionel (ROM) • RD/ (Read)
ou Bidirectionnel (RAM) • WR/ (Write)
• Possibilité tri-state • CE/ (Chip Enable)ou CS/ (Chip
Select) ou OE/ (Output Enable)
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 57
La mémoire centrale
Technologie
 Mémoire morte ROM (Read Only Memory)
 ROM  contenu défini à la fabrication
 PROM  programmable une seule fois
 EPROM  programmable plusieurs fois, effacement aux UV
 EEPROM ou Flash EPROM  reprogrammable électriquement
in situ
 Mémoire vive RAM (Random Acces Memory)
 Mémoire statique
• 1 bit = 1 bascule
• Rapide mais faible intégration
 Mémoire dynamique
• 1 bit = 1 capacité du transistor grille drain
• Moins rapide mais très grande intégration
• Nécessité d’un rafraîchissement périodique (2 ms)
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 58
La mémoire centrale
Technologie

EEPROM

EPROM Puce effaçable par UV


27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 59
La mémoire centrale
Technologie
 Mémoire morte ROM (Read Only Memory)
 ROM  contenu défini à la fabrication
 PROM  programmable une seule fois
 EPROM  programmable plusieurs fois, effacement aux UV
 EEPROM ou Flash EPROM  reprogrammable électriquement
in situ
 Mémoire vive RAM (Random Acces Memory)
 Mémoire statique
• 1 bit = 1 bascule
• Rapide mais faible intégration
 Mémoire dynamique
• 1 bit = 1 capacité du transistor grille drain
• Moins rapide mais très grande intégration
• Nécessité d’un rafraîchissement périodique (2 ms)
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 60
La mémoire centrale
Exemple de cycle de lecture

Horloge

Adresse stable

CE/

RD/

Donnée valide

Donnée disponible
pour le processeur

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 61


La mémoire centrale
Exemple de cycle d’écriture

Horloge

Adresse stable

CE/

WR/

Donnée valide

Donnée enregistrée
dans la mémoire

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 62


La mémoire centrale
Assemblage de circuits mémoires
 Circuit mémoire a une taille de mot trop petite que celui du µP
 Mise en parallèle de circuits mémoires jusqu’à satisfaction du mot de µP
• signaux de contrôles identiques
• bus d’adresse identique
• séparation du bus de données
 Exemple
 µP à un bus de données de 16 bits et mot des circuits mémoires de 4 bits:

µP_Adresse
N N N N
2N 2N 2N 2N
mots mots mots mots
CE/ 4 bits CE/ 4 bits CE/ 4 bits CE/ 4 bits
RD/ RD/ RD/ RD/

WR/ WR/ WR/ WR/


4 4 4 4
µP_Données 16

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 63


La mémoire centrale
Assemblage de circuits mémoires
 Exemple : lecture à l’adresse mémoire 3
µP_Adresse
@0 @0 @0 @0
@1 @1 @1 @1
N N N N
3 @2 @2 @2 @2
0011
@3 1001
@3 0010
@3 1011
@3
@4 @4 @4 @4

0 CE/ CE/ CE/ CE/

0 RD/ RD/ RD/ RD/

1 WR/ @ 2N-2 WR/ @ 2N-2 WR/ @ 2N-2 WR/ @ 2N-2


@ 2N-1 @ 2N-1 @ 2N-1 @ 2N-1
4 4 4 4
µP_Données 16

0011.1001.0010.1011

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 64


La mémoire centrale
Assemblage de circuits mémoires
 Capacité du circuit mémoire trop petite par rapport à celle
du µP
 Mise en série de plusieurs circuits mémoires:
• signaux de contrôle
– CE/ spécifique à chaque circuit mémoire Recours au décodage
– RD/ et WR/ identiques

• bus d’adresse identique


• bus de données identique

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 65


La mémoire centrale
Décodage
 Le µP ne peut pas communiquer avec tous les circuits mémoires en même
temps. Il ne peut communiquer dans un cycle d’horloge qu’avec les circuits
mise en série par rapport à son bus de données.
 Permet la sélection des circuits mémoires contenant le mot désiré lors d’une
opération de lecture ou d’écriture
 Utilise quelques lignes du bus d’adresse émise par le µP pour générer les
signaux de sélection des boîtiers:
• décodage à l’aide des bits de poids forts
– les mots contenus dans un boîtier ont des adresses consécutives
• décodage à l’aide de bits de poids faibles
– les mots d’adresses consécutives sont dans des boîtiers différents

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 66


La mémoire centrale
Décodage
 Exemple
 Capacité du µP = 64k mots de 8 bits
 Utilisation des circuits mémoires de 16k mots de 8 bits
µP_adresse 14 A13….A0
ad

16 S3
CE/
RD/ @ : C000h à FFFFh
WR/ data

D 8
E S2 ad
CE/
2
C
O
RD/
data
@ : 8000h à BFFFh
WR/
A15A14 D
E S1 ad

@ : 4000h à 7FFFh
A15A14 S0 S1 S2 S3 U CE/
RD/
00 0 1 1 1 R WR/ data

01 1 0 1 1 S0
ad
10 1 1 0 1 CE/
RD/ @ : 0000h à 3FFFh
11 1 1 1 0 WR/ data
8
µP_data
WR/
RD/
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 67
La mémoire centrale
Décodage
 Exemple
 Capacité du µP = 64k mots de 16 bits
 Utilisation des circuits mémoires de 16k mots de 8 bits
µP_adresse 14 A13….A0
ad ad
CE/ CE/
@ : C000h à FFFFh
S3 RD/ RD/
16 WR/ data WR/ data

D 8 8
E S2 ad ad
CE/ CE/
C RD/ RD/ @ : 8000h à BFFFh
2 O WR/ data WR/ data

A15A14 D
E S1 ad ad
U CE/ CE/
RD/ RD/ @ : 4000h à 7FFFh
R WR/ data WR/ data

S0
ad ad
CE/ CE/
@ : 0000h à 3FFFh
RD/ RD/
WR/ data WR/ data
16
µP_data
WR/
RD/
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 68
La mémoire centrale
Décodage
 Exemple
 Capacité du µP = 64k mots de 8 bits
 Utilisation des circuits mémoires de 16k mots de 8 bits (Décodage par le poids
faibles du bus d’adresses)
µP_adresse 14 A15….A2
ad A15...A2
CE/
16 S3 RD/
data
0003h 0007h (A1A0 = 11) FFFFh
WR/

D 8
E S2 ad A15...A2
CE/ (A1A0 = 10)
C RD/
0002h 0006h FFFEh
2 O WR/ data

A1A0 D
E S1 ad A15...A2
U CE/
RD/ 0001h 0005h (A1A0 = 01) FFFDh
R WR/ data

S0
ad
CE/ A15...A2
RD/
data 0000h 0004h (A1A0 = 00) FFFCh
WR/
8
µP_data
WR/
RD/
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 69
La mémoire centrale
Décodage
 Exemple
 Capacité du µP = 64k mots de 8 bits
 Utilisation des circuits mémoires de 16k mots de 8 bits (Décodage par le poids
forts du bus d’adresses)
µP_adresse 14 A13….A0
ad

16 S3
CE/
RD/ @ : C000h à FFFFh
WR/ data

D 8
E S2 ad
CE/
2
C
O
RD/
data
@ : 8000h à BFFFh
WR/
A15A14 D
E S1 ad

@ : 4000h à 7FFFh
U CE/
RD/
R WR/ data

S0
ad
CE/
RD/ @ : 0000h à 3FFFh
WR/ data
8
µP_data
WR/
RD/
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 70
La mémoire centrale
Décodage
Exemple:
 Mémoire centrale de 16k octets construite à partir de boîtier de
1k x 4 bits:
• 32 boîtiers
• 2 boîtiers en parallèle pour mémoriser un octet
• 14 bits d ’adresse
– 10 pour sélectionner un mot dans les boîtiers
– 4 pour assurer le décodage (A10…A13 ou A0…A3)

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 71


La mémoire centrale
Décodage
 Exemple
 16k mots de 8 bits avec des boîtiers de 1k mots de 4 bits
adresse 14 A9….A0
ad ad
CE/ CE/
1 2 @ : 3C00h à 3FFFh
S15 RD/ RD/
14 WR/ data WR/ data

4 4
D S14 ad ad
CE/ CE/
E RD/
3 RD/ 4 @ : 3800h à 3BFFh
4 C WR/ data WR/ data

A13A12A11A10 O
D S13 ad ad
E CE/ CE/
RD/ 5 RD/ 6 @ : 3400h à 37FFh
U WR/ data WR/ data
R

S0 ad ad
CE/ CE/
RD/ 31 RD/ 32 @ : 0000h à 03FFh
WR/ data WR/ data
8
data
WR/
RD/
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 72
La mémoire centrale
Décodage: Espace d’adressage
 Définition
 L’espace d’adressage d’un processeur est défini par la largeur
des adresses que celui-ci génère pour accéder à un mot mémoire
 Exemple : 8086
• 20 bits d’adresse
• capacité mémoire maximale 1M octets
 Implantation des boîtiers mémoires
 La mémoire implantée n’occupe pas obligatoirement la totalité
de l’espace adressage par le µP
 Simplification du système de décodage

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 73


La mémoire centrale
 Exemple
Décodage: Espace d’adressage
 Implantation d’une mémoire centrale de 192k octets ROM1
dans un espace adressable du µP de 1M octets:
• 128ko ROM ROM2
– 2 boîtiers 64ko
RAM1
• 64ko RAM
RAM2
– 2 boîtiers 32ko

Adresses
•ROM:
A17 A16 A15 A14………….A0
$00000 - $0FFFF
0 0 x xxxxxxxxxxxxxxx ROM1
$10000 - $1FFFF
•RAM: 0 1 x xxxxxxxxxxxxxxx ROM2

$20000 - $27FFF 1 0 0 xxxxxxxxxxxxxxx RAM1


$28000 - $2FFFF 1 0 1 xxxxxxxxxxxxxxx RAM2
 Décodage avec les bits A15, A16, A17
 les combinaisons restantes de A17A16A15: ‘110’ et ‘111’ seront utilisées pour l’extension
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 74
Construction d’un système à microprocesseur
Décodage Linéaire

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

ROM
CS_ROM
RAM1
CS_RAM1
RAM2
CS_RAM2
PIO
CS_PIO\

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Boîtier Adresses


1 0 0 1 NC NC * * * * * * * * * * ROM 9000-93FF
0 1 0 1 NC NC NC * * * * * * * * * RAM1 5000-51FF

0 0 1 1 NC NC NC * * * * * * * * * RAM2 3000-31FF

0 0 0 0 NC NC NC NC NC NC NC NC NC NC * * PIO 0000-0003

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 75


Construction d’un système à microprocesseur
Décodage Linéaire
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

ROM
CS_ROM
RAM1
CS_RAM1
RAM2
CS_RAM2
PIO
CS_PIO\

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Boîtier Adresses


1 0 0 1 NC NC * * * * * * * * * * ROM 9000-93FF
0 1 0 1 NC NC NC * * * * * * * * * RAM1 5000-51FF

0 0 1 1 NC NC NC * * * * * * * * * RAM2 3000-31FF

0 0 0 0 NC NC NC NC NC NC NC NC NC NC * * PIO 0000-0003

A11 A10 Champ d’adresses pour la ROM


0 0 9000-93FF
0 1 9600-97FF
1 0 9800-9BFF
1 1 9C00-9FFF

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 76


Construction d’un système à microprocesseur
Décodage Complet CS0\ CS1\ CS2 = 0 0 1
E2 E1 E0 S0 S1 S2 S3 S4 S5 S6 S7
0 0 0 0 1 1 1 1 1 1 1
0 0 1 1 0 1 1 1 1 1 1
0 1 0 1 1 0 1 1 1 1 1
0 1 1 1 1 1 0 1 1 1 1
1 0 0 1 1 1 1 0 1 1 1
1 0 1 1 1 1 1 1 0 1 1
1 1 0 1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 1 1 1 0

CS0\ CS1\ CS2  0 0 1 1 1 1 1 1 1 1 1

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

ROM
CS2
RAM1
CS1\
RAM2
CS0\
PIO
E2 E1 E0

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Boîtier Adresses

1 0 0 0 0 0 * * * * * * * * * * ROM 8000-83FF

1 0 0 0 0 1 1 * * * * * * * * * RAM1 8600-87FF

1 0 0 0 1 0 1 * * * * * * * * * RAM2 8A00-8BFF

1 0 0 0 1 1 NC NC NC NC NC NC NC NC * * PIO 8C00-8C03
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 77
Interfaces de communication

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 81


Architecture externe du microprocesseur
Horloge

Bus de Données

Périphériques:
MICROPROCESSEUR

- Clavier
- Ecran
- Imprimante
ROM RAM PIO - Port série
- USB
- Disque Dur
- ….

Bus d’Adresses

Bus de Commande

ROM: Read Only Memory RAM: Random Access Memory PIO: Port Input Output

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 82


Les entrées-sorties
Synoptique général
périphérique périphérique

liaison liaison

UNITE MEMOIRE PORT PORT

D ’ENTREES D ’ENTREES
CENTRALE CENTRALE SORTIES SORTIES

adresses
données

contrôle

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 83


Les entrées-sorties
Communication Parallèle

 Transmission des données en parallèle


 1 fil par bit
 Avantages
• rapidité de la transmission
• simplicité : un port = un registre
 Inconvénients
• liaison courte distance
• liaison câblée

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 86


Les entrées-sorties
Communication Parallèle Synchrone
données données
b7 b7
b6 b6
b5 b5
b4 b4
8 b3
µP Périphérique 8 b3
REGISTRE
b2 µP REGISTRE Périphérique
b2
b1 b1
b0 b0

OE\ CK CK OE\

PORT D ’ENTREE: LECTURE PORT DE SORTIE: ECRITURE

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 88


Les entrées-sorties
Communication Série

 Transmission des données en série


 Les bits sont émis ou reçus sur un seul fil les uns derrière les autres

 un fil supplémentaire pour l’horloge en mode synchrone

 Vitesse de transmission (bits par seconde)

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 89


Les entrées-sorties
Communication Série Synchrone

 Contrôle par une horloge


 Adaptée aux vitesses élevées ( 100 Mb/s)
 Exemple:
o I2C : 100 Kbits/s
o SPI: quelques Mbits/s
o USB (Universal Bus Serie):
 Vitesse Haute - 480Mbits/s.....High Speed
 Vitesse Pleine - 12Mbits/s.....Full Speed
 Vitesse Basse - 1,5Mbits/s.....Low Speed

o Bus CAN (automobile)


o …
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 90
Les entrées-sorties
Communication Série Synchrone USB
(http://www.abcelectronique.com/acquier/usb2_fr.htm)

 USB (Universal Bus Serie):


Numéro des broches Couleurs des câbles Fonction Connecteur USB type A
1 Rouge VBUS (5 volts)
2 Blanc D-
3 Vert D+
Connecteur USB type B
4 Noir Masse

Vitesse = 12 Mbits/s Vitesse = 1,5 Mbits/s

Appareil pleine vitesse avec Appareil basse vitesse


résistance de rappel état avec résistance de rappel
haut branché sur D+ état haut branché sur D-

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 91


Les entrées-sorties
Communication Série Synchrone: I2C

 Historique :

Le bus I2C ( Inter Integrated Circuit ) a été développé au début des années 80 par
Philips semi-conducteurs pour permettre de relier facilement à un microprocesseur les
différents circuits d'un téléviseur moderne.

 Caractéristiques :

 Communication entre des composants électroniques très divers grâce à seulement


trois fils : Un signal de donnée ( SDA ), un signal d'horloge ( SCL ) et un signal de
référence électrique ( Masse )

 Adressage des circuits sur 7 bits

 Vitesse plafonnée à 100 kbit/s

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 92


Les entrées-sorties
Communication Série Synchrone: I2C

SCL
SDA
MASTER
(MCU)

SLAVE SLAVE SLAVE SLAVE


(1) (2) (3) (N)

 Le MCU envoie des données à un des ICs connectés au


bus I2C.
 Chaque IC est reconnu par une adresse sur 7 bits

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 93


Les entrées-sorties
Communication Série Synchrone: I2C

START condition

1. Le MCU lance dans le bus une condition START


(Front descendant du SDA pendant que le signal SCL
est au niveau haut)
2. Les autres ICs s’apprêtent à recevoir des données.
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 94
Les entrées-sorties
Communication Série Synchrone: I2C

MCU envoie le Slave Addr & opcode


Slave address opcode

Le premier octet envoyer après la condition START


identifie l’adresse du slave et le type de l’opération (‘1’:
Read ou ‘0’: Write)
Remarque: Le SDA ne varie que pendant le niveau bas du
SCL (exception pendant START et STOP)
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 95
Les entrées-sorties
Communication Série Synchrone: I2C

Acquittement

Après réception de l’adresse:


1. Chaque IC va la comparer à sa propre adresse sur 7 bits.
2. Seul l’IC concerné va répondre par un ACK en descendant
la ligne SDA pendant la période réservée à l’acquittement
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 96
Les entrées-sorties
Communication Série Synchrone: I2C

Transfert de données

1. Lorsque le MCU reçoit cet ACK, le transfert peut


commencer entre lui et l’autre IC.
2. Chaque octet transmis doit être acquitté par son
récepteur.
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 97
Les entrées-sorties
Communication Série Synchrone: I2C

STOP condition

1. A la fin, le MCU lance une condition STOP indiquant


que le bus est libre (Front montant du SDA pendant le
niveau haut du SCL)
2. D’autres opérations peuvent commencées.
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 98
Les entrées-sorties
Communication Série Synchrone: I2C

De nombreux fabricants ayant adopté le système, la variété


des circuits disponibles disposant d'un port I2C est énorme:

Ports d'E/S bidirectionnels


Convertisseurs A/N et N/A
Mémoires ( RAM, EPROM, EEPROM, etc... )
Circuits Audio (Égaliseur, Contrôle de volume, ...)
Drivers ( LED , LCD , ...)

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 99


Les entrées-sorties
Communication Série Asynchrone: RS-232
Emetteur Récepteur
(Micro-ordinateur, Modem, PABX,...) (Micro-ordinateur)

 COM1 RS-232 COM1



 Transmission asynchrone
 Temps entre deux octets variable
 Bits codés
• sous forme de tension +V -V (  12V)
• sous forme de courant +I -I
 Bit de START
 Bits de STOP
 Bit de PARITE

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 103
Les entrées-sorties
Communication Série Asynchrone: RS-232

Exemple:
Pour un format de 7 bits, parité paire, deux bits de stop, le
format de la trame pour la transmission de la lettre E (code ASCII
45h ou en binaire 01000101) est:
Bit départ Bits Bit parité Bit(s)stop
données
Logique: 0 1010001 1 11

Électrique: + -+-+++- - --

LSB MSB

0 1 0 1 0 0 0 1 1 1 1
start 1 2 3 4 5 6 7 Par Stop Stop

T
V = 1/T
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 105
Structure interne d’un microprocesseur

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 108
Structure interne d’un microprocesseur

µP
Unité de Commande
(UC) Bus d’Adresses

Unité Arithmétique et
Logique (ALU)
Bus de Données
Registres:

- Registre d’Etats
- Compteur Programme (PC) Bus de
- Pointeur de la Pile (SP) Commande

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 109
L’ALU

 Circuit combinatoire qui reçoit en entrée un ou deux


opérandes et produit un résultat et des indicateurs.
Exemples : NON, ET, OU, A + B, A – B, A = B, …

A
Op. R (résultat)
B

Indicateurs (Z, N, C, …)

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 110
L’ALU

CODOP

opération 1

A Opération 2

opération 3 sortie
B

opération n

Indicateurs

Remarque: L’ALU exécute une opération interne parmi n spécifiée par un code
machine nommé Code Opératoire (COD OP). Les opérations de l’ALU ne sont pas
lancées toutes en même temps comme montre ce schéma non réel.

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 111
L’ALU
Associé à un accumulateur
 L’accumulateur : registre permettant d’assurer le stockage
d’une opérande
H

data in

Indicateurs
codop opérateurs

H accumulateur Registre d’état

data out

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 113
L’ALU
Associé à un accumulateur
 Opérations complexes
 Décomposition en opérations simples
Exemple : M1 + M2  M1 H

data in

• LOAD accu, M1 opérateurs


Indicateurs
codop
• accu + M2  accu
• STORE M1, accu Registre d’état
H accumulateur

data out

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 114
L’ALU
Associé à un accumulateur

• LOAD accu , M1
H

M1
data in

Indicateurs
codop opérateurs

Sortie = data in

H M1 Registre d’état

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 115
L’ALU
Associé à un accumulateur

• accu + M2  accu
H

M2 M1
data in

Indicateurs
codop opérateurs

Sortie = data in + accu

H M1 + M2 Registre d’état

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 116
L’ALU
Associé à un accumulateur

• STORE M1 , accu
H

data in

Indicateurs
codop opérateurs

NOP

H M1 + M2 Registre d’état

M1

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 117
L’ALU
Registre d’état et mot d’état

 Mot d’état
 Ensemble d’indicateurs binaires (flags) qui caractérisent le
dernier résultat évalué dans l’ALU. Par exemple :
• Bit Z = 1 si résultat nul
• Bit C = 1 si retenue sortante de l’ALU
• Bit N = 1 si résultat négatif
 Tous les bits ne sont pas modifiés à chaque opération
 Le mot d’état est utilisé par l’UC lors d’une instruction
conditionnelle
 Registre d’état
 Registre qui stocke le mot d’état

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 118
L’ALU
Schéma bloc
data in

OPERATEURS commande
H ET
REGISTRES état

data out

• Exemples de commande
– ADD addition – NOP pas de changement
– SUB soustraction – LOAD chargement d’un registre
– INC incrémentation – STORE écriture en mémoire d’un registre
– DEC décrémentation – CMP comparaison

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 119
L’unité de contrôle
Architecture simplifiée
µP

Compteur Programme

Bus d’Adresses
+1

Bus de Données
Mémoire
instruction
Registre Instruction centrale
RD/
Reg. état
Décodeur

signaux

Commandes ALU UE Mémoire


27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 120
L’unité de contrôle
L’instruction
 Programme
 Suite ordonnée d’instructions
 Le programme doit être en mémoire centrale pour pouvoir être
exécuté
 Déroulement d’une instruction
 Lecture de l’instruction (fetch)
 Décodage de l’instruction (decode)
 Lecture des opérandes, s’il y a lieu
 Exécution de l’opération (execute)
 Préparation de l’instruction suivante

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 121
Organisation particulière: PILE

0 7
FFFF

Adresse_Fin

RAM
PILE

Adresse_Debut

0000

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 122
Organisation particulière: PILE

In In Out

Pointeur

Out

File d’attente (FIFO) Pile (LIFO)

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 123
Organisation particulière: PILE

µP
PILE
RD/
Adresse_Fin
7 REGISTRE 0 WR/
DONNEE

PUSH
BUS DE DONNEES

POP

BUS D’ADRESSES DONNEE

SP
ADRESSE

15 0 Adresse_Debut

7 0

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 124
EVALUATION

Questions de cours:

• Citer au moins 3 registres principaux dans un microprocesseur


• Citer au moins 8 opérations effectuées par l’ALU
• Quelles sont les instructions du µP qui gèrent la pile

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 125
Exemple: Microprocesseur 8086

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 126
Brochage du µP 8086

MASSE 1 40 VCC
AD14 2 39 AD15
AD13 3 38 A16 S3
AD12 4 37 A17 S4
AD11 5 36 A18 S5
AD10 6 35 A19 S6
AD9 7 34 BHE/ S7
AD8 8 33 MN – MX/
AD7 9 32 RD/
AD6 10 8086 31 HOLD (RQ/ GT0/)
AD5 11 30 HLDA (RQ/ GT1/)
AD4 12 29 WR/ (LOCK)
AD3 13 28 M – IO/ (S2/)
AD2 14 27 DT – R/ (S1/)
AD1 15 26 DEN/ (S0/)
AD0 16 25 ALE (QS0)
NMI 17 24 INTA/ (QS1)
INTR 18 23 TEST/
CLK 19 22 READY
MASSE 20 21 RESET

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 127
Organisation de la mémoire en deux banques

A1 – A19

0,5 Moctet 0,5 Moctet

BANQUE BANQUE
BHE\
SUPERIEURE INFERIEURE
A0
ADRESSES ADRESSES
IMPAIRES PAIRES

D8 – D15 D0 – D7

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 128
Démultiplexage du bus d’adresses et de
données
ALE

A16 – A19 LATCHES


A0 – A19 MEMOIRE A0 – A15 ENTREES/SORTIES
8282/83 (1 MO) (64 Ko)
AD0-AD15

µP
8086
Transmetteur
Bidirectionnel D0 – D15 D0 – D15
8286/87
WR/ WR/
DEN\ RD/ RD/
DT – R\ CS CS\
M – IO\ RD\ WR\

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 129
Timing du cycle de lecture en mémoire
et en périphérique
Cycle d’opération

T1 T2 T3 T4

Horloge

A19-A16 et BHE\ Adresse, BHE/ Etat S7-S3

AD15-AD0 Adresse Données

ALE

M – IO\ 0: I/O ou 1:MEMOIRE

RD\

DT – R\

DEN\

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 130
Timing du cycle d’écriture en mémoire
et en périphérique
Cycle d’opération

T1 T2 T3 T4

Horloge

A19-A16 et BHE\ Adresse, BHE/ Etat S7-S3

AD15-AD0 Adresse Données

ALE

M – IO\ 0: I/O ou 1:MEMOIRE

WR\

DT – R\

DEN\

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 131
Registres du µP 8086

 Le µP 8086 contient 14 registres de 16 bits. Ces registres


peuvent être classés en 4 groupes:
 4 Registres de Données
 5 Registres Pointeurs et Index
 4 Registres Segment
 1 Registre de Contrôle

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 132
Registres du µP 8086

 4 Registres de Données:
 Accumulateur: AX = AH : AL
 Base: BX = BH : BL
 Compteur: CX = CH : CL
 Données: DX = DH : DL

15 8 7 0
AX : AH AL Accumulateur
BX : BH BL Base
CX : CH CL Compteur
DX : DH DL Données

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 133
Registres du µP 8086

 5 Registres Pointeurs et Index:


 Pointeur de Base: BP
 Index Source: SI
 Index Destination: DI
 Pointeur de Pile: SP (Stack Pointer)
 Pointeur d’Instruction IP (Compteur Programme)
15 0
BP Pointeur de Base
SI Index Source
DI Index Destination
SP Pointeur de Pile
IP Pointeur d’Instruction

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 134
Registres du µP 8086
 4 Registres Segment:
 Segment Code: CS
 Segment Données: DS
 Segment Pile: SS (Stack Segment)
 Extra Segment: ES

15 0
CS Segment Code
DS Segment Données
SS Segment Pile
ES Extra Segment

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 135
Registres du µP 8086
 1 Registre de Contrôle:

 Le registre d’état :

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OF DF IF TF SF ZF AF PF CF

• CF carry flag
• PF parity flag
• AF auxiliary flag
• ZF zero flag
• SF sign flag
• TF Trap (mode pas à pas)
• IF autorisation d’interruption
• DF direction (pour opérations sur chaîne)
• OF overflow flag

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 136
Segmentation de la mémoire
 Bus d’adresses codées sur 20 bits: A19 – A0
 Capacité d’adressage : 220 octets = 1 Moctets
 Problème:
 Tous les registres du 8086 sont de 16 bits
 Comment on peut avoir une adresse sur 20 bits à partir des
registres de 16 bits ?
 Intel: Segmentation de la mémoire en blocs de 64 Koctets
Offset début Offset Fin
0000h FFFFh
du segment du segment

Adresse début du segment est un


Adresse Fin du segment
multiple de 16 = 24 = 10h

Adresse = Adresse début + Offset


27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 137
Segmentation de la mémoire
 Quatre segments de 64 Koctets sont accessibles
• Segment de Code pointé par le registre CS

 Adresse Début = (CS) x 24


• Segment de Donnée pointé par le registre DS

 Adresse Début = (DS) x 24


• Segment de Pile pointé par le registre SS

 Adresse Début = (SS) x 24


• Extra Segment pointé par le registre ES

 Adresse Début = (ES) x 24

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 138
Segmentation de la mémoire
 Adresse d’un mot
 Adresse de début de segment + Offset dans le segment

Registre de segment 0000


+

Offset dans le segment

Adresse physique sur 20 bits

00000h MEMOIRE = 1 Moctet FFFFFh


CS*10h DS*10h ES*10h SS*10h
0000 OFFSET FFFF 0000 OFFSET FFFF 0000 OFFSET FFFF 0000 OFFSET FFFF

Segment CODE Segment DONNEES Segment SUPPLE. Segment PILE

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 139
Architecture interne du µP 8086
M
E
Bus
Unité de CALCUL de M
d‘Adresses 20
AX AH AL ADRESSE PHYSIQYE O
bits
BX BH BL I
R
CX CH CL E
DX DH DL
SP CS

BP IP

DI DS

SI SS
‘UE’ : Unité d’Exécution ES ‘BIU’ : Unité d’Interface de Bus

FILE
UAL
D’ATTENTE
Décodeur
1
d’Instruction
2
Registre d’ETAT
3
4
5
6

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 140
Les modes d’adressage du 8086

MOV DESTINATION, SOURCE

L’instruction MOV Transfert un mot de l’opérande SOURCE


vers l’opérande DESTINATION

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 141
Les modes d’adressage du 8086
 Adressage Immédiat:
L’opérande SOURCE est une CONSTANTE
MOV AX , 15FAh ; AX reçoit la valeur 15FAh
MOV BX , 01001111b ; BX reçoit la valeur 004Fh
MOV CL , 10 ; CL reçoit la valeur 0Ah

Remarque 1: le préfixe h indique que la constante est en hexadécimal


le préfixe b indique que la constante est en binaire
la constante est en décimal s’il n’y a pas d’indication.

Remarque 2: L’adressage immédiat peut être appliqué avec tous les registres
sauf les registres segments. Pour mettre une constante dans un registre
segment, il faut utiliser un registre intermédiaire:
MOV AX, 0100h ; (AX)= 0100
MOV DS, AX ; (DS)= (AX)
Remarque 3: Ce type d’adressage n’a pas besoin d’un accès en mémoire.
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 142
Les modes d’adressage du 8086

 Adressage Registre:
Les 2 opérandes SOURCE et DESTINATION sont des
registres

MOV AX , DX ; AX reçoit le contenu de DX


MOV BP , SS ; BP reçoit le contenu de SS
MOV CL , AH ; CL reçoit le contenu de AH

Remarque : L’opération effectuée est interne et ne nécessite pas


d’accès en mémoire

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 143
Les modes d’adressage du 8086
MEMOIRE
00001 00000

 Adressage Direct:
E0101 4F 31 E0100
L’instruction spécifie l’adresse physique d’une des 2
opérandes SOURCE ou DESTINATION. On a besoin F0101 17 0A F0100
de connaître le registre segment et l’offset.
FFFFF FFFFE

MOV AL, DS:[100h] ; le registre segment est DS et l’offset est 0100


; si (DS)=E000, l’adresse physique est donc:
; E000h x 10h + 0100h= E0100h
;  (AL)= 31
MOV BL, DS:[101h] ; (BL)= 4Fh
MOV AX, SS:[100h] ; si (SS)= F000h  (AX)= 170Ah

Remarque: Pour ce type d’adressage, si on n’indique pas de registre segment,


c’est le DS qui est pris par défaut. Exemple:
MOV AL, [100h] ; (AL)= 31h
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 144
Les modes d’adressage du 8086
 Adressage Indexé:
L’offset de l’adresse physique est dans un des registres
index SI ou DI
MEMOIRE
MOV DS:[SI] , AX 00001 00000

; Si (AX) = 1234h, (SI)= 100h et (DS) = E000h


; Le contenu de AX est transféré dans l’adresse E0101 12 34 E0100

; physique: E000h x 10h + 0100h= E0100h


F0101 17 0A F0100

FFFFF FFFFE

MOV BX, SS:[DI] ; Si (SS) = F000h et (DI) = 0100h


;  (BX) = 170Ah

Remarque: Si on n’indique pas le registre segment, c’est le registre DS qui est


pris par défaut. Exemple:
MOV CL, [SI] ; Si (DS) = E000h et (SI) = 0100h  (CL)= 34h
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 145
Les modes d’adressage du 8086
 Adressage Basé:
L’offset de l’adresse physique est dans un des registres
de base BX ou BP MEMOIRE
00001 00000
MOV ES:[BX] , DX
; Si (DX) = FF00h, (ES)= 1000h et (BX) = 0010h 10011 FF 00 10010
; Le contenu de DX est transféré dans l’adresse
; physique: 1000h x 10h + 0010h= 10010h A0021 DA 1B A0020

FFFFF FFFFE

MOV DX, SS:[BP] ; Si (SS) = A000h et (BP) = 0020h


; L’adresse Physique: A000h x 10h + 0020h = A0020h
;  (DX) = DA1Bh
Remarque: Si on n’indique pas le registre segment :
•L’offset est dans BX  DS est le registre segment pris par défaut
•L’offset est dans BP  SS est le registre segment pris par défaut.
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 146
Les modes d’adressage du 8086
 Adressage Basé et Indexé:
L’offset de l’adresse physique est la somme d’un registre
d’index (SI ou DI) et un registre de base (BX ou BP) MEMOIRE
00001 00000
MOV DS:[SI + BX] , DX
; Si (DX) = 1234h, (DS)= E000h, (SI) = A000h A0121 FF 00 A0120
; et (BX) = 0010h, le contenu de DX est transféré
; dans l’adresse physique: EA011 12 34 EA010

; E000h x 10h + A000h + 0010h= EA010h


FFFFF FFFFE

MOV AX, SS:[DI + BP] ; Si (SS) = A000h, (DI) = 0100h et (BP) = 0020h
; L’adresse Physique: A000h x 10h + 0100h + 0020h = A0120h
;  (AX) = FF00h
Remarque: Si on n’indique pas le registre segment :
•BX est le registre de base  DS est le registre segment pris par défaut
•BP est le registre de base  SS est le registre segment pris par défaut.
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 147
Les modes d’adressage du 8086
 Adressage avec déplacement:
L’offset de l’adresse physique est la somme d’un registre
d’index (SI ou DI) et un registre de base (BX ou BP) MEMOIRE
00001 00000
MOV 1200h[SI + BX] , DX
; Si (DX) = 1234h, (DS)= E000h, (SI) = A000h A0121 FF 00 A0120
; et (BX) = 0010h, le contenu de DX est transféré
; dans l’adresse physique: EB211 12 34 EB210

; E000h x 10h + A000h + 0010h + 1200h = EB210h


FFFFF FFFFE

MOV AX, [BP + SI + 1254h]


; L’adresse Physique: (SS) x 10h + (BP) + (SI) + 1254h

MOV [BX + 10] , CL


; L’adresse Physique: (DS) x 10h + (BX) + 0Ah

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 148
Les modes d’adressage du 8086

 Lien implicite pour le calcul de l’adresse physique:

Mode d’adressage Offset Registre Segment par défaut

Indexé SI ou DI DS
Basé BX DS
Basé BP SS
Basé et Indexé BP + (SI ou DI) SS
Basé et Indexé BX + (SI ou DI) DS

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 149
Les modes d’adressage du 8086
 Lien implicite pour le calcul de l’adresse physique:
Le registre IP s’associe exclusivement avec la registre segment CS
pour pointer l’adresse physique de la prochaine instruction à
exécuter par le µP.
Adresse Code objet Code symbolique

CODE SEGMENT
ASSUME CS: CODE, DS: DATA, SS: PILE
0000 PROG_PRINC:
0000 89 07 MOV [BX], AX
0002 FE 07 INC BYTE PTR [BX]
0004 00 27 ADD [BX], AH
0006 88 47 10 MOV [BX+10h], AL
0009 C7 03 8086 MOV [BP+DI], 8086h
000D C7 00 8086 MOV [BX+SI], 8086h
0011 80 03 31 ADD BYTE PTR [BP+DI], '1'
0014 FF 37 PUSH WORD PTR [BX]
0016 CODE ENDS
END PROG_PRINC

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 150
Les modes d’adressage du 8086
 Lien implicite pour le calcul de l’adresse physique:
Le registre SP s’associe exclusivement avec la registre segment SS
pour pointer l’adresse physique du sommet de la pile.

Exemple: (SS) = 1000h et (SP) = FFF8h


 Adresse Physique: (SS) x 10h + (SP) = 1FFF8h
PILE
10001 10000

1FFF7 CC B5 1FFF6
1FFF9 41 BE 1FFF8 Sommet de la pile
1FFFB 4C F2 1FFFA
1FFFD 96 52 1FFFC
1FFFF 47 A1 1FFFE

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 151
Les modes d’adressage du 8086
 Lien implicite pour le calcul de l’adresse physique:
L’instruction PUSH qui permet d’empiler s’exécute en 2 phases:
• (SP) – 2  SP
• Ecriture d’un mot de 16 bits au nouveau sommet de la pile
Exemple: (SS) = 1000h, (SP) = FFF8h et (AX) = 1234h
Avant l’exécution de Après l’exécution de
PUSH AX PUSH AX
PILE PILE
10001 10000 10001 10000

1FFF7 CC B5 1FFF6 Sommet


1FFF7 12 34 1FFF6
Sommet de la pile
1FFF9 41 BE 1FFF8 1FFF9 41 BE 1FFF8
de la pile
1FFFB 4C F2 1FFFA 1FFFB 4C F2 1FFFA
1FFFD 96 52 1FFFC 1FFFD 96 52 1FFFC
1FFFF 47 A1 1FFFE 1FFFF 47 A1 1FFFE

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 152
Les modes d’adressage du 8086
 Lien implicite pour le calcul de l’adresse physique:
L’instruction POP qui permet de dépiler s’exécute en 2 phases:
• Lecture d’un mot de 16 bits au sommet de la pile
• (SP) + 2  SP
Exemple: (SS) = 1000h, (SP) = FFF8h
Avant l’exécution de Après l’exécution de
POP CX POP CX  (CX) = 41BEh
PILE PILE
10001 10000 10001 10000

1FFF7 CC B5 1FFF6 1FFF7 CC B5 1FFF6


Sommet
1FFF9 41 BE 1FFF8 1FFF9 41 BE 1FFF8
de la pile Sommet
1FFFB 4C F2 1FFFA 1FFFB 4C F2 1FFFA
de la pile
1FFFD 96 52 1FFFC 1FFFD 96 52 1FFFC
1FFFF 47 A1 1FFFE 1FFFF 47 A1 1FFFE

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 153
Les modes d’adressage du 8086
 Déclaration de Procédure: Intra Segment
Programme Principal
Sous Programme : SousProg
MOV AX,BX
ADD [SI] SousProg PROC NEAR
…. …. PUSH BX
…. …. 1 PUSH DX
CALL SousProg 4 LEA BX,MEM
MOV AL,AH MOV DX,[BX]
…. …. 5 2 …. ….
…. …. 3 …. ….
CALL SousProg …. ….
INC CX POP DX
6 POP BX
…. ….
…. …. RET
END SousProg ENDP

PILE
Intra Segment : Intra Segment :
CALL RET

IP

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 154
Les modes d’adressage du 8086
 Déclaration de Procédure: Inter Segment
Programme Principal
Sous Programme : SousProg
MOV AX,BX
ADD [SI] SousProg PROC FAR
…. …. PUSH BX
…. …. 1 PUSH DX
CALL SousProg 4 LEA BX,MEM
MOV AL,AH MOV DX,[BX]
…. …. 5 2 …. ….
…. ….
3 …. ….
CALL SousProg …. ….
INC CX POP DX
6 POP BX
…. ….
…. …. RET
END SousProg ENDP

PILE
Inter Segment : Inter Segment :
CALL RET

IP
CS

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 155
Structure du Programme Assembleur
; --- Déclaration Segment Code
CODE SEGMENT PUBLIC
ASSUME CS:CODE, DS:DATA, SS:PILE
; --- Spécification du type du microprocesseur
; --- Déclaration des procédures
. 8086
name_proc PROC NEAR
; --- Déclaration des constantes
PUSH AX
TAILLE EQU 90
...
; --- Déclaration des macros
POP AX
OUT_P MACRO PORT,VALEUR
RET
PUSH AX
name_proc ENDP
PUSH DX
...
MOV DX,PORT
;--- Procédure d’interruption
MOV AL,VALEUR
timer PROC FAR
OUT DX,AL
PUSH DS
POP DX
...
POP AX
OUT_P 3FBh,80h
ENDM
...
; --- Déclaration Segment de la Pile
POP DS
PILE SEGMENT STACK
IRET
DW 100 DUP(?)
timer ENDP
PILE ENDS
; --- Debut du programme principal
; --- Déclaration Segment de Données
ProgPrinc:
DATA SEGMENT PUBLIC
MOV AX, DATA
var1 DB 10h
MOV DS, AX
var2 DW 1
...
buffeur DB TAILLE DUP(?)
CALL name_proc
ptr DD buffeur
...
DATA ENDS
...
CODE ENDS
END ProgPrinc
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 156
Directives de l’Assembleur
Déclaration des constantes par EQU :
CR EQU 0Dh ; code ASCII du Retour Chariot
LF EQU 0Ah ; code ASCII du Retour à la Ligne
Déclaration des variables :
Var1 DB 15 ; réservation d’un octet initialisé à 15 décimal
Var2 DW 1122h ; réservation d’un mot de 16 bits initialisé à 1122h
Var3 DD 11223344h; réservation d’un long mot 32 bits initialisé à 11223344h
Var4 DB ? ; réservation d’un octet non initialisé
Var5 DB 10 DUP(0) ; réservation de 10 octets initialisés à 0
Var6 DW 100 DUP( ?) ; réservation de 100 mots de 16 bits non initialisés
Var7 DB ‘7’ ; réservation d’un octet initialisé au Code ASCII de 7=37h
Message DB ‘MESSAGE’ ; réservation d’une zone mémoire de 7 octets initialisés
; avec les codes ASCII des lettres M, E, S, S, A, G et E
Table DB 1,2,3,4,5 ; réservation d’une zone mémoire de 10 octets initialisés
DB 6,7,8,9,10 ; à 1, 2, 3, …, 10 décimal
Premiers DW 1,2,3,5,7 ; réservation d’une zone mémoire de 8 mots 16 bits
DW 11,13,17 ; initialisé à 1, 2,…, 17 décimal

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 157
Directives de l’Assembleur
DATA SEGMENT
Table1 DB 00h, ‘1’, 7Fh, ?, ‘012345’
Table2 DB 5 DUP(9), 49h, 70h, 0FFh, 01h, 1Eh
Nombre1 DW 1 DATA
Nombre2 DD 2
10001h 31h 00h 10000h
DATA ENDS
10003h ? 7Fh 10002h
10005h 31h 30h 10004h
10007h 33h 32h 10006h
10009h 35h 34h 10008h
1000Bh 09h 09h 1000Ah
Le segment DATA est pointé par
1000Dh 09h 09h 1000Ch
le registre DS et (DS) = 1000h
1000Fh 49h 09h 1000Eh
10011h FFh 70h 10010h
10013h 1Eh 01h 10012h
10015h 00h 01h 10014h
10017h 00h 02h 10016h
10019h 00h 00h 10018h
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 158
Jeux d’instructions

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 159
Exercices

Exercise 2 : (2,5 points)


On donne le contenu des registres internes du µP 8086 suivants :

(CS) = 1000h (DS) = 2000h (SS) = 3000h (ES) = 4000h


(IP) = 0100h (BX) = 00FFh (BP) = 0500h (SP) = 000Ah
(SI) = C000h (DI) = 0000h (AX) = 1234h

a- Donner l’adresse physique de la prochaine instruction à exécuter.


b- Donner l’adresse physique du sommet de la pile.
c- Donner l’adresse physique pointée par le registre BP, SI, DI et BX ?

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 160
Exercices

Exercice 1: (4 points)
On suppose que les registres du 8086 sont affectés comme suit :
(DS) = E000h (SS) = F000h (SI) = 10A0h (DI) = 400h
(BP) = 0A00h (SP) = 100h (AX) = 1234h (BX) = 10h

Calculer les adresses mémoires éventuelles affectées et déterminer leurs contenus après exécution de
chaque instruction de la séquence suivante :
MOV [BX], AX
INC BYTE PTR [BX]
ADD [BX], AH
MOV SS :[BX+10h], AL
MOV [BP+DI], 8086h
MOV [BX+SI], 8086h
ADD [BP+DI], ‘1’

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 161
Exercices

Exercice 3: (2 points)
Parmi les instructions suivantes sélectionner celles qui ont des erreurs de syntaxe.
MOV DS, 8086h
MOV AX, [BP]
MOV [SI+DI], AX
INC [SS]
MOV BX, [BP+DI]
MOV [BP+BX], 100h
MOV SS, DS
ADD BX:[SI], AX
PUSH AL

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 162
Exercices
Exercise 1 : (2,5 points) Soit le segment de données suivant :

DATA SEGMENT
Ascii_0 DB 30h
Ascii_1 DB ‘1’
Ascii_2 DB 32h
Ascii_3 DB 33h
Table DW 1 , ‘9’ , 1234h , ? , 3
DD 1,2
DATA ENDS

a- (1,5 points) Sachant que le registre DS contient 100h, donner l’image du segment DATA par
rapport au registre DS.

b- (1 point) Donner le contenu du registre AL après l’exécution de la séquence suivante :


MOV AL, 2
XLAT Ascii_0 ; AL = ?
MOV AL, 10
XLAT Ascii_0 ; AL = ?

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 163
Exercices
Exercice 2: (5 points)
Soit le segment de données suivant :
DATA SEGMENT
Table1 DB 00h, ‘1’, 7Fh, ?,’012345’
Table2 DB 5 DUP(9), 49h, 70h, 0FFh, 01h, 1Eh
Nombre1 DW 1
Nombre2 DD 2
DATA ENDS

a- Sachant que l’adresse de DATA est 1000h et que le registre DS contient cette adresse, donner
l’image mémoire du segment DATA (2 points).

b- Ecrire un sous programme qui permet d’échanger la Table1 avec la Table2 (permutation dans les
deux sens) (3 points).

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 164
Exercices
Exercice 5 : (4 points) Soit le sous programme suivant :

SousProg Proc near


Push ax
Push cx
Mov ah, 0
Mov cx, 8
Mov al, var
Boucle : Shl al, 1
Jnc Saut
Inc ah
Saut : loop Boucle
Mov resultat, ah
Pop cx
Pop ax
Ret
SousProg endp

Les variables var et resultat sont deux cases mémoires d’un octet chacune réservées dans le segment de
données.
a- Expliquer le fonctionnement de l’instruction Loop.
b- Donner le contenu des mémoires resultat et var.
c- En déduire la fonction réalisée par le sous programme SousProg.

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 165
Exercise 3 : (6 points) Exercices
Soit le programme à compléter suivant :
.8086
; **************************************************************************
PILE SEGMENT STACK
DW 100 DUP( ?)
PILE ENDS
; **************************************************************************
DATA SEGMENT
BUFFEUR DB -10h, 90h, 60h, -80h, -20h, 30h, 40h, 50h,-98h, -99h
NBPOSITIF DB 10 DUP(0)
NBNEGATIF DB 10 DUP(0)
DATA ENDS
; **************************************************************************
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:PILE
SOUSPROG PROC NEAR
......
......
RET
SOUSPROG ENDP
; -----------------------------------------------------------------------
PROGPRINC :
CALL SOUSPROG
CODE ENDS
END PROGPRINC
Le sous programme SOUSPROG permet d’isoler les nombres positifs des nombres
négatifs de BUFFEUR. Les nombres positifs de BUFFEUR seront transférer dans
NBPOSITIF et ceux négatifs dans NBNEGATIF. Compléter le programme précédent en
traduisant l’organigramme ci-dessus de SOUSPROG en codes symboliques du µP 8086.
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 166
Exercices
Sauvegarde dans la pile de tous les registres affectés

Adresse de DATA dans DS

Registre BX pointe BUFFEUR

Registre SI pointe NBPOSITIF

Registre DI pointe NBNEGATIF

Le registre CX contient la taille de BUFFEUR

AL  Nombre pointé par BX

AH  AL

OUI NON
(AH) Négatif (BIT 7 de AH = 1) ?

Mémoire pointé par DI  (AL) Mémoire pointé par SI  (AL)

(DI) + 1  DI (SI) + 1  SI

NON
(CX) – 1  CX (CX) = 0 ?

OUI
Récupération de la pile des registres affectés

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 167
Les Entrées/Sorties

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 168
Les Entrées/Sorties

ALE

A16 – A19 LATCHES


A0 – A19 MEMOIRE A0 – A15 ENTREES/SORTIES
8282/83 (1 MO) (64 Ko)
AD0-AD15

µP
8086
Transmetteur
Bidirectionnel D0 – D15 D0 – D15
8286/87
WR/ WR/
DEN\ RD/ RD/
DT – R\ CS CS\
M – IO\ RD\ WR\

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 169
Les Entrées/Sorties
• Chez MOTOROLA, dans le même champ adressable par le µP,
on peut avoir la mémoire et les E/S.
• Chez INTEL, l’accès au champ mémoire est séparé de celui du
champ E/S
• Le champ E/S du µP 8086 est accessible par le bus A0-A15 donc
ce champ a une capacité de 64 Koctets
• Dans le champ E/S, on trouve les périphériques comme le
Timer 8253, le PIC 8259, le PIO 8255,…
• Le dialogue entre le µP et un périphérique se fait uniquement
avec les instructions IN et OUT
• Les instructions IN et OUT positionnent la ligne M-IO\ à la
masse
• La LECTURE d’un port E/S se fait avec l’instruction IN
• L’ECRITURE dans un port E/S se fait avec l’instruction OUT
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 170
Syntaxe des instructions IN et OUT

 00h  Adresse_Port_E/S  FFh


• Lecture d’un mot de 8 bits:
IN AL, Adresse_Port_E/S
Exemple:
IN AL, 10h ; Lecture de l’octet contenu dans le port d’adresse 10h
; avec port 10h  AL

• Lecture d’un mot de 16 bits:


IN AX, Adresse_Port_E/S
Exemple:
IN AX, 0FEh ; Lecture du mot 16 bits contenu dans les ports d’adresse
; FEh et FFh avec port FEh  AL et port FFh  AH

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 171
Syntaxe des instructions IN et OUT

 00h  Adresse_Port_E/S  FFh


• Ecriture d’un mot de 8 bits:
OUT Adresse_Port_E/S , AL
Exemple:
OUT 20h, AL ; Ecriture de l’octet contenu dans AL dans le port
; d’adresse 20h

• Ecriture d’un mot de 16 bits:


OUT Adresse_Port_E/S , AX
Exemple:
OUT 0FEh, AX ; Ecriture du mot 16 bits de AX dans les ports d’adresse
; FEh et FFh avec (AL)  FEh et (AH)  FFh

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 172
Syntaxe des instructions IN et OUT
 0000h  Adresse_Port_E/S  FFFFh
• Lecture d’un mot de 8 bits:
MOV DX, Adresse_Port_E/S
IN AL, DX
Exemple:
MOV DX, 0E000h ; Adresse_Port_E/S dans le registre DX
IN AL, DX ; Lecture de l’octet contenu dans le port pointé par DX
; port E000h  AL

• Lecture d’un mot de 16 bits:


MOV DX, Adresse_Port_E/S
IN AX, DX
Exemple:
MOV DX, 0E000h ; Adresse_Port_E/S dans le registre DX
IN AX, DX ; Lecture du mot 16 bits contenu dans les ports d’adresse
; E000h et E001h avec E000h  AL et E001h  AH

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 173
Syntaxe des instructions IN et OUT
 0000h  Adresse_Port_E/S  FFFFh
• Ecriture d’un mot de 8 bits:
MOV DX, Adresse_Port_E/S
OUT DX, AL
Exemple:
MOV DX, 0E000h ; Adresse_Port_E/S dans le registre DX
OUT DX, AL ; Ecriture de l’octet contenu dans AL dans le port pointé par DX
; (AL)  port E000h

• Ecriture d’un mot de 16 bits:


MOV DX, Adresse_Port_E/S
OUT DX , AX
Exemple:
MOV DX, 0E000h ; Adresse_Port_E/S dans le registre DX
OUT DX, AX ; Ecriture du mot 16 bits de AX dans les ports d’adresse
; E000h et E001h avec (AL)  E000h et (AH)  E001h

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 174
Interface Programmable Parallèle:
PIO 8255
A1 A0 CS\ D7 – D0 RD\ WR\

COMMANDE

PORTC_H PORTC_L PORTB PORTA

PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0

 MODE0: Les PORTA, PORTB, PORTC_H et PORTC_L peuvent être


programmés en entrées ou en sorties.

 MODE1: Chaque PORTA et PORTB se sert d’un quartet du PORTC


pour la gestion des échanges en poignée de main.

 MODE2: Le PORTA est intégralement bidirectionnel et le PORTC lui


sert comme lignes de commandes des échanges.
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 175
Interface Programmable Parallèle:
PIO 8255

Port A
PORTA PORTC_H

Commande
Indicateur 0 : OUTPUT =0 si MODE0 0 : OUTPUT
1 : ACTIF 1 : INPUT =1 si MODE1 1 : INPUT

Port B
D7 D6 D5 D4 D3 D2 D1 D0

Port C
00 : MODE0 PORTC_L PORTB
01 : MODE1 0 : OUTPUT 0 : OUTPUT
10 ou 11 : MODE2 1 : INPUT 1 : INPUT

CS\ RD\ WR\ A1 A0 Type Opération


0 0 1 0 0 Lecture PORTA vers le bus de données
0 1 Lecture PORTB vers le bus de données
1 0 Lecture PORTC vers le bus de données
1 1 Interdit Interdit
0 1 0 0 0 Ecriture Bus de données vers le PORTA
Ecriture Bus de données vers le PORTB
Ecriture Bus de données vers le PORTC
Ecriture Bus de données vers le registre de COMMANDE
1 X X X X Inhibition Bus de données en Haute Impédance
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 176
Interface Programmable Parallèle:
PIO 8255
Exemple: Soit un carrefour ayant une voie principale et une voie secondaire. La voie Principale est
toujours au vert sauf lorsqu’un capteur détecte la présence d’une voiture sur la voie secondaire. Dans
ce cas, le feux tricolores bascule au vert pour la voie secondaire pendant 1 minute. Si plusieurs
voitures sont détectées sur la voie secondaire, le feux vert de ce carrefour fonctionne alternativement
pendant 3 minutes pour la voie principale et pendant 1 minute pour la voie secondaire. Un feux
orange dure 5 secondes. Ecrire le programme assembleur qui commande ce carrefour.

A1 A0 CS\ D7 – D0 RD\ WR\


Adresse E/S du PIO
378h – 37Bh COMMANDE

PORTC_H PORTC_L PORTB PORTA

PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0

5V

Capteur
Voie Secondaire Voie Principale
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 177
Interface Programmable Parallèle:
PIO 8255 http://www.aurel32.net/elec/port_parallele.php
VertPrincipal:
.8086 MOV DX, PORTB
MOV AL, 10000001b ; Rouge Secondaire et Vert Principale
PORTA EQU 378h ; détails OUT DX, AL
PORTB EQU 379h TestCapteur:
PORTC EQU 37Ah MOV DX, PORTA
COMMANDE EQU 37Bh IN AL, DX ; Lecture du PORTA
AND AL, 00010000b ; Isolation du bit PA4
PILE SEGMENT STACK JNZ TestCapteur ; Si PA4 = 1 alors Vert Voie Principale
DW 100 DUP(?)
PILE ENDS MOV DX, PORTB
MOV AL, 10000010b ; Rouge Secondaire et Orange Principale
DATA SEGMENT OUT DX, AL
CALL TEMPO_5sec ; Temprisation 5 secondes
DATA ENDS
MOV AL, 00100100b ; Vert Secondaire et Rouge Principale
CODE SEGMENT OUT DX, AL
ASSUME CS: CODE, DS: DATA, SS: PILE CALL TEMPO_1min ; Temporisation 1 minute

TEMPO_5sec PROC NEAR MOV AL, 01000100b ; Orange Secondaire et Rouge Principale
RET OUT DX, AL
TEMPO_5sec ENDP CALL TEMPO_5sec ; Temporisation 5 secondes

TEMPO_1min PROC NEAR MOV AL, 10000001b ; Rouge Secondaire et Vert Principale
RET OUT DX, AL
TEMPO_1min ENDP CALL TEMPO_3min ; Temporisation 3 minutes
JMP VertPrincipal
TEMPO_3min PROC NEAR
RET CODE ENDS
TEMPO_3min ENDP END ProgPrinc

ProgPrinc: ; Début du programme principal


MOV DX, COMMANDE
MOV AL, 10010000b ; PORTA en Entrée, PORTB en Sortie et PORTC en Sortie (non utilisé)
OUT DX, AL
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 178
TIMER Programmable 8253
20 19 21 1-8
22 23
A1 A0 CS\ D7 – D0 RD\ WR\
24
VCC
12
COMMANDE GND

COMPTEUR2 COMPTEUR1 COMPTEUR0

OUT2 GATE2 CLK2 OUT1 GATE1 CLK1 OUT0 GATE0 CLK0

17 16 18 13 14 15 10 11 9

• CLKx : Horloge permettant la décrémentation du compteur x


sur chaque front descendant de CLKx.
• GATEx : 0 : Arrêt du décomptage du compteur x
1 : Autorisation du décomptage du compteur x
• OUTx : Sortie du compteur x (voir les 6 modes)

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 179
TIMER Programmable 8253
20 19 21 1-8
22 23
A1 A0 CS\ D7 – D0 RD\ WR\
24
VCC
12
COMMANDE GND

COMPTEUR2 COMPTEUR1 COMPTEUR0

OUT2 GATE2 CLK2 OUT1 GATE1 CLK1 OUT0 GATE0 CLK0

17 16 18 13 14 15 10 11 9

CS/ RD/ WR/ A1 A0 FONCTION


0 1 0 0 0 Chargement du Compteur 0
0 1 Chargement du Compteur 1
1 0 Chargement du Compteur 2
1 1 Ecriture du mot de Commande
0 0 1 0 0 Lecture du Compteur0
0 1 Lecture du Compteur1
1 0 Lecture du Compteur2
1 1 Pas d’opération : 3eme Etat
1 X X X X 3eme Etat
0 1 1 X X Pas d’opération : 3eme Etat

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 180
TIMER Programmable 8253

Registre de COMMANDE
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC2 RL1 RL2 M2 M1 M0 BCD

00 : Mode pour Compteur 0 000 : MODE0 0 : Compteur binaire 16 bits


01 : Mode pour Compteur 1 001 : MODE1 1 : Compteur BCD sur 4 digits
10 : Mode pour Compteur 2 010 : MODE2
11 : Interdit 011 : MODE3
100 : MODE4
101 : MODE5

00 : Verrouillage du compte instantané pour lecture au vol


01 : Lecture ou Chargement de l’octet du poids faible uniquement
10 : Lecture ou Chargement de l’octet du poids fort uniquement
11 : Lecture ou Chargement de l’octet de poids faible, puis de l’octet de poids fort

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 181
TIMER Programmable 8253
 MODE 0 : Envoie une interruption en fin de décomptage

CLKx

N=4
WR\
4 3 2 1 0
OUTx (GATEx = 1)

N=4
WR\
4 3 2 1 0

GATEx
4 3 3 3 2 1 0
OUTx (GATEx variable)

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 182
TIMER Programmable 8253
 MODE 1 : Monostable

CLKx

N=3
WR\

GATEx

3 2 1 0

OUTx

GATEx

3 2 3 2 1 0

OUTx

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 183
TIMER Programmable 8253
 MODE 2 : Générateur de Rythme

CLKx

N=4
WR\

4 3 2 1 4 3 2 1 4
OUTx

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 184
TIMER Programmable 8253
 MODE 3 : Générateur d’onde carrée

CLKx

N=4
WR\
4 3 2 1 4 3 2 1 4

OUTx

N pair : OUTx = 1 pour Compteur x entre N et N/2


OUTx = 0 pour Compteur entre N/2 et 0
N=5
WR\
5 4 3 2 1 5 4 3 2

OUTx

N impair : OUTx = 1 pour Compteur x entre N et (N-1)/2


OUTx = 0 pour Compteur x entre (N-1)/2 et 0

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 185
TIMER Programmable 8253
 MODE 4 : Déclenchement Logiciel

CLKx

N=4
WR\

GATEx

4 3 3 4 3 2 1 0

OUTx

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 186
TIMER Programmable 8253
 MODE 5 : Déclenchement Matériel

CLKx

N=3
WR\

GATEx

3 2 1 0
OUTx

GATEx

3 2 3 2 1 0
OUTx

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 187
TIMER Programmable 8253
Exemple:
On veut générer un signal carrée de fréquence 1 KHz sur la
sortie OUT1 du TIMER 8253 sachant que la fréquence d’horloge
CLK1 est 1 MHz. Le TIMER 8253 peut être adressé dans le champ
Entrée/Sortie entre 40h et 43h.

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 188
TIMER Programmable 8253
Exemple:
On veut générer un signal carrée de fréquence 1 KHz sur la
sortie OUT1 du TIMER 8253 sachant que la fréquence d’horloge
CLK1 est 1 MHz. Le TIMER 8253 peut être adressé dans le champ
Entrée/Sortie entre 40h et 43h.

 MODE 3 : Générateur d’onde carrée

CLKx

N=4
WR\
4 3 2 1 4 3 2 1 4

OUTx

N pair : OUTx = 1 pour Compteur x entre N et N/2


OUTx = 0 pour Compteur entre N/2 et 0

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 189
TIMER Programmable 8253
Exemple:
On veut générer un signal carrée de fréquence 1 KHz sur la sortie OUT1
du TIMER 8253 sachant que la fréquence d’horloge CLK1 est 1 MHz. Le
TIMER 8253 peut être adressé dans le champ Entrée/Sortie entre 40h et 43h.

N = 1000000 / 1000 = 1000 = 03E8h

Configuration possible du registre de COMMANDE:

01 01 011 0 : Compteur1, Chargement du LSB, MODE 3, Décomptage en Binaire

01 10 011 0 : Compteur1, Chargement du MSB, MODE 3, Décomptage en Binaire

01 11 011 0 : Compteur1, Chargement du LSB puis du MSB, MODE 3, Décomptage en Binaire

01 11 011 1 : Compteur1, Chargement en BCD du LSB puis du MSB, MODE 3,


Décomptage en BCD

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 190
.8086
TIMER Programmable 8253
COMPTEUR0 EQU 40h
COMPTEUR1 EQU 41h
COMPTEUR2 EQU 42h
COMMANDE EQU 43h

PILE SEGMENT STACK


DW 100 DUP(?)
PILE ENDS

DATA SEGMENT

DATA ENDS

CODE SEGMENT
ASSUME CS: CODE, DS: DATA, SS: PILE
ProgPrinc:
MOV AX, DATA
MOV DS, AX

MOV AL, 01010110b ; Compteur1 décompte en Binaire suivant le mode 3


OUT COMMANDE, AL ; Configuration pour le chargement du LSB dans le Compteur1
MOV AL, 0E8h
OUT COMPTEUR1, AL ; Chargement du LSB dans le Compteur1

MOV AL, 01100110b ; Compteur1 décompte en Binaire suivant le mode 3


OUT COMMANDE, AL ; Configuration pour le chargement du MSB dans le Compteur1
MOV AL, 03h
OUT COMPTEUR1, AL ; Chargement du MSB dans le Compteur1
CODE ENDS
END ProgPrinc
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 191
.8086
TIMER Programmable 8253
COMPTEUR0 EQU 40h
COMPTEUR1 EQU 41h
COMPTEUR2 EQU 42h
COMMANDE EQU 43h

PILE SEGMENT STACK


DW 100 DUP(?)
PILE ENDS

DATA SEGMENT

DATA ENDS

CODE SEGMENT
ASSUME CS: CODE, DS: DATA, SS: PILE
ProgPrinc:
MOV AX, DATA
MOV DS, AX

MOV AL, 01110110b ; Compteur1 décompte en Binaire suivant le mode 3


OUT COMMANDE, AL ; Configuration pour le chargement du LSB puis le MSB dans le Compteur1

MOV AL, 0E8h


OUT COMPTEUR1, AL ; Chargement du LSB dans le Compteur1

MOV AL, 03h


OUT COMPTEUR1, AL ; Chargement du MSB dans le Compteur1
CODE ENDS
END ProgPrinc

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 192
.8086
TIMER Programmable 8253
COMPTEUR0 EQU 40h
COMPTEUR1 EQU 41h
COMPTEUR2 EQU 42h
COMMANDE EQU 43h

PILE SEGMENT STACK


DW 100 DUP(?)
PILE ENDS

DATA SEGMENT

DATA ENDS

CODE SEGMENT
ASSUME CS: CODE, DS: DATA, SS: PILE
ProgPrinc:
MOV AX, DATA
MOV DS, AX

MOV AL, 01110111b ; Compteur1 décompte en BCD suivant le mode 3


OUT COMMANDE, AL ; Configuration pour le chargement du LSB puis le MSB dans le Compteur1

MOV AL, 00h


OUT COMPTEUR1, AL ; Chargement du LSB en BCD dans le Compteur1

MOV AL, 10h


OUT COMPTEUR1, AL ; Chargement du MSB en BCD dans le Compteur1
CODE ENDS
END ProgPrinc

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 193
TIMER Programmable 8253
 Lecture au vol d’un COMPTEUR:
MOV AL, 01000110b
Registre de COMMANDE OUT
MOV
43h, AL
AL, 01110110b
OUT 43h, AL
D7 D6 D5 D4 D3 D2 D1 D0
IN AL, 41h
SC1 SC2 RL1 RL2 M2 M1 M0 BCD MOV AH, AL
IN AL, 41h
XCHG AL, AH

00 : Mode pour Compteur 0 000 : MODE0 0 : Compteur binaire 16 bits


01 : Mode pour Compteur 1 001 : MODE1 1 : Compteur BCD sur 4 digits
10 : Mode pour Compteur 2 010 : MODE2
11 : Interdit 011 : MODE3
100 : MODE4
101 : MODE5

00 : Verrouillage du compte instantané pour lecture au vol


01 : Lecture ou Chargement de l’octet du poids faible uniquement
10 : Lecture ou Chargement de l’octet du poids fort uniquement
11 : Lecture ou Chargement de l’octet de poids faible, puis de l’octet de poids fort

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 194
TIMER Programmable 8253
 Interfaçage du TIMER 8253 dans un microordinateur PC – IBM:

1-8
20 19 21 22 23

A1 A0 CS D7 – D0 RD WR
24
VCC
12
COMMANDE TIMER 8253 GND

COMPTEUR2 COMPTEUR1 COMPTEUR0

OUT2 GATE2 CLK2 OUT1 GATE1 CLK1 OUT0 GATE0 CLK0

17 16 18 13 14 15 10 11 9

Haut Parleur DMA pour rafraîchir la IRQ0 du PIC


Interne RAM Dynamique Horloge Système

PC-IBM

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 195
TIMER Programmable 8253
 Exercice:
Ecrire le sous-programme ‘’Tempo10s’’ qui réalise une temporisation de 10 secondes sur le
compteur 0 du TIMER 8253 sachant que la fréquence de CLK0 est de 1 MHz, suivant
l’organigramme ci-dessous :
Nombre R de Relancement du compteur 0  registre CX

Compteur 0 en mode 0, lecture ou chargement du LSB puis du MSB, compteur binaire 16 bits  Registre Commande

Le nombre N sur 16 bits Octet LSB de N  Compteur 0


est la valeur de chargement
dans le compteur 0. Le nombre Octet MSB de N  Compteur 0

R est le nombre de
rechargement du compteur 0 Poids faible (LSB) du Compteur 0  AL
afin d’avoir :
AL  AH

Temporisation 10
Poids fort (MSB) du Compteur 0  AL
secondes = N * R / 1000000
Non
AX = 0 ?
Oui
Non
(CX) – 1  CX
CX = 0 ?
Oui

Retour du Sous Programme Tempo10s

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 196
Les interruptions

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 197
Les interruptions

Il existe 2 types d’interruptions :

 Interruption Logiciel (Software):


INT n avec 00h  n  FFh

 Interruption Matériel (Hardware):


Activée par un périphérique

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 198
Les interruptions

 Interruption Logiciel (Software):


Cette interruption est gérée par le programmeur et son activation
est donc prévisible dans le déroulement des instructions. Cette interruption
se traduit par l'instruction:
INT n

n est le numéro d’interruption avec 00h  n  FFh

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 199
Les interruptions
 Interruption Logiciel (Software):
Le numéro d'interruption n permet d'adresser la table des vecteurs
d'interruption et d'obtenir l'adresse physique CSn:IPn de la procédure d'interruption
numéro n :
0000:0001 IP0 0000:0000
Vecteur d’interruption n = 0 0000:0003 CS0 0000:0002
0000:0005 IP1 0000:0004
0000:0007 CS1 0000:0006
0000:0009 IP2 0000:0008
0000:000B CS2 0000:000A

Programme
principal
.........
.........
Programme CSn :IPn IPn 0000:4n INT n
d’interruption CSn 0000:4n+2 .........
..... .........
..... END
.....
IRET
0000:00FD IP255 0000:00FC
Vecteur d’interruption n = 255 0000:00FF CS255 0000:00FE

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 200
Les interruptions
 Interruption Logiciel (Software):

 Une interruption logicielle peut avoir plusieurs services. Un service


d’une interruption codé sur 8 bits doit être mis dans le registre AH.

 Un service d’une interruption logicielle peut avoir des Conditions


d’Entrées (CE)

 Un service d’une interruption logicielle exécute un sous


programme d’interruption qui peut avoir des Conditions de Sorties
(CS)

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 201
GESTION VIDEO: INT 10h
L’interruption 10H du BIOS est utilisée pour assurer la gestion de l’écran. Elle permet d’adresser, lire et
modifier les caractéristiques de l’interfaces vidéo ou les caractères affichés. Elles permet en outre d’effectuer
une série d’opérations différentes. Ces opérations sont sélectionnées en fonction du contenu du registre AH au
moment de l'appel de l’interruption. Les appels de l’interruption 10H préservent les registres CS, DS, SS, ES,
BX, CX et DX.
Code AH FONCTION
00H Positionne l’écran dans le mode choisi
CE : AL contient le mode choisi :
AL=0 : texte 40x25 monochrome
AL=1 : texte 40x25 couleur
AL=2 : texte 80x25 monochrome
AL=3 : texte 80x25 couleur
AL=4 : graphique 320x200 couleur
AL=5 : graphique 320x200 monochrome
AL=6 : graphique 640x200 monochrome
AL=7 : texte 80x25 monochrome avec carte mono
CS : rien
01H Sélectionne le format du curseur
CE : les bits B0 à B4 de CH contiennent la ligne de début du curseur,
les bits B0 à B4 de CL contiennent la ligne de fin de curseur,
les bits B5 à B7 des deux registres sont à 0
CS : rien
02H Positionne le curseur en absolu
CE : DH contient la ligne
DL contient la colonne
BH contient le numéro de la page écran
CS : rien

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 202
GESTION VIDEO: INT 10h
Code AH FONCTION
03H Lecture de la position et du format du curseur
CE : BH contient le numéro de la page écran
CS : DH contient la ligne (écran)
DL contient la colonne (écran)
CH contient la ligne (trame) du début du curseur
CL contient la ligne (trame) de fin du curseur

04H Lecture de la position du crayon optique


CE : rien
CS : AH contient l’état de l’interruption
Si AH=1 alors :
DH contient la ligne de la position du crayon
DL contient la colonne de la position du crayon
CH contient la ligne trame (0 à 139)
BX contient le point (0 à 319 ou 639)

05H Sélectionne une page active


CE : AL contient le numéro de la page écran à activer
CS : rien

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 203
GESTION VIDEO: INT 10h
Code AH FONCTION
0AH Ecriture d’un caractère et de ces attributs de visualisation à la position
courante du curseur
CE : BH contient la page écran
AL contient le caractère à écrire
CX contient le nombre de fois qu’il faut écrire le caractère
CS : rien
0BH Sélection de la palette de couleurs en mode graphique. Actuellement, seul
le mode 320x200 utilise cette fonction. Dans ce mode, si BH=0, il permet la
modification de la couleur de fond avec la valeur contenue dans BL(0 à 15).
Si BH=1, alors BL sélectionne une des deux palettes disponibles
CE : BH contient l’identificateur de la couleur dans la palette
CS : rien
0CH Ecriture d’un point graphique
CE : DX contient la coordonnée verticale du point à afficher (0- 199)
CX contient la coordonnée horizontale du point à afficher (0 à 319 ou 639)
AL contient la couleur du point. Si le bit 7 de AL est positionné à 1, le
système exécute un OU EXCLUSIF entre la couleur courante du point et la
couleur contenu dans les bits B0 à B6 de AL.
CS : rien
ODH Lecture d’un point graphique
CE : DX contient la coordonnée verticale du point à lire (0 à 199)
CX contient la coordonnée horizontale du point à lire (0 à 310 ou 639)
CS : AL contient la couleur du point lu

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 204
GESTION VIDEO: INT 10h
Code AH FONCTION
0EH Ecriture d’un caractère sur l’écran avec avance du curseur. L’écran est
considéré comme simple terminal. Cette routine teste les retours arrière
(BACKSPACE), les retours chariot (RC), et les LINE FEED (LF) et la
sonnette (BELL). Elle gère également le SCROLLING de l’écran
CE : AL contient le caractère à écrire
BL contient la couleur éventuelle du caractère
BH contient le numéro de la page écran
CS : rien
0FH Lecture de l’état courante de l’interface vidéo
CE : rien
CS : AL contient le mode courant (voir fonction 00H)
AH contient le nombre de caractère par ligne
BH contient le numéro de la page active

10H Réservé
11H Réservé
12H Résevé

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 205
Les interruptions
 Interruption Logiciel (Software): Exemples

Code AH FONCTION
09H Affichage d’un texte à la console : affiche le texte pointé par DX et terminé
par un signe $ sur STDOUT.
CE : DS :DX pointe sur le texte
CS : rien

DATA SEGMENT
message DB "Entrer un nombre décimal : $"
DATA ENDS

; -- affichage d'un message --


LDS DX, message ; préparation du contexte de l'interruption: DX pointe message
MOV AH, 9 ; AH contient le service 9 de l'interruption 21h
INT 21h ; appel de l'interruption logicielle 21h

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 206
Les interruptions
 Interruption Logiciel (Software): Exemples

Code AH FONCTION
0AH Lecture d’une ligne à la console : le contenu du tampon pointé par DS :DX
est utilisé comme GABARIT d’édition. Tous les caractères reçus en
provenance de STDIN sont placés dans le tampon jusqu’à réception d’un
retour chariot (RC). Le premier caractère du tampon, ne peut être égal à
zéro, spécifie le nombre de caractère que le tampon peut contenir. En
sortie , le deuxième octet du tampon contient le nombre de caractères
entrés. Le troisième octet contient le premier caractère tapé.
CE : DS :DX pointe sur le tampon
CS : rien

DATA SEGMENT
Buf_saisie DB 80, ?, 80 DUP(?)
DATA ENDS

; -- saisie clavier et mémorisation --


LEA DX, Buf_saisie ; préparation du contexe de l'interruption: DX pointe Buf_saisie
MOV AH, 10 ; AH contient le service 0Ah de l'interruption 21h
INT 21h ; appel de l'interruption logicielle 21h

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 207
Les interruptions
 Interruption Logiciel (Software): Exemples

Code AH FONCTION
01H Lecture du tampon pour déterminer si un caractère est disponible
CE : rien
CS : Si un caractère est disponible, le sémaphore de zéro (ZF) est mis à zéro.
Sinon, le sémaphore de zéro est mis à un. Si ZF=0, alors AL contient le
caractère et AH contient le SCAN CODE.
Remarque : le caractère n’est pas retiré du tampon.

; -- test si tampon clavier contient un caractère --


MOV AH, 1 ; ah contient le service 1 de l'interruption 16h
INT 16h ; appel de l'interruption logicielle 16h

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 208
Les interruptions
 Interruption Matériel (Hardware):
 Interruption RESET:
L'activation de la ligne RESET sur le niveau haut provoque l’exécution du programme
d’initialisation du système qu’on appelle MONITEUR. Cette ligne est activée lorsqu'on démarre le micro-
ordinateur ou lorsqu'on appuie sur le bouton RESET. Le programme MONITEUR se trouve dans une
mémoire de type ROM.

MASSE 1 40 VCC
AD14 2 39 AD15
AD13 3 38 A16 S3
AD12 4 37 A17 S4
AD11 5 36 A18 S5
AD10 6 35 A19 S6
AD9 7 34 BHE/ S7
AD8 8 33 MN – MX/
AD7 9 32 RD/
AD6 10 8086 31 HOLD (RQ/ GT0/)
AD5 11 30 HLDA (RQ/ GT1/)
AD4 12 29 WR/ (LOCK)
AD3 13 28 M – IO/ (S2/)
AD2 14 27 DT – R/ (S1/)
AD1 15 26 DEN/ (S0/)
AD0 16 25 ALE (QS0)
NMI 17 24 INTA/ (QS1)
INTR 18 23 TEST/
CLK 19 22 READY
MASSE 20 21 RESET

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 209
Les interruptions
 Interruption Matériel (Hardware):
 Interruption NMI:
L'activation de la ligne NMI sur le niveau haut provoque une Interruption Non Masquée. Dès
qu'un périphérique active cette ligne, le µP arrête immédiatement l'exécution du programme courante et
exécute la routine d'interruption NMI numéro 2 dont ces deux vecteurs IP_NMI et CS_NMI se trouvent
aux adresses 08h et 0Ah :
IP2 = IP_NMI 0000 :4*2 = 08h
CS2 = CS_NMI 0000 :4*2+2 = 0Ah

MASSE 1 40 VCC
AD14 2 39 AD15
AD13 3 38 A16 S3
AD12 4 37 A17 S4
Généralement, l'interruption NMI est utilisée pour AD11 5 36 A18 S5
des cas urgents comme la détection d’incendie, AD10
AD9
6 35 A19
BHE/
S6
S7
7 34
sauvegarde des données dès qu’il y a une coupure AD8 8 33 MN – MX/
d'alimentation,... AD7 9 32 RD/
AD6 10 8086 31 HOLD (RQ/ GT0/)
AD5 11 30 HLDA (RQ/ GT1/)
AD4 12 29 WR/ (LOCK)
AD3 13 28 M – IO/ (S2/)
AD2 14 27 DT – R/ (S1/)
AD1 15 26 DEN/ (S0/)
AD0 16 25 ALE (QS0)
NMI 17 24 INTA/ (QS1)
INTR 18 23 TEST/
CLK 19 22 READY
MASSE 20 21 RESET

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 210
Les interruptions
 Interruption Matériel (Hardware):
 Interruption INTR:
L'activation de la ligne INTR se fait sur le niveau haut. C’est une ligne d’interruption
masquable par un bit du registre d’état appelé IF ou Interrupt Flag. Lors de l’activation de cette ligne, le
microprocesseur consulte le bit IF et exécute une routine d’interruption s’il trouve IF=1, sinon
l’interruption est masquée. Ce bit peut être positionné par le programmeur avec les instructions suivantes:
CLI ; IF=0 ( interruption non autorisé)
STI ; IF=1 (interruption autorisé)

MASSE 1 40 VCC
AD14 2 39 AD15
Dans un ordinateur, plusieurs périphériques AD13 3 38 A16 S3
AD12 4 37 A17 S4
peuvent demander une interruption au AD11 5 36 A18 S5
microprocesseur sur la ligne INTR: TIMER, AD10 6 35 A19 S6
CLAVIER, IMPRIMANTE, LECTEUR AD9 7 34 BHE/ S7
AD8 8 33 MN – MX/
DISQUETTE, SOURIS,... Lorsque plusieurs AD7 9 32 RD/
interruptions se présentent, le microprocesseur AD6 10 8086 31 HOLD (RQ/ GT0/)
AD5 HLDA (RQ/ GT1/)
doit les traiter avec un ordre de priorité. AD4
11
12
30
29 WR/ (LOCK)
AD3 13 28 M – IO/ (S2/)
AD2 14 27 DT – R/ (S1/)
AD1 15 26 DEN/ (S0/)
AD0 16 25 ALE (QS0)
NMI 17 24 INTA/ (QS1)
INTR 18 23 TEST/
CLK 19 22 READY
MASSE 20 21 RESET

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 211
Les interruptions
 Interruption Matériel (Hardware):
 Interruption INTR:
Contrôleur Programmable d’Interruption PIC 8259:

• Le PIC possède 8 lignes d’interruptions IRQ0 à IRQ7 (IRQ :


Interrupt ReQuest).

•Accepte des demandes d'interruptions en provenance des


périphériques (TIMER, CLAVIER, IMPRIMANTE,
LECTEUR DISQUETTE, SOURIS,...),

• Chacun des 8 périphériques géré par le PIC est relié à une


ligne IRQ.

• Classe les demandes d’interruptions suivant un ordre de


priorité et en informe le microprocesseur via la ligne INTR

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 212
Les interruptions
 Interruption Matériel (Hardware):
 Interruption INTR:
IRQ0
TIMER
IRQ1 D0
CLAVIER D1
IRQ2 D2
SOURIE
IRQ3 D3
COM2
D4

Bus de Données
COM1
IRQ4 PIC
D5
DISQUE DUR
IRQ5 8259 D6
IRQ6 D7
DISQUETTE
IRQ7
IMPRIMANTE
CS INTA
INTR

D2

D6
D0
D1

D3
D4
D5

D7
Décodage
µP 8086
d’Adresse
A12
A2

A7
A0
A1

A3
A4
A5
A6

A8
A9
A10
A11

A13
A14
A15
A16
A17
A18
A19
A0
A1
A2
A3
A4
A5
A6
A7

Bus d’Adresses

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 213
Les interruptions
 Interruption Matériel (Hardware):
 Interruption INTR:
0 IRQ0
TIMER
D0
0 IRQ1
CLAVIER D1
1 IRQ2 D2
SOURIE
0 IRQ3 D3
COM2
D4

Bus de Données
COM1
0 IRQ4 PIC
D5
DISQUE DUR
0 IRQ5 8259 D6
0 IRQ6 D7
DISQUETTE
0 IRQ7
IMPRIMANTE
CS INTA
INTR

D2

D6
D0
D1

D3
D4
D5

D7
Décodage
µP 8086
d’Adresse
A12
A2

A7
A0
A1

A3
A4
A5
A6

A8
A9
A10
A11

A13
A14
A15
A16
A17
A18
A19
A0
A1
A2
A3
A4
A5
A6
A7

Bus d’Adresses

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 214
Les interruptions
 Interruption Matériel (Hardware):
 Interruption INTR: Registre de Masque
0 IRQ0
TIMER b0 D0
0 IRQ1
CLAVIER b1 D1
1 IRQ2 D2
SOURIE 0
0 IRQ3 D3
COM2 b3
D4

Bus de Données
COM1
0 IRQ4
b4
PIC
D5
DISQUE DUR
0 IRQ5 8259 D6
b5
0 IRQ6 D7
DISQUETTE b6
0 IRQ7
IMPRIMANTE b7
CS INTA
INTR

D2

D6
D0
D1

D3
D4
D5

D7
Décodage
µP 8086
d’Adresse
A12
A2

A7
A0
A1

A3
A4
A5
A6

A8
A9
A10
A11

A13
A14
A15
A16
A17
A18
A19
A0
A1
A2
A3
A4
A5
A6
A7

Bus d’Adresses

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 215
Les interruptions
 Interruption Matériel (Hardware):
 Interruption INTR:
0 IRQ0
TIMER
D0
0 IRQ1
CLAVIER D1
1 IRQ2 D2
SOURIE
0 IRQ3 D3
COM2
D4

Bus de Données
COM1
0 IRQ4 PIC
D5
DISQUE DUR
0 IRQ5 8259 D6
0 IRQ6 D7
DISQUETTE
0 IRQ7
IMPRIMANTE
CS INTA
INTR

D2

D6
D0
D1

D3
D4
D5

D7
Décodage
µP 8086
d’Adresse
A12
A2

A7
A0
A1

A3
A4
A5
A6

A8
A9
A10
A11

A13
A14
A15
A16
A17
A18
A19
A0
A1
A2
A3
A4
A5
A6
A7

Bus d’Adresses

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 216
Les interruptions
 Interruption Matériel (Hardware):
 Interruption INTR:
0 IRQ0
TIMER
D0
0 IRQ1
CLAVIER D1
1 IRQ2 D2
SOURIE
0 IRQ3 D3
COM2
D4

Bus de Données
COM1
0 IRQ4 PIC
D5
DISQUE DUR
0 IRQ5 8259 D6
0 IRQ6 D7
DISQUETTE
0 IRQ7
IMPRIMANTE
CS INTA
INTR

D2

D6
D0
D1

D3
D4
D5

D7
Décodage IF = 0 ? Si oui
µP 8086
d’Adresse
A12
A2

A7
A0
A1

A3
A4
A5
A6

A8
A9
A10
A11

A13
A14
A15
A16
A17
A18
A19
A0
A1
A2
A3
A4
A5
A6
A7

Bus d’Adresses

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 217
Les interruptions
 Interruption Matériel (Hardware):
 Interruption INTR:
0 IRQ0
TIMER
D0
0 IRQ1
CLAVIER D1
1 IRQ2 D2
SOURIE
0 IRQ3 D3
COM2
D4

Bus de Données
COM1
0 IRQ4 PIC
D5
DISQUE DUR
0 IRQ5 8259 D6
0 IRQ6 D7
DISQUETTE
0 IRQ7
IMPRIMANTE
CS INTA
INTR

D2

D6
D0
D1

D3
D4
D5

D7
Décodage IF = 0 ? Si oui
µP 8086
d’Adresse
A12
A2

A7
A0
A1

A3
A4
A5
A6

A8
A9
A10
A11

A13
A14
A15
A16
A17
A18
A19
A0
A1
A2
A3
A4
A5
A6
A7

Bus d’Adresses

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 218
Les interruptions
 Interruption Matériel (Hardware):
 Interruption INTR:
0 IRQ0
TIMER
D0
0 IRQ1
CLAVIER D1
1 IRQ2 D2
SOURIE
COM2
0 IRQ3 D3
D4 n = 10

Bus de Données
COM1
0 IRQ4 PIC
D5
DISQUE DUR
0 IRQ5 8259 D6
0 IRQ6 D7
DISQUETTE
0 IRQ7
IMPRIMANTE
CS INTA
INTR

D2

D6
D0
D1

D3
D4
D5

D7
Décodage IF = 0 ? Si oui
µP 8086
d’Adresse
A12
A2

A7
A0
A1

A3
A4
A5
A6

A8
A9
A10
A11

A13
A14
A15
A16
A17
A18
A19
A0
A1
A2
A3
A4
A5
A6
A7

Bus d’Adresses

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 219
Les interruptions
 Interruption Matériel (Hardware):
 Interruption INTR:
0 IRQ0
TIMER
D0
0 IRQ1
CLAVIER D1
1 IRQ2 D2
SOURIE
COM2
0 IRQ3 D3
D4 n = 10

Bus de Données
COM1
0 IRQ4 PIC
D5
DISQUE DUR
0 IRQ5 8259 D6
0 IRQ6 D7
DISQUETTE
0 IRQ7
IMPRIMANTE
CS

n = 10
INTA
INTR

D2

D6
D0
D1

D3
D4
D5

D7
Décodage IF = 0 ? Si oui
µP 8086
d’Adresse
A12
A2

A7
A0
A1

A3
A4
A5
A6

A8
A9
A10
A11

A13
A14
A15
A16
A17
A18
A19
A0
A1
A2
A3
A4
A5
A6
A7

Bus d’Adresses

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 220
Les interruptions
 Interruption Matériel (Hardware):
 Interruption INTR:
0 IRQ0
TIMER
D0
0 IRQ1
CLAVIER D1
1 IRQ2 D2
SOURIE
COM2
0 IRQ3 D3
D4 n = 10

Bus de Données
COM1
0 IRQ4 PIC
D5
DISQUE DUR
0 IRQ5 8259 D6
0 IRQ6 D7
DISQUETTE
0 IRQ7
IMPRIMANTE
CS

n = 10
INTA
INTR

D2

D6
D0
D1

D3
D4
D5

D7
Décodage IF = 0 ? Si oui
µP 8086
d’Adresse
IP10 0000 :4*10 = 28h

CS10 0000 :4*10+2 = 2Ah


A12
A2

A7
A0
A1

A3
A4
A5
A6

A8
A9
A10
A11

A13
A14
A15
A16
A17
A18
A19
A0
A1
A2
A3
A4
A5
A6
A7

Bus d’Adresses

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 221
Les interruptions
 Interruption Matériel (Hardware):
 Interruption INTR:
n i
numéro de l’interruption numéro matériel Origine matérielle
dans la table des vecteurs de l’interruption de l’interruption
(0  n  255) (IRQi)
8 0 TIMER
9 1 CLAVIER
10 2 SOURIE
11 3 COM2
12 4 COM1
13 5 DUSQUE DUR
14 6 DISQUETTE
15 7 IMPRIMANTE

Exemple:
L’interruption n = 8, corresponde à l’interruption du TIMER (IRQ0), a son
vecteur d’interruption situé aux adresses :
IP8 0000 :4*8 = 20h
CS8 0000 :4*8+2 = 22h

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 222
Les interruptions
 Interruption Matériel (Hardware):
 PIC 8259:

• Le PIC 8259 est intégré dans le champ Entrée/Sortie. Il peut être


programmé avec les instructions IN et OUT.

• Le PIC possède des registres d'initialisation et des registres de


fonctionnement. Les registres d'initialisation permettent de
préciser entre autres le type de fonctionnement du PIC (maître ou
esclave) et son mode d'activation (sur front ou sur niveau).

• On va se contenter de voir comment on programme les registres


de fonctionnement

27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 223
Les interruptions
 Interruption Matériel (Hardware):
 PIC 8259:
 Registre de Masque: (Adresse E/S = 21h)
b7 b6 b5 b4 b3 b2 b1 b0

IRQ7 IRQ6 IRQ5 IRQ4 IRQ3 IRQ2 IRQ1 IRQ0

Les interruptions des périphériques peuvent aussi être


masquées au niveau du PIC. C’est le registre de masque qui se charge
d’autoriser ou d’interdire une demande d’interruption. C'est un
registre de 8 bits, chaque bit correspond à un niveau d'interruption
IRQ. La validation de l'interruption sur IRQi est effective lorsque le
bit de rang i contient la valeur 0 : Interruption CLAVIER
Masquée
b7 b6 b5 b4 b3 b2 b1 = 1 b0 = 0

Interruption TIMER
IRQ7 IRQ6 IRQ5 IRQ4 IRQ3 IRQ2 IRQ1 IRQ0 Validée
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 224
Les interruptions
 Interruption Matériel (Hardware):
 PIC 8259: L2 L1 L0
0 0 0 IRQ0
 Registre de Fin d’Interruption: (Adresse E/S = 20h) 0 0 1 IRQ1
0 1 0 IRQ2
R EOI SL 0 0 L2 L1 L0 0 1 1 IRQ3
1 0 0 IRQ4
1 0 1 IRQ5
1 1 0 IRQ6
Rotate End Of Specific
Level 1 1 1 IRQ7
Priorité tournante Interrupt Level
Niveau de l’IRQi

Ce registre permet de spécifier le type de fin d'interruption. La terminaison


d'une interruption peut être : spécifique ou globale. Le mode spécifique permet
de réarmer uniquement le niveau d'interruption concerné. Le mode globale
permet de réarmer tous les niveaux ayant déclenché une interruption

Exemple de Fin d’Interruption Spécifique:


Pour réarmer l’interruption de COM1 en mode spécifique:
MOV AL, 01100100b
0 1 1 0 0 1 0 0
OUT 20h, AL
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 225
Les interruptions
 Processus d’exécution d’une procédure d’interruption :
Programme Principal

MOV AL, [SI]


MOV AH, AL Procédure d’interruption
Interruption ….
…. PUSH AX
Matériel 1
MOV AL, 01
….
INC DX 2 ….
ADD [BP] ….
3 ….
….
IRET
….
….
END

1) Le registre d’état est mis dans la pile


2) Le bit d’interruption IF est mis à 0 pour interdire d’autre interruption sur INTR
3) Le bit TF est mis à 0 pour interdire le mode d’exécution en mode pas à pas
4) Le registre CS est mis dans la pile
5) Le registre IP est mis dans la pile
6) Le registre IP est chargé par le contenu de la mémoire d’adresse 4n
7) Le registre CS est chargé par le contenu de la mémoire d’adresse 4n+2
8) Le µP exécute la procédure d’interruption à l’adresse mémoire (CSn)*10h+(IPn)
27/11/2011 Généralités sur les microprocesseurs et les interfaces, Jamal KHALLAAYOUNE 226