Académique Documents
Professionnel Documents
Culture Documents
2021/2022
Fiche de contact
Email: chouaib.st.cne@gmail.com
2
Présentation du cours
Département: Génie électrique
Public cible: L3 Automatique
Intitulé du cours: Microprocesseur et Microcontrôleur
(UEF 312)
Crédits: 6
Coefficient: 3
Durée: 67h00 (cours + TDs) (15 semains)
Mode d’évaluation: 40% Contrôle continu, 60% Examen
3
Description du cours
Objectifs:
Les objectifs de ce module est de comprendre le fonctionnement des
microprocesseurs et les microcontrôleurs et leurs interfaces. A l'issu de
ce cours, les étudiants seraient capables de :
•Identifier les systèmes à microprocesseur et leurs périphériques.
•Différencier entre un microprocesseur et un microcontrôleur.
•Pratiquer la programmation des microcontrôleurs.
Prérequis:
L'étudiant doit avoir des notions sur la logique, combinatoire, logique
séquentielle et des notions de programmation.
4
Contenu du cours
Chapitre 1 : Architecture d’un microprocesseur
Chapitre 3 : Le Microcontrôleur
5
Chapitre 1
Architecture
d’un
microprocesseur
6
Introduction
Les systèmes à
microprocesseur
Chapitre 1 7
Introduction
Les microprocesseurs font partie des calculateurs les plus puissants dont les
fonctions sont très variées.
Chapitre 1 8
Structure très complexe
Chapitre 1 9
Structure très complexe
Chapitre 1 10
Définition
Le µP (CPU) est un circuit intégré complexe (ensemble de millions de transistors)
appartenant à la famille des Very Large Scale Intégration (VLSI) capable d'effectuer
séquentiellement et automatiquement des suites d'opérations élémentaires
(programme). Le microprocesseur remplit deux fonctions essentielles : le
traitement des données et le contrôle du système.
Le µP = Portes logiques +
Transistors + résistances + fils
électriques + ……
Chapitre 1 11
Architecture basique d’un µP
• Registres
• Buses (données, adresses)
Chapitre 1 12
Architecture basique d’un µP
Unité de
traitement
Unité de
commande
Chapitre 1 13
Architecture basique d’un µP
Unité de traitement
Chapitre 1 14
Architecture basique d’un µP
L’unité arithmétique et logique
Chapitre 1 15
Chapitre 2
Le
microprocesseur
8086
16
Contenu du Chapitre
1 - Introduction
2 – Architecture externe du µp 8086
3 – Organisation interne et segmentation de la mémoire
4 – Modes d’adressage
5 – La programmation du 8086
6 – Exemple de programmation en assembleur
Chapitre 2 17
1 - Introduction
Utilisé en: Tablet GriDPad (1989), PC portable HP 110 (1984), Prospecteur lunaire (1998-
1999)
Chapitre 2 18
1- Introduction
Chapitre 2 19
2 - Architecture externe du 8086
Chapitre 2 20
2 - Architecture externe du 8086
Boitier DIP de 40 pins (broches).
Fonctionne sou une alimentation unique de 5 V.
Chapitre 2 21
2 - Architecture externe du 8086
Chapitre 2 22
2 - Architecture externe du 8086
Chapitre 2 23
3 - Organisation interne du 8086
Deux unités: BIU: Bus Interface
Unit, unité d’interfaçage avec le
bus, EU: Execution Unit, unité
d’exécution.
Additionneur d’adresse
4
Registres de
1. Unité de la file d’attente
segments 2
(Queue).
1
2. Registres de segments.
3. Pointeur d’instruction.
4. L’additionneur d’adresse.
Pointeurs d’inst 3
Chapitre 2 25
BIU : Unité d’interface de bus
BIU est responsable de ce qui suite:
Chapitre 2 26
BIU : Unité d’interface de bus
Mécanisme de file d'attente d'instructions pour l'architecture pipeline :
Chapitre 2 28
BIU : Unité d’interface de bus
L'unité BIU contient également un additionneur dédié :
• L'additionneur est utilisé pour générer l'adresse physique de 20 bits qui est sortie sur
le bus d'adresse. cette adresse est formée en ajoutant une adresse de segment de 16
bits et une adresse de décalage de 16 bits.
PA = A.seg*10h + A.offset
29
EU : Unité d’exécution
L'unité d'exécution se compose de 7 sous-unités qui:
1. Unité de contrôle.
2. Décodeur d’instructions 1
3. UAL
4
4. Registres généraux
5. Registre de drapeaux 3
6. Pointeurs
6
7 5
7. Registres d’indices 2 Opérandes
30
EU : Unité d’exécution
Le mécanisme de l'unité de l'UE comme suit :
31
Registre d’état (Flags)
Le registre d’état:
32
Registre d’états (Flags)
33
Registre d’états (Flags)
Indicateurs d’état
Indicateurs contrôle
34
Registre d’états (Flags)
1. Indicateurs d’état: (carry)
Carry flag (CF): Retenue: indique le dépassement de capacité de 1 sur une
opération 8 bits ou 16 bits. Ce flag peut être utilisé par des instructions de saut
conditionnel, des calculs arithmétique en chaîne ou dans des opération de
rotation. (ADD, SUB, CMP).
CF = 1
CF = 1 s'il y a une retenue après l'addition (retenue) ou la soustraction (borrow,
emprunt) du bit de poids fort des opérandes, Cout = 1.
1 1 111
Exemple: dernier carry out (Cout)
1110 1111
Supposant: AL = EFh, et BL = 18h.
0001 1000
0000 0111
35
Registre d’états (Flags)
1. Indicateurs d’état: (carry)
Exemple:
Supposant: CX = 7591h, et DX = 8248h.
Emprunt 1 0 1 0 1 0 1
sur MSB 0111010110010001
1000001001001000
1111001101001001
36
Registre d’états (Flags)
1. Indicateurs d’état: (carry)
Exemple:
Supposant: AL = 89h, et BL = 48h.
01000001
37
Registre d’états (Flags)
1. Indicateurs d’état: (Parity)
Parity flag (PF): Parité: indique que le nombre de 1 est un nombre pair. Il est
utilisé avec certains sauts conditionnels
PF = 1
s’il y a un nombre paire de 1 dans l’octet inférieur du résultat.
Exemple:
1 1 111 1 1
(Cout)
1111 1110
1001 0111
1001 0101
Total des 1 4
38
Registre d’états (Flags)
1. Indicateurs d’état: (Parity)
Exemple:
Supposant: CX = 7591h, et DX = 8248h.
Emprunt 1 0 1 0 1 0 1
sur MSB 0111010110010001
1000001001001000
1111001101001001
39
Registre d’états (Flags)
1. Indicateurs d’état: (Parity)
Exemple:
Supposant: AL = 89h, et BL = 48h.
01000001
40
Registre d’états (Flags)
1. Indicateurs d’état: (Auxiliary)
Auxiliary carry flag (AF): Demie retenue: indique une retenue sur les 4 bits (digit)
de poids faible. C.-à-d.: quand la somme
des 2 digits de poids faible dépasse F (15)
AF = 1
s’il y a un report ou l'emprunt se produit sur le 4ème bit ou que le report sort du
4ème bit dans un demi-octet inférieur (1 quartet).
Exemple: 4321
1 1 111 1 1
(Cout)
1111 1110
1001 0111
1001 0101
41
Registre d’états (Flags)
1. Indicateurs d’état: (Zeros)
Zeros flag (ZF): Zéro: Indique que le résultat d'une opération arithmétique ou
logique est nul. Il est utilisé dans
plusieurs instructions de sauts conditionnels
Exemple:
1000 1001
1000 1001
0000 0000
42
Registre d’états (Flags)
1. Indicateurs d’état: (Zeros)
Exemple:
1 1 1
1000 1001
1000 1001
0001 0010
43
Registre d’états (Flags)
1. Indicateurs d’état: (Sign)
Sign flag (SF): signe: SF est positionné à 1 si le bit de poids fort du résultat d'une
addition ou soustraction est 1 ; sinon SF=0. SF est utile lorsque l'on manipule des
entiers signés, car le bit de poids fort donne alors le signe du résultat.
Exemple:
1 1 1
10111001
11100010
10011011
44
Registre d’états (Flags)
1. Indicateurs d’état: (OverFlow)
Overflow flag (OF): Débordement: si on a un débordement arithmétique ce bit
est mis à 1.c-a-d le résultat d'une opération excède la capacité de l'opérande
(registre ou case mémoire), sinon il est à 0.
On distingue 2 types de débordements: débordement signé et débordement non-
signé.
Débordement signé se produit quand Carry in (Cin) Carry out (Cout) ou Emprunt
in (Bin) Emprunt out (Bout).
Débordement non-signé se produit quand Cin = Cout ou Bin = Bout
45
Registre d’états (Flags)
1. Indicateurs d’état: (OverFlow)
Exemple: Cin
Cout 1 11
10111001
11100010
10011011
46
Registre d’états (Flags)
1. Indicateurs d’état: (Overflow)
Exemple:
Supposant: CX = 7591h, et DX = 8248h.
Bin
Bout = 0 1 0 1 0 1 0 1
Emprunt sur MSB CF = 1 0111010110010001
Il y a nombre impair de 1 dans
l’octet faible PF = 0
1000001001001000
Emprunt se produit sur 4eme
bit, AF = 1
1111001101001001
Résultat 0, ZF = 0
MSB du résultat est 1, SF = 1
Puisque Bin Bout, OF = 1
47
Registre d’états (Flags)
1. Indicateurs de contrôle : (Direction)
Direction flag (DF): direction: Auto Incrémentation/Décrémentation : utilisée
pendant les instructions de chaîne de caractères pour auto incrémenter ou auto
décrémenter le SI et le DI.
Exemple: afficher le mot ‘Assembly’ sur l’écran (Direction par défaut de gauche à
droite).
DF = 1, alors la chaîne sera imprimée de droite à gauche. donc, ‘ylbmessA’ sera
imprimé.
DF = 0, alors la chaîne sera imprimée dans la bonne direction. Ainsi, ‘Assembly’
sera imprimé.
48
Registre d’états (Flags)
1. Indicateurs de contrôle : (Interrupt)
49
Registre d’états (Flags)
1. Indicateurs de contrôle : (Trap)
50
4 – Modes d’adressage
Format d’instruction:
• La structure la plus générale d’une instruction est la suivante :
51
4 – Modes d’adressage
Adressage:
•Les instructions et leurs opérandes (paramètres) sont stockées en
mémoire principale. La taille totale d'une instruction (nombre de bits
nécessaires pour la représenter en mémoire) dépend du type d'instruction
et aussi du type d'opérande. Chaque instruction est toujours codée sur un
nombre entier d'octets, afin de faciliter son décodage par le processeur.
•Pour faciliter la programmation il existe de nombreux modes d'adressage
(7 modes pour 8086).
- Mode d'adressage registre.
- Mode d'adressage relatif à une base.
- Mode d'adressage immédiat. - Mode d'adressage direct indexe.
- Mode d'adressage indexée.
- Mode d'adressage direct.
- Mode d'adressage registre indirect.
52
4 – Modes d’adressage
Adressage registre :
•ce mode utilise les registres internes de μp, dans ce mode il faut respecté
la taille de différents registres.
•Quand on utilise l'adressage registre, le microprocesseur effectue toutes
les opérations d'une façon interne.
•Il n'y a pas d'échange avec la mémoire, ce qui augmente la vitesse de
traitement de l'opérande.
Exemples :
INC AX : incrémenter le registre AX (AX = AX + 1)
MOV AX, BX : Copier le contenu de BX dans AX (AX = BX)
53
4 – Modes d’adressage
Adressage immédiat :
•La donnée est spécifiée immédiatement après l’instruction. Elle est donc
située dans le segment de code.
Exemples :
MOV AX, 243 : charger le registre AX par le nombre décimal 243 (AX=243)
ADD AX, 243h: additionner le registre AX avec le nombre hexadécimal 243
JMP 008 : saut à l’instruction du numéro 008
MOV AL, ‘A' : Charger le registre AL par le code ASCII du caractère ‘A‘ (65)
MOV AX, ‘A' : Charger le registre AH par 00 et le registre AL par le code ASCII du
caractère ‘A'
MOV AX,‘AB' : Charger AH par ‘A' et AL par ‘B‘ (66)
54
4 – Modes d’adressage
Adressage immédiat :
•La donnée est spécifiée immédiatement après l’instruction. Elle est donc
située dans le segment de code.
REMARQUE:
MOV AX,-500H ; le signe - sera propager dans ;le registre jusqu'à
remplissage de ce dernier.
MOV AX,-500H donne AX =1111101100000000
MOV BL,-20H donne BL = 11100000
Note:
ce mode est utilisé pour charger une donnée dans un registre quelconque sauf
FR et (CS, DS, SS, ES)
Sol: MOV AX, 2550h
MOV DS, AX
55
4 – Modes d’adressage
Adressage direct :
•Un des deux opérandes se trouve en mémoire. L’adresse de la case mémoire
est précisé directement dans l’instruction (offset).
•L’adresse Rseg:Off doit être placée entre [ ], si le segment n’est pas précisé, DS
est pris par défaut.
Exemple:
MOV AX,-500H ; le signe - sera propager dans ;le registre jusqu'à
MOV AX,[243] : Copier le contenu de la mémoire d'adresse DS:243 dans AX
MOV [123],AX : Copier le contenu de AX dan la mémoire d'adresse DS:123
MOV AX, [SS:243] : Copier le contenu de la mémoire SS:243 dans AX
56
4 – Modes d’adressage
Adressage indirect :
Dans ce mode l’adresse effective est le contenu d’un registre de base (BX ou
BP) ou index (SI ou DI).
Exemple:
MOV AX, [BX] ; Charger AX par le contenu de la mémoire d'adresse DS:BX
MOV AX, [BP] ; Charger AX par le contenu de la mémoire d'adresse SS:BP
MOV AX, [SI] ; Charger AX par le contenu de la mémoire d'adresse DS:SI
MOV AX, [DI] ; Charger AX par le contenu de la mémoire d'adresse DS:DI
MOV AX, [ES:BP] ; Charger AX par le contenu de la mémoire d'adresse ES:BP
57
4 – Modes d’adressage
Adressage indirect :
Si le registre n'est pas spécifié, le segment par défaut sera utilisé.
58
4 – Modes d’adressage
Adressage indirect :
59
4 – Modes d’adressage
Adressage indirect – Basé - :
• L’offset se trouve dans l’un des deux registres de base BX ou BP.
• On peut préciser un déplacement qui sera ajouté au contenu de Registre d’offset
pour déterminer l’offset.
Exemples :
• MOV AX, [BX] : Charger AX par le contenu de la mémoire d'adresse DS:BX
• MOV AX, [BX+5] : Charger AX par le contenu de la mémoire d'adresse DS:BX+5
• MOV AX, [BP-200] : Charger AX par le contenu de la mémoire d'adresse SS:BP-200
• MOV AX, [ES:BP] : Charger AX par le contenu de la mémoire d'adresse ES:BP
60
4 – Modes d’adressage
Adressage indirect – Indexé - :
• L’offset se trouve dans l’un des deux registres d’index SI ou DI.
• On peut préciser un déplacement qui sera ajouté au contenu de Registre d’offset
pour déterminer l’offset.
Exemples :
•MOV AX, [SI]; Charger AX par le contenu de la mémoire d'adresse DS:SI
•MOV AX, [SI+500]; Charger AX par la mémoire d'adresse DS:SI+500
•MOV AX, [DI-8]; Charger AX par la mémoire d'adresse DS:DI-8
•MOV AX, [ES:SI+4]; Charger AX par la mémoire d'adresse ES:SI+4
61
4 – Modes d’adressage
Adressage indirect –basé indexé - :
• L'offset de l’adresse de l'opérande est la somme d'un registre de base, d'un registre
d'index et d'un déplacement optionnel. Si le registre segment n'est pas spécifié, le
segment par défaut du registre de base est utilisé.
Exemples :
•MOV AX,[BX+SI]; AX est chargé par la mémoire d'adresse DS:BX+SI
•MOV AX,[BX+DI+5]; AX est chargé par la mémoire d'adresse DS:BX+DI+5
•MOV AX,[BP+SI-8]; AX est chargé par la mémoire d'adresse SS:BP+SI-8
•MOV AX,[BP+DI]; AX est chargé par la mémoire d'adresse SS:BP+DI
62
4 – Modes d’adressage
Registre
Accès rapide
Mémoire
Accès Lent
63
5 – La programmation du 8086
Le jeu d’instruction :
64
5 – La programmation du 8086
Les instructions de transfert :
65
5 – La programmation du 8086
Les instructions de transfert : général
1- L’instruction MOV
•Il permet le transfert des données entre registres ou entre registres et cases mémoire
Exemples:
MOV AL,77h ; registre et donné immédiate
MOV AL,[1000h] ;registre et donné en mémoire
MOV BX,AX ;registre et registre
MOV WORD PTR [1000h], 1258h ;mémoire et donné immédiate
66
5 – La programmation du 8086
Les instructions de transfert : général
2- L’instruction XCHG
•Elle permet de commuter la source et la destination comme suit:
67
5 – La programmation du 8086
Les instructions de transfert : Transfert d’adresses
3- L’instruction LEA (Load Effective Adress)
• •Elle transfert l'adresse offset (décalage) d'une opérande mémoire dans un registre
de 16 bits (pointeur ou index)
Exemple :
mov BX, 10 ; BX = 10
mov SI, 20 ; SI = 20
LEA AX, [BX+SI]; AX = 30
68
5 – La programmation du 8086
Les instructions de transfert : Transfert d’adresses
4- L’instruction LDS/LES (Load Data/Extra segment)
• Chacun de ces instructions permet de charger le segment (DS ou ES) et l'offset d'une
adresse.
Exemple:
(BX) = 20H, (DI) = 1000H, (DS) = 1200H
1 - LEA SI, [DI+BX+5H]
2 - LDS SI, [200H]
Solution:
1 - EA = 1000+20+5 = 1025H (SI) = 1025H
2 – PA = DS*10+EA = 1200*10+200 = 12200H (SI) = AA11H
PA(Low) et PA + 1(High) (SI Reg 16 bits – High, Low)
(DS) (PA + 2)Low, (PA + 3)High
(DS) = FFEE
69
5 – La programmation du 8086
Les instructions de transfert : Transfert d’adresses
70
5 – La programmation du 8086
Les instructions de transfert : Transfert de flags
5- L’instruction LAHF/SAHF
• LAHF : Load AH from Flags : place l'octet de poids faible du registre d'état
(FLAGS) dans le registre AH comme suit :
71
5 – La programmation du 8086
Les instructions de transfert : Transfert de flags
6- L’instruction PUSHF/POPF
PUSHF : Permet d'empiler la totalité du registre d'état (FLAGS)
POPF : Permet de dépiler le registre d'état (FLAGS)
72
5 – La programmation du 8086
Les instructions arithmétiques:
73
5 – La programmation du 8086
Les instructions arithmétiques: ADDITION
1- Instruction ADD
• Elle effectue une addition, le résultat est placé dans le registre ou dans la mémoire
(Destination)
Syntaxe :
ADD Destination, source Destination <---------- Destination + source
• Cette instruction présente plusieurs cas:
ADD registre , donnée immédiate
ADD mémoire, donnée immédiate
ADD registre , mémoire
ADD mémoire , registre
ADD registre, registre
74
5 – La programmation du 8086
Les instructions arithmétiques: ADDITION
75
5 – La programmation du 8086
Les instructions arithmétiques: INCREMENT
76
5 – La programmation du 8086
Les instructions arithmétiques: SOUSTRACTION
77
5 – La programmation du 8086
Les instructions arithmétiques: SOUSTRACTION
78
5 – La programmation du 8086
Les instructions arithmétiques: SOUSTRACTION
79
5 – La programmation du 8086
Les instructions arithmétiques: SOUSTRACTION
80
5 – La programmation du 8086
Les instructions arithmétiques: SOUSTRACTION
81
5 – La programmation du 8086
Les instructions arithmétiques: CMP
Exemple 1:
MOV AX,25
CMP AX,0 ;Résultat = 25, CF = 0 et ZF = 0
Exemple 2:
MOV AX,10
CMP AX,15 ;Résultat = -5, CF = 1
Exemple 3:
MOV AX,5
CMP AX,5 ;Résultat = 0, ZF = 1
82
5 – La programmation du 8086
Les instructions arithmétiques: Multiplication
83
5 – La programmation du 8086
Les instructions arithmétiques: Multiplication
84
5 – La programmation du 8086
Les instructions arithmétiques: Multiplication
85
5 – La programmation du 8086
Les instructions arithmétiques: Multiplication
86
5 – La programmation du 8086
Les instructions arithmétiques: Division
87
5 – La programmation du 8086
Les instructions Logiques:
88
5 – La programmation du 8086
Les instructions Logiques: AND (Et logique)
89
5 – La programmation du 8086
Les instructions Logiques: OR (Ou logique)
90
5 – La programmation du 8086
Les instructions Logiques: XOR (Ou Exlusif logique)
91
5 – La programmation du 8086
Les instructions Logiques: NOT (Non logique)
92
5 – La programmation du 8086
Les instructions Logiques: TEST (Comparaison logique)
93
5 – La programmation du 8086
Les instructions Logiques: DECALAGE logique
94
5 – La programmation du 8086
Les instructions Logiques: DECALAGE logique
95
5 – La programmation du 8086
Les instructions Logiques: DECALAGE Arithmétique
96
5 – La programmation du 8086
Les instructions Logiques: DECALAGE Arithmétique
97
5 – La programmation du 8086
Les instructions Logiques: ROTATION
98
5 – La programmation du 8086
Les instructions Logiques: ROTATION
MOV Al,11001011b
MOV CL, 2
AL = 97h
ROL AL,1
<<2
ROL AL, CL
AL= 5E= 01011110b
99
5 – La programmation du 8086
Les instructions Logiques: ROTATION
100
5 – La programmation du 8086
Les instructions Logiques: ROTATION
RCR AL,1
RCL AL,1
101
5 – La programmation du 8086
Les instructions de pile:
102
5 – La programmation du 8086
Les instructions de pile: PUSH
103
5 – La programmation du 8086
Les instructions de pile: PUSH
104
5 – La programmation du 8086
Les instructions de pile:
105
5 – La programmation du 8086
Les instructions de pile: POP
106
5 – La programmation du 8086
Les instructions de branchement:
•
107
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels
108
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels
109
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels
110
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels
111
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels
112
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels
113
5 – La programmation du 8086
Les instructions de branchement: Conditionnels
114
5 – La programmation du 8086
Les instructions de branchement: Conditionnels
115
5 – La programmation du 8086
Les instructions de branchement: Conditionnels
116
5 – La programmation du 8086
Les instructions de branchement: Conditionnels
117
5 – La programmation du 8086
Les instructions de branchement: Conditionnels
118
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)
119
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)
120
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)
121
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)
122
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)
123
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)
124
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)
125
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)
126
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)
127
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)
128
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)
129
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)
Solution 1
130
5 – La programmation du 8086
Les instructions de branchement: Inconditionnels (Boucle)
Solution 2
131