Académique Documents
Professionnel Documents
Culture Documents
Présentation
Objectif du cours :
L'objectif du cours est de donner les
éléments nécessaires à la connaissance
des microprocesseurs et à la pratique de
la programmation en langage machine.
Préparé et présenté par :
Mr. DIA
Cours de Mr. Dia CEDT<<Le G15>> 1
Microprocesseurs
Cours « Microprocesseurs - Programmation » :
Présentation
Périph. E/S
8000H AFH
8001H
74H
8002H
ABH
8003H
76H
• Voir Defintion.
0103H 07 07H
Etapes : Opérations
Etc… etc…. Etc…
ALU Accumulateur
UAL
Registre X
Thème : L’architecture du
Microprocesseur 8085
0101H C4 H
PC
0102H 02 H
01OOH
0103H C4 H
1998H
2500H
1999H
SP
2000H
2000H 45H
en Hexadecimal 2502H 14
Programme:
Codes machines Codes machines Hexa Commentaires
00100001 21 Obtenir le contenu
00000001 01 de l’adresse 2501H
00100101 25 dans le RP HL
01111110 7E Obtenir le 1er nbre dans A
00100011 23 Incrémenter le contenu de HL
10000110 86 Ajouter le 1er nbre au 2ème nbre
00110010 32 Garder le résultat dans 2503H
00000011 03
00100101 25
Cours de Mr. Dia CEDT<<Le G15>> 93
01110110
Microprocesseurs 76 Stop
I- Les types de langages
2- Le langage Assembleur:
• Bien que les instructions peuvent être écrites en
langage hexadécimal, c’est encore assez difficile de
comprendre un programme écrit en hexadécimal.
Ainsi les fabricants de microprocesseurs, ont
développé des langages faciles à comprendre en
utilisant des symboles en alphanumérique (au lieur
de 0s et de 1s) appelé MNEMONIC (qui veut dire en
GREC compréhensible). Des exemples de ces
codes sont ADD pour l’addition, SUB pour la
soustraction ou CMP pour la comparaison etc.… Un
programme écrit à l’aide de MNEMONICS est
appelé LANGAGE ASSEMBLEUR (ASSEMBLY
CoursLANGUAGE).
de Mr. Dia CEDT<<Le G15>> 94
Microprocesseurs
I- Les types de langages
2- Le langage Assembleur:
Exemple :
• Un exemple de programme en langage assembleur
pour l’addition des 2 nombres placés dans 2
emplacements de mémoires successifs 2501H et
2502H et la somme gardée au niveau de
l’emplacement de mémoire 2503H; est montré ci-
dessous.
• Voici le programme en langage Assembleur.
DONNES en langage assembleur:
Adresse mémoire Données
2501H 49H
2502H 56H
Cours de Mr. Dia CEDT<<Le G15>> 95
Microprocesseurs
I- Les types de langages
2- Le langage Assambleur:
Programme:
Codes Codes Codes Commentaires
machines machines Hexa Assembleur
00100001 21 LXI H, 2501H Obtenir le contenu
00000001 01 de l’adresse 2501H
00100101 25 dans le RP HL
01111110 7E MOV A,M Obtenir le 1er nbre dans A
00100011 23 INX H Incrémenter le contenu de HL
10000110 86 ADD M Ajouter le 1er nbre au 2ème nbre
2 Additionner les
nombres. hexadécimaux
3 Afficher la somme.
Fin
Cours de Mr. Dia CEDT<<Le G15>> 120
Microprocesseurs
V- Comment écrire, assembler et exécuter un
programme simple :
4- Le programme en langage assembleur :
• Pour écrire les programmes en langage assembleur,
nous avons besoin de traduire les blocs montrés dans
l’organigramme en des opérations du 8085 et puis en
Mnémonics.
MVI A, 32H
MVI B, 48H
ADD B
OUT 01H
HLT
Cours de Mr. Dia CEDT<<Le G15>> 121
Microprocesseurs
V- Comment écrire, assembler et exécuter un
programme simple :
5- Du langage assembleur au code hexadécimal
• Pour convertir les mnémonics en code hexadécimal
(Hex code) nous avons besoin de consulter les codes
au niveau de l’ensemble des instructions du 8085. Ceci
est appelé ASSEMBLER MANUELLEMENT.
Mnémonics Hex code
MVI A, 32H 3E
32
MVI B, 32H 06
48
ADD B 70
OUT 01H D3
01
Cours de HLT Mr. 76
Dia CEDT<<Le G15>> 122
Microprocesseurs
V- Comment écrire, assembler et exécuter un programme
simple :
6- Écriture (chargement) dans la mémoire et conversion du
code hexadécimal :
• Voir TP
Ce programme contient 8 codes machines et a besoin donc de huit
emplacements de mémoires
Adresse Hex code
Memoire
2000 3E
2001 32
2002 06
2003 48
2004 70
2005 D3
2006 01
Cours de Mr. Dia CEDT<<Le G15>> 123
Microprocesseurs 2007 76
V- Comment écrire, assembler et exécuter un
programme simple :
7- Exécuter le programme :
• Pour exécuter le programme nous avons besoin de
dire au microprocesseur par où le programme
commence en entrant l’adresse de mémoire 2000H.
Puis on presse sur la touche EXECUTE pour débuter
l’exécution du programme. Le microprocesseur
commence à lire les codes machines un à un et les
exécute jusqu’à ce qu’il rencontre l’instruction
HLT.
Sortir Nombre
Fin
Programme
Mnémonics
MVI A, 70H
OUT 01H
HLT
1 11110111
Conditions des flags : S = 1 Z = 0 CY = 1
Cours de Mr. Dia CEDT<<Le G15>> 163
Microprocesseurs
II- Les opérations Arithmétiques
1- La Soustraction :
Étude de cas Programme : Soustraction
de deux nombres.
Comme le carry est fixé à 1 ; le nombre F7H est le
2nd complément de (39H-30H)=09H
Port
d’entrée
00H
Microp.
8085
Port de
sortie
01H
• (A ) 9FH= 10011111
• (NBRE) 80H= 10000000
• A ANI 80H = 10000000
• Conditions des flags:
• S = 1 Z = 0 CY = 0
Cours de Mr. Dia CEDT<<Le G15>> 173
Microprocesseurs
II- Les opérations Logiques
1- Logique AND:
Etude de cas :Masquage des données avec la logique AND
Début
Lire Port
Allumer climatiseur
Fin
• Programme
• IN 00H
• ANI 80H
• OUT 01H
• HLT
•
• (A ) 9FH= 10000001
• (NBRE) 80H= 10000000
• A ANI 80H = 10000000
• Conditions des flags:
• S = 1 Z = 0 CY = 0
Cours de Mr. Dia CEDT<<Le G15>> 181
Microprocesseurs
II- Les opérations Logiques
1- Logique AND:
Etude de cas :Masquage des données avec la logique AND
Début
Lire Port
Allumer climatiseur
Fin
• Programme
• IN 00H
• ANI 80H
• OUT 01H
• HLT
•
• CMA =
11101010
= EAH
• Conditions des flags:
• S = 1 Z = 0 CY = 0
Cours de Mr. Dia CEDT<<Le G15>> 188
Microprocesseurs
II- Les opérations Logiques
2- OR, EXCLUSIVE-OR Et NOT:
3- Activer ou réinitialiser des bits spécifiques:
• Parfois à des moments différent on aimerait
activer ou réinitialiser un bit spécifique sans
affecter les autres bits. LA PORTE LOGIQUE OR
PEUT ETRE UTILISEE POUR ACTIVER LE BIT
( LE METTRE AU NIVEAU LOGIQUE 1 ). LA
PORTE LOGIQUE AND PEUT ETRE UTILISEE
POUR REINITIALISEE LE BIT ( LE METTRE AU
NIVEAU LOGIQUE 0 ).
• Enoncé du problème :
• Au niveau de la figure 6.8 ref 84 maintenir la radio
allumée sans affecter le fonctionnement des
autres appareils ; même si quelqu’un éteint (met
en position OFF) le contact S4.
Port
d’entrée
00H
Microp.
8085
Port de
sortie
01H
• Analyse du problème :
• Pour maintenir la radio allumée sans affecter les
autres appareils, le bit D4 doit être activé en
appliquant la logique OR, entre le résultat de la
lecture du port d’entrée et l’octet de donnée 10H
comme suivant :
• L’instruction IN va lire la position des contacts,
comme montré avec D7 à D0, et l’instruction ORI
va activer le bit D4 sans affecter les autres bits.
• Enoncé du problème :
• Au niveau de la figure 6.8 ref 84 Considérer que
c’est l’hivers et éteignez le climatiseur (Air
conditionner) sans affecter les autres appareils.
Port
d’entrée
00H
Microp.
8085
Port de
sortie
01H
• Analyse du problème :
• Pour éteindre le climatiseur, il faut réinitialiser
( mettre au niveau logique 0) le bit D7 en
appliquant la logique AND entre le résultat de la
lecture du port d’entrée et l’octet de donnée et
l’octet de donnée 7FH comme suivant :
• L’instruction ANI réinitialise le bit D7 sans affecter
les autres bits.
• Enoncé du problème :
• Un deuxième port d’entrée avec huit contacts et
ayant l’adresse 01H (voir fig. 6.9 ref 186) est
connecté au microprocesseur montré à l’exemple
précédent (fig. 6.8) pour aussi bien contrôler les
mêmes appareils et lampes à partir de la chambre
à coucher que à partir de la cuisine.
• Écrire les instructions nécessaires pour allumer
les appareils à partir de n’importe lequel des ports
d’entrées.
Cours de Mr. Dia CEDT<<Le G15>> 200
Microprocesseurs
II- Les opérations Logiques
3- Activer ou réinitialiser des bits spécifiques:
Etude de cas :1- Appliquer l’instruction OR à des
données provenant de deux ports d’entrées
Port
d’entrée
00H
Microp.
8085
Port
d’entrée Port de
sortie
01H
Début
Fin
• Programme
• IN 00H
• MOV C, A
• IN 02H
• ORA C
• OUT 01H
• HLT
•
Cours de Mr. Dia CEDT<<Le G15>> 205
Microprocesseurs
III- Les opérations de Branchement:
• Les instructions de branchement sont les
instructions les plus puissantes car elles
permettent au microprocesseur de changer
l’ordre d’exécution d’un programme, soit de
manière inconditionnelle ou sous certaines
conditions de tests effectués.
• Les instructions de branchement ordonnent au
microprocesseur d’aller à un emplacement de
mémoire différent et le microprocesseur va
continuer à exécuter les codes machines à partir
de ce nouveau emplacement de mémoire.
Cours de Mr. Dia CEDT<<Le G15>> 206
Microprocesseurs
III- Les opérations de Branchement:
• les instructions de branchement sont classées en 3
catégories :
• Les instructions JUMP
• Les instructions CALL et RETURN
• Les instructions RESTART
• Au niveau de cette section nous verrons simplement les
applications de l’instruction JUMP.
• L’instruction JUMP précise l’emplacement de mémoire
de manière EXPLICITE.
• Les instructions JUMP peuvent être classées en 2
catégories : Les JUMP conditionnels et les JUMPS
inconditionnels.
Cours de Mr. Dia CEDT<<Le G15>> 207
Microprocesseurs
III- Les opérations de Branchement:
1- JUMP inconditionnel
• L’ensembles des instructions du 8085 inclus une
seule instruction JUMP inconditionnelle. Le
JUMP inconditionnel permet au programmeur de
réaliser des boucles continues.
• Opcodes Opérant Description
• JMP 16-bit
• - Ceci est une instruction de 3-octet
• - Le 2nd octet et le 3ème octet représentent
l’adresse de 16-bit.
Début
Lire Port
• Cours
6 Finde Mr. Dia CEDT<<Le G15>> 219
Microprocesseurs
III- Les opérations de Branchement:
2- JUMP conditionnel
Eude de cas de programme: Tester à partir du carry flag
• Organigramme Début
Est ce qu’il
y a un carry
Fin
Organigramme :
Débu
t
Lire les ports d’entrée et
Sauvegarder les données
des contacts
Vérifier S7 et S7’
Est ce que S7
et S7' sont en
position ON
Déclencher l’alarme
Démarrer les d’urgence
courroies par S0 à
S4
Fin
Retourner vérifier
les contacts
Thème : Techniques de
programmation avec des
instructions additionnelles:
Effectuer
Effectuer
la tachela tache
Retouner
Retourneretetrépéter
répéterlalatache
tache
Un tour de piste
complété ? Le compteur
Diminuer le compteur est-il zéro
Fin
Cours de Mr. Dia CEDT<<Le G15>> 239
Microprocesseurs
I- Les Techniques de programmation : les
boucles – les compteurs et les indexes :
1- Les boucles conditionnelles, les
compteurs et les indexes :
Un autre type de boucle inclut les indexes ou
pointeur (indexer) en plus des compteurs (Indexer
veut dire pointer ou faire référence à des objets par
l’intermédiaire de nombres séquentiels (qui se
suivent) dans une bibliothèque, les livres sont
ordonnés selon des codes (chiffres) et sont
ordonnées selon ces codes (nombres). Ceci est
appelé Indexe ou pointeur. De manière similaire,
les octets de données sont stockés dans des
emplacements de mémoire, et ces données sont
référencées par emplacement de mémoire.
Cours de Mr. Dia CEDT<<Le G15>> 240
Microprocesseurs
I- Les Techniques de programmation : les
boucles – les compteurs et les indexes :
1- Les boucles conditionnelles, les
compteurs et les indexes :
Exemple :
Écrire les étapes nécessaires pour additionner 10 octets
de données gardés dans des emplacements de
mémoires commençant par un emplacement donné et
afficher la somme. Dessiner un organigramme.
Initialisation
Acquisition de données
Traitement de
données
Stockage temporaire
Des résultats partiels
Sortir (Affichage)
• MVI H, 20H
• MVI L, 50H
Ces instructions vont mettre 2050H dans le Rp
HL H L
Cours de
20 50
Mr. Dia CEDT<<Le G15>> 247
Microprocesseurs
II- Les instructions de transfert de données de 16-bits
2- Transfert (Copie) de données à partir de la mémoire
vers le microprocesseur
• Le jeu d’instruction du 8085 inclut 3 instructions de
transfert de données vers le microprocesseur. Ces
instructions n’affectent pas les flags.
• Déplacer à partir de la mémoire vers le registre
• MOV R,M : (Elle copie l’octet de donnée à partir de la
mémoire vers le registre ) Mémoire
Exemple: MOV A,M
8000H 40H
NB:
L’adresse de l’emplacement de mémoire est toujours
gardéé ou spécifié par le contenu du régistre pair HL
Cours de Mr. Dia CEDT<<Le G15>> 248
Par exemple,
Microprocesseurs on 8000H dans le Rp HL, Lxi H, 8000H
II- Les instructions de transfert de données de 16-bits
2- Transfert (Copie) de données à partir de la mémoire
vers le microprocesseur
• Load Accumulateur Indirect
• LDAX BC ou LDAX DE : Load Accumulateur
Indirect (Elle copie l’octet de donnée à partir
de l’emplacement de mémoire dans
l’accumulateur )
Exemple: LDAX BC 8000H 40H
NB:
L’adresse de l’emplacement de mémoire est
spécifié par le contenu du régistre pair BC ou
DE , LXI B, 8000H
Cours de Mr. Dia CEDT<<Le G15>> 249
Microprocesseurs
II- Les instructions de transfert de données de 16-bits
2- Transfert (Copie) de données à partir de la mémoire
vers le microprocesseur
• Load Accumulateur direct
• LDA 16-bit : Load Accumulateur direct (Elle
copie l’octet de donnée à partir de
l’emplacement de mémoire précisé par
l’adresse de 16-bit )
Exemple: LDA 8000H 8000H 40H
NB:
L’adresse de l’emplacement de mémoire est
directement ndiquéé dans l’instruction
Cours de Mr. Dia CEDT<<Le G15>> 250
Microprocesseurs
II- Les instructions de transfert de données de 16-bits
2- Transfert (Copie) de données à partir de la mémoire
vers le microprocesseur
• Exemple:
• L’emplacement de mémoire 2050H contient
l’octet de données F7H. Écrire les instructions
pour transférer l’octet de donnée dans
l’accumulateur en utilisant 3 opcodes différents:
• MOV 2050H F7H
• LDAX
• LDA.
Cours de Mr. Dia CEDT<<Le G15>> 251
Microprocesseurs
II- Les instructions de transfert de données de 16-bits
2- Transfert (Copie) de données à partir de la mémoire
vers le microprocesseur
• Solution :
• 1- LXI H, 2050H
• MOV A,M
• 2- LXI B, 2050H
• LDAX B
• 3- LDA 2050H
Cours de Mr. Dia CEDT<<Le G15>> 252
Microprocesseurs
II- Les instructions de transfert de données de 16-bits
3- Transfert de données à partir du microprocesseur
vers la mémoire
• Le jeu d’instruction du 8085 inclut 3 instructions de
transfert de données vers la mémoire (similaires à la
section précédente)
• Déplacer à partir du registre vers la mémoire
• MOV M,R: (Elle copie l’octet de donnée à partir du
registre vers la mémoire).
Exemple: MOV M,A
8000H
40H
NB:
L’adresse de l’emplacement de mémoire est toujours
gardéé ou spécifié par le contenu du régistre pair HL
Cours de Mr. Dia CEDT<<Le G15>> 253
Par exemple,
Microprocesseurs on 8000H dans le Rp HL, Lxi H, 8000H
II- Les instructions de transfert de données de 16-bits
3- Transfert (Copie) de données à partir du
microprocesseur vers la mémoire
• Store Accumulateur Indirect
• STAX BC ou STAX DE : Load Accumulateur
Indirect (Elle copie l’octet de donnée à partir
de l’accumulateur vers l’emplacement de
mémoire)
Exemple: STAX BC 8000H
NB: 40H
8000H
NB: 23H
• 3- LXI H, 8000H
• CoursMVI
de M,F2H Mr. Dia CEDT<<Le G15>> 258
Microprocesseurs
II- Les instructions de transfert de données de 16-bits
4- Les opérations arithmétiques de 16-bit ou avec les
registres pairs: INX et DCX
• INX Rp – Incrémenter le Registre Pair
• INX B – INX D - INX H – INX SP (Elle traite
le contenu des deux registres comme un
nombre e 16-bit et l’augment de 1)
• DCX Rp – Décrémenter le Régistre Pair
• DCX B – DCX D - DCX H – DCX SP (Elle
traite le contenu des deux registres comme un
nombre e 16-bit et le réduit de 1)
INX B INR B
INR C
Après
1) Cas 2) Cas
B C B C
20H 51H 21H 51H
Conclusion?
Cours de Mr. Dia CEDT<<Le G15>> 261
Microprocesseurs
II- Les instructions de transfert de données de 16-bits
5- Étude de cas : Programme de transfert de données
• Énoncé du problème :
• 16 octets de données sont placées dans les
emplacements de mémoire entre XX50H et XX5FH.
Transférer le bloc entier de données aux nouveaux
emplacements de mémoires commençant par
XX70H.
• Données (H)
• 37- 12- F2- 82- 57- 5A- 7F- DA- E5- 8B- A7- C2- B8-
10- 19- 98 Données
XX50 37
Acquisition de données
Stockage de données
Est-Ce Que le
compteur = 0?
• Exemple :
Écrire les instructions nécessaires pour ajouter le
contenu des emplacements de mémoire 2040H
dans (A). et soustraire le contenu de
l’emplacement de mémoire 2041H, de la première
somme. Assumer que l’Accumulateur contient
30H, et emplacement 2040H contient 7FH.
• Solution:
• La figure ci-dessus montre le contenus des
registres et les instructions nécessaires pour
exemple. Il faut d’abord préciser l’emplacement
de mémoire en chargeant 2040H dans le registre
pair HL
LXI H, 2040H
ADD M
INX H
SUB M
Cours de Mr. Dia CEDT<<Le G15>> 268
Microprocesseurs
II- Les instructions de transfert de données de 16-bits
4- Les opérations arithmétiques relatives à la mémoire
• Exemple 2:
• Charger 59H dans l’emplacement de mémoire
2040H et décrémenter le contenu de
l’emplacement de mémoire.
• Charger 90H dans l’emplacement de mémoire
2041H et décrémenter le contenu de
emplacement de mémoire
Est-Ce Que
Il y a un cary?
Carry = Carry + 1
Pointeur = Pointeur + 1
Compteur = Compteur + 1
Est-Ce Que
Le compteur = 0?
Affichage
CY A7 A6 A5 A4 A3 A2 A1 A0
CY A7 A6 A5 A4 A3 A2 A1 A0
CY A7 A6 A5 A4 A3 A2 A1 A0
Avant l’exécution de l’instruction 0 1 0 0 0 0 0 0 1 81H
CY A7 A6 A5 A4 A3 A2 A1 A0
Après l’exécution de RAR 1 0 1 0 0 0 0 0 0 40H
Lire la donnée
Vérifier le signe
Est ce c’est
négatif ?
Restaurer le nombre
Est ce c’est
Somme>FF
Sauvegarder la somme H
Affichage FFH
Pointeur = Pointeur + 1
Compteur = Compteur + 1 fin
Est ce que le
compteur=0 ?
Affichage la somme
Cours de Mr. Dia CEDT<<Le G15>> 284
Microprocesseurs
fin
Label Opcode Opérants Commentaires
MVI B,00H Réinitialiser B pour garder la somme
MIV C,0AH Fixer C comme compteur
JNZ NEXT Si toutes les données ne sont pas lues, retourner lire
MOV A,B
OUT PORT1 Afficher la somme
HLT
DEBORDEMENT MVI A, FFH
OUT PORT1 Afficher le débordement
Cours de Mr. Dia CEDT<<Le G15>> 285
Microprocesseurs HLT
IV- Les instructions logiques COMPARE
• Le jeu d’instruction du 8085 contient deux
types d’instructions de comparaison : CMP et
CPI
Instruction Exemple Commentaire
Lire la donnée
Est ce c’est
la dernière
donnée
Somme = somme + nombre
Est ce qu’il
Affichage la somme un carry?
carry = carry +1
fin
Sauvegarder la somme
Pointeur = Pointeur + 1
Retourner prendre la
donnée suivante
Donc :
TD = TO + TL
TO To= T x (7 x 1) + T x (10 x 1)
TO To= 17T
TL = T x (6 X N + A X N + A X N +10X (N – 1) +7
X 1)
Si nous négligeons l’ajustement de l’instruction au
niveau de JNZ
TL = T(6N + 4N + 4N + 10N)
TL = 24TN
TD = 17T + 24TN
TDCours
= deT (17 + 24N) Mr. Dia CEDT<<Le G15>> 321
Microprocesseurs
C- Les compteurs et les temps de temporisation
2. Le temps de temporisation utilisant deux régistres
Afficher le compte
Mettre à jour le compteur
Afficher le compte
Le Compte
est-il complet
Le Compte
est-il complet Temps de temporisation
Retourner