Vous êtes sur la page 1sur 53

Cours de Systèmes à Microprocesseurs

Aux Etudiants de la Troisième Année Electronique (Licence)

Dr. Guichi Amar


D ÉPARTEMENT D ’ ÉLECTRONIQUE

FACULTÉ DE T ECHNOLOGIE

U NIVERSITÉ DE M OHAMED B OUDIAD , M’ SILA

Novembre 2020
Table des matières

I Première Partie
1 Registres et mémoires à semi-conducteurs . . . . . . . . . . . . . 9
1.1 C’est quoi un système à microprocesseur ? 9
1.2 Registres 9
1.2.1 Type de registres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.2 Circuits intégrés de décalage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Mémoires 12
1.3.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.2 Temps d’accès d’une mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4 Classification des mémoires 13
1.4.1 Mémoire à semi-conducteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4.2 Mémoire centrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4.3 Structure interne d’une ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4.4 Chronogramme de lecture d’une ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.4.5 Structure interne d’une RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.4.6 Chronogramme de lecture/d’écriture d’une RAM . . . . . . . . . . . . . . . . . . 15
1.5 Assemblage de boîtiers mémoire 15
1.5.1 Augmentation de l’espace d’adressage (nombre des mots) . . . . . . . . . 16
1.5.2 Augmentation de la longueur de mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6 Réalisation du plan mémoire 17
2 Historique et évolution des ordinateurs . . . . . . . . . . . . . . . . . 23
2.1 Historique des ordinateurs 23
2.2 Catégories des ordinateurs 23
2.2.1 Superordinateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.2 Ordinateurs centraux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.3 Mini-ordinateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.4 Micro-ordinateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 Organisation d’un ordinateur 24
2.3.1 Unité centrale de traitement (Central Processing Unit (CPU)) . . . . . . . . . 24
2.3.2 Mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.3 Unités d’entrée/sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.4 Bus de système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4 Périphériques 25
2.4.1 Périphériques d’entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4.2 Périphériques de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5 Microprocesseur 26
2.6 Historique des microprocesseurs 27
2.7 Langage assembleur 27
2.8 Architecture de Von Neuman et de Harvard 27
2.8.1 Architecture de Von Neuman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.8.2 Architecture de Harvard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

II Deuxième Partie
3 Étude d’un microprocesseur 8-bit . . . . . . . . . . . . . . . . . . . . . . . 31
3.1 Introduction 31
3.2 Microprocesseur 8-bit 31
3.3 Étude du microprocesseur 8085 31
3.3.1 Architecture externe du 8085 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.2 Architecture interne du 8085 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3.3 Démultiplexage du bus AD7-AD0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3.4 Format d’une instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.5 Taille des instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.6 Mode d’adressage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4 Jeu d’instruction du 8085 37
3.4.1 Instructions de transfert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.4.2 Instructions arithmétiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4.3 Instructions logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4.4 Opérations logiques supplémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.4.5 Instructions de branchements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4.6 Instruction de pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.4.7 Instructions de contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.5 Op-code et mnémonique des instructions du 8085 50
3.6 Cycle d’exécution d’une instruction 51
3.6.1 Recherche de l’instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.6.2 Décodage de l’instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.6.3 Exécution de l’instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.7 Temps d’exécution d’un instruction 51
I
Première Partie

1 Registres et mémoires à semi-


conducteurs . . . . . . . . . . . . . . . . . . . . . . . 9
1.1 C’est quoi un système à microprocesseur ?
1.2 Registres
1.3 Mémoires
1.4 Classification des mémoires
1.5 Assemblage de boîtiers mémoire
1.6 Réalisation du plan mémoire

2 Historique et évolution des ordina-


teurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1 Historique des ordinateurs
2.2 Catégories des ordinateurs
2.3 Organisation d’un ordinateur
2.4 Périphériques
2.5 Microprocesseur
2.6 Historique des microprocesseurs
2.7 Langage assembleur
2.8 Architecture de Von Neuman et de Harvard
1. Registres et mémoires à semi-conducte

1.1 C’est quoi un système à microprocesseur ?


Un système à microprocesseur est un système d’électronique numérique composé de
trois éléments essentiels :
1. Microprocesseur(s) ;
2. Des périphérique d’entrées/Sorties ;
3. Des mémoires de stockage (RAM/ROM) ;
qui sont organisés auteur d’un chemin de communication appelé bus, comme l’illustre la
figure ci-dessous.

F IGURE 1.1 – Principales composants d’un système à microprocesseur

1.2 Registres
Un registre est un ensemble de mémoire élémentaire (Bascule) qui servent à enregistrer
ou à modifier des combinaisons binaires appelées mots binaires (Ex : 0011, 0010, 1100,
10 Chapitre 1. Registres et mémoires à semi-conducteurs

11110000, 11001100).
Un registre comprend :
— Entrées/Sorties parallèles ;
— Entrées/Sorties séries ;
— Une broche de chargement (Load) ;
— Une broche de décalage (Shift) ;
— Une broche de commande de sortie (Output Enable (OE)) ;

— Une broche de sélection du boitier (Chip Select (CS)) ;
— Signal d’horloge (CLK)

F IGURE 1.2 – Différents signaux de lecture/d’écriture et de contrôle d’un registre

Selon l’état des deux broche de commande et de sélection, le registre présente quatre
cas, Haute impédance, Écriture, Lecture et Transparence, comme il est éclairé sur la Figure
1.3.

F IGURE 1.3 – Les quatre modes d’un registre selon les signaux de commande

1.2.1 Type de registres


On distingue deux types de registres :
1.2 Registres 11

Registres de mémorisation
Ce sont des circuits intégrés capables de garder en mémoire un octet et de le restituer
en sortie sur demande. Il sont classés selon la méthode de lecture de données à :
1. Registres à écriture parallèle/lecture parallèle (Parallel In Parallel Out (PIPO))
2. Registres à écriture série/lecture série (Serial In Serial Out (SISO))
3. Registres à écriture série/lecture parallèle (Serial In Parallel Out (SIPO))
4. Registres à écriture parallèle/lecture série (Parallel In Serial Out (PISO))
Ces registres sont généralement à base d’une bascule D, qui est elle-même est à base
de portes logiques (les portes logiques sont à base des transistors), cette bascule permet
d’enregistrer un bit, la Figure 1.4 montre comment charger et lire, en série et en parallèle,
de cette bascule.

F IGURE 1.4 – Opération de chargement et de lecture d’une bascule D

La figure 1.5 montre l’opération de chargement et de lecture, en série et en parallèle,


d’un registre de 4 bits.

F IGURE 1.5 – Opération de chargement et de lecture d’un registre à 4 bits

Registres à décalage
Ce sont des circuits qui transfèrent les données d’une bascule à une autre bit par bit.
— Décalage à droite : Il consiste à faire avancer les bits vers la droite
— Décalage à gauche : Il consiste à faire avancer les bits vers la gauche
— Décalage en anneau ou décalage circulaire (Rotation) : Il consiste à faire tourner les
bits d’un registre vers la gauche ou vers la droite.
La figure 1.6 montre comment effectuer ces différents opérations de décalage.

1.2.2 Circuits intégrés de décalage


Sur le marché, il existe plusieurs types de circuit de décalage :
— 74194 : Registre de décalage universel bidirectionnel à 4 bits ;
12 Chapitre 1. Registres et mémoires à semi-conducteurs

F IGURE 1.6 – Différents opérations de décalage pour un registre de 8 bits

— 74164 : Registre à décalage à 8 entrées ;


— 74299 : Registre de décalage bidirectionnel à 8 bits, avec sortie à 3 états.

1.3 Mémoires
1.3.1 Définition
Une mémoire est en quelque sorte l’équivalent de l’empilement de registres dans une
même boîte où un seul de ces registres est appelé à la fois par l’utilisation d’une adresse.
Chaque mémoire a :
✓ Des entrées d’adressage ;
✓ Des entrées/sorties de données ;
✓ Des entrées de contrôle (commande)
La Figure 1.7 montre les signaux d’entrée et/ou de sortie d’une mémoire de m bits par
mot et de n linges, ainsi que sa connexion à un microprocesseur.

F IGURE 1.7 – Les signaux d’entrée et/ou de sortie d’un mémoire

Note : Le petit cercle à l’entrée du signal signifie que ce signal est actif en état bas
(actif s’il est égal à "0" binaire).
1.4 Classification des mémoires 13

La mémoire peut être soit à l’intérieur du processeur, sous forme de registres ou sous
forme d’une mémoire, qui est appelée mémoire principale, ou à l’extérieur du processeur,
on l’appelle, mémoire secondaire.
La capacité de mémoire peut s’exprimer en :
• Bit ;
• Octet : 1 octet=8 bits ;
• Kilo-octet (Ko) : 1 Kilo-octet = 1024 octets= 210 octets ;
• Méga-octet (Mo) : 1 Méga-octet = 1024 Ko = 220 octets ;
• Géga-octet (Go) : 1 Géga-octet = 1024 Mo = 230 octets ;
• Téra-octet (To) : 1 Téra-octet = 1024 Go = 240 octets ;

1.3.2 Temps d’accès d’une mémoire


C’est le temps nécessaire pour faire effectuer une opération de l’lecture ou d’écriture
(Figure 1.8).

F IGURE 1.8 – Temps d’accès d’une mémoire

1.4 Classification des mémoires


Les mémoires peuvent être classées, selon la technologie utilisée, en trois catégories :
◦ Mémoire à semi-conducteur (Mémoire centrale, RAM, ROM) : Très rapide mais de
taille réduite.
◦ Mémoire magnétique (disque dur, disquette, ...) : Moins rapide mais stock un volume
d’information très grand.
◦ Mémoire obtique (DVD, CDROM, ...).

1.4.1 Mémoire à semi-conducteur


Dans ce type de mémoire, chaque bit de données binaires est stocké dans une cellule
mémoire fabriqué à base d’un ou plusieurs transistors. La Figure 1.9 montre les différents
types de cette mémoire.
▶ Masked ROM (Read Only Memory) : C’est une mémoire à lecture seule, son
contenu est programmable une fois par le fabriquant.
▶ PROM (Programmable ROM) : ROM programmable une seule fois par un program-
mateur.
14 Chapitre 1. Registres et mémoires à semi-conducteurs

F IGURE 1.9 – Types de mémoires à semi-conducteur

▶ EPROM (Erasable PROM) : Appelée aussi UVROM, ROM programmable électri-


quement par un programmateur, effaçable par exposition à un rayonnement ultravio-
let.
▶ EEPROM (Electrical Erasable PROM) : ROM programmable et effaçable électri-
quement.
▶ Flash memory : c’est-à-dire une mémoire possédant les caractéristiques d’une
mémoire vive mais dont les données ne disparaissent pas lors d’une mise hors
tension.

1.4.2 Mémoire centrale


La mémoire centrale représente l’espace de travail d’un ordinateur. Pour exécuter un
programme, il faut le charger dans la mémoire centrale. Elle est de type RAM, elle est à
accès aléatoire.

Types des mémoires centrales


▶ Les mémoires dynamiques (DRAM) : elles sont de type RAM construite à base de
condensateurs et de quelques transistors. Elles nécessitent d’être rafraîchi à plusieurs
reprises. Elles sont moins coûteuses mais avec un temps d’accès plus long.
▶ Les mémoires statiques (SRAM) : la mémoire statique de type mémoire vive utilisant
des bascules D pour mémoriser les données. Son contenu n’a pas besoin d’être
rafraîchi périodiquement. Elle a un temps d’accès rapide, chère, et de taille réduite.
elle est utilisée pour la mémoire cache.

1.4.3 Structure interne d’une ROM


Les lignes d’entrées/soties d’une ROM de 4x4 bit sont calées comme il est illustré dans
la Figure 1.10.
Voici un exemple (Voir Figure 1.11 ) d’une EPROM commercialisée (Am29F010, 128
Mo)
1.5 Assemblage de boîtiers mémoire 15

F IGURE 1.10 – Structure interne, adressage et lecture d’une mémoire ROM 4x4 bit

F IGURE 1.11 – EPROM Am29F010, 128Mo

1.4.4 Chronogramme de lecture d’une ROM


La Figure 1.12 montre le chromogramme de lecture d’une mémoire ROM, qui com-
mence par l’envoi de l’adresse et se termine par la lecture des données à la sortie.

1.4.5 Structure interne d’une RAM


Le montage de la Figure 1.13 constitue une mémoire à 256 octets. Chaque bit est
désigné par un carré (Bascule D).
Voici un exemple (Voir Figure 1.14) d’une RAM statique C-MOS commercialisée
(6116 2Ko). Cette mémoire peut conserver ses informations pour une consommation de 5
micro-watts.

1.4.6 Chronogramme de lecture/d’écriture d’une RAM


La Figure 1.15 montre le chronogramme de lecture e d’écriture d’une mémoire RAM.

1.5 Assemblage de boîtiers mémoire


Il est nécessaire d’associer plusieurs boitiers mémoire pour augmenter le longueur des
mots ou le nombre des mots.
16 Chapitre 1. Registres et mémoires à semi-conducteurs

F IGURE 1.12 – Chronogramme de lecture d’une ROM

F IGURE 1.13 – Structure interne d’une RAM de 256 octet

1.5.1 Augmentation de l’espace d’adressage (nombre des mots)


Afin d’obtenir une mémoire de 256 Ko, on peut utiliser 4 boîtiers de 64 Ko, les 16-
bit de poids faible (A0 − A15 ) seront utilisés pour adresser un espace mémoire (ligne) à
l’intérieur de l’un des 4 boîtiers, tandis que les deux bits de poids fort (A16 − A17 ) vont
donner le numéro du boîtier à sélectionner. La Figure 1.16 montre l’adressage des 4 boîtiers
assemblés.

1.5.2 Augmentation de la longueur de mot


Pour passer d’une mémoire de 64 K mots de 8-bit à une mémoire de 64 K de 16-bit, on
doit adresser les deux mémoires mémoire de 8-bit simultanément comme il est illustré sur
1.6 Réalisation du plan mémoire 17

F IGURE 1.14 – RAM C-MOS 6116 2Ko

F IGURE 1.15 – Chronogramme de lecture/écriture une RAM

la Figure 1.17.

1.6 Réalisation du plan mémoire


On suppose qu’on a un µP avec un bus d’adresse de 16-bit et un bus de données de
8-bit. Comment adresser une mémoire d’une capacité inférieur de la capacité d’adressage
du µP ?

Exemple 1

A l’aide d’un boîtier mémoire de 2K x 4 bits, on veut réaliser une mémoire de 8 Ko


(8K x8-bit) (Figure 1.18).
Il faut noter qu’avec 16-bit d’adresse, on peut adresser : 216 = 64K positions.
18 Chapitre 1. Registres et mémoires à semi-conducteurs

F IGURE 1.16 – Assemblage de mémoires afin d’augmenter le nombre de mots

F IGURE 1.17 – Assemblage de mémoires afin d’augmenter la longueur de mot

Nombre de boîtiers : Pour avoir 8K de case mémoire à partir d’une mémoire de 2K, il
faut mettre 4 boîtier en parallèle.
Alors que pour augmenter la largeur du mot à 8-bit, nous devons mettre en série deux
lignes de 4 boîtier de 4-bit.

Adressage : Pour trouver le nombre de ligne d’adresse pour adresser 4K d’espace


mémoire, on doit résoudre l’équation suivante :

11
Logm
2 = 2K = 2 =⇒ m = 11lignes (1.1)
La Figure 1.18 montre le plan mémoire d’une mémoire de 8Ko réalisé par la mise en
1.6 Réalisation du plan mémoire 19

série et en parallèle des boîtiers mémoires de 2K-4bit.

F IGURE 1.18 – Réalisation d’un plan mémoire

Exemple 2
Dans cet exemple, on va faire la conception d’un système à µP avec un bus d’adresse
16-bit, un bus de données 8-bit, une mémoire ROM de 8Ko et une mémoire RAM de 16Ko.
Les deux boîtiers mémoire (RAM et ROM) qui seront utilisés sont de 4Ko. L’adresse de la
ROM doit être commencé à partir de l’adresse 0000H et l’adresse de la RAM à partir de
l’adresse 8000H (Figure 1.19).

Note : L’espace d’adressage inutilisé entre les deux mémoires permet l’expansion de la
ROM à l’avenir.
Si on néglige le problème de "folding", les adresses mémoire seront calculées en
appliquant la règle suivante :

AF = AD +Cap(θ ) − 1 (1.2)

Tel que :
AF : Adresse de fin ;
AD : Adresse de début ;
Cap(θ )= Capacité d’adresse en octet ;
ROM1 :
AF = AD +Cap(θ ) − 1
20 Chapitre 1. Registres et mémoires à semi-conducteurs

AF = 0000H + 4K − 1
On a 4Ko = 4 ∗ K = 22 ∗ 210 = 212 = (1000000000000)b = (1000)h
AF = 1000H − 1
AF = 0FFFH
ROM2 :
AF = AD +Cap(θ ) − 1
AF = 1000H + 4K − 1
AF = 1000H + 1000H − 1
AF = 1000H + 0FFFH
AF = 1FFFH
RAM1 :
AF = AD +Cap(θ ) − 1
AF = 8000H + 4K − 1
AF = 8000H + 1000H − 1
AF = 8000H + 0FFFH
AF = 8FFFH
RAM2 :
AF = AD +Cap(θ ) − 1
AF = 9000H + 4K − 1
AF = 9000H + 1000H − 1
AF = 9000H + 0FFFH
AF = 9FFFH
RAM3 :
AF = AD +Cap(θ ) − 1
AF = A000H + 4K − 1
AF = A000H + 1000H − 1
AF = A000H + 0FFFH
AF = AFFFH
RAM4 :
AF = AD +Cap(θ ) − 1
AF = B000H + 4K − 1
AF = B000H + 1000H − 1
AF = B000H + 0FFFH
AF = BFFFH
Donc, les plages d’adresses des six mémoires peuvent être résumées comme suit :
1.6 Réalisation du plan mémoire 21

▶ ROM1 :0000 − 0FFF


▶ ROM2 :1000 − 1FFF
▶ RAM1 :8000 − 8FFF
▶ RAM2 :9000 − 9FFF
▶ RAM3 :A000 − AFFF
▶ RAM4 :B000 − BFFF
La Figure 1.19 illustre la conception du système de l’exemple 2 qui doit avoir 2 boîtiers
ROM (4Ko) et 4 boîtiers RAM (4Ko).

F IGURE 1.19 – Conception d’un système à µP composé de ROMs et RAMs


2. Historique et évolution des ordinateurs

2.1 Historique des ordinateurs


L’historique du développement de l’ordinateur a passé par :

✓ En 1937, Howard Aiked a crée le Mark 1 - 17m x 20.5m ;


✓ En 1938, Konrad Zuze a crée le Z3 qui a utilisé le binaire ;
✓ En 1947 a apparu le Mark 2 , les engrenages ont été remplacés par des composants
électriques ;
✓ En 1946, c’est la disparition des pièces mécaniques dans l’ENIAC (Electronic Nume-
rical Integrator and Computer), il occupe 1500 m2 et il effectuait 330 multiplication
par seconde ;
✓ En 1971, la naissance de Kenback 1 avec l’intégration des transistors, il disposait
d’une mémoire de 256 octets.
✓ En 1976, la création du premier ordinateur Apple doté d’un microprocesseur et d’un
clavier ;
✓ En 1981, l’apparition du premier ordinateur personnel (Personal Computer (PC))

2.2 Catégories des ordinateurs


2.2.1 Superordinateurs
Ce sont des ordinateurs de grande puissance destinés aux calculs intensifs, ils servent à
faire des prévisions météorologiques, à étudier le climat et à générer des simulations phy-
sique ou financières. Ils utilisent actuellement des dizaines de milliers de microprocesseurs
(IBM Blue Gene, 250000µP, Columbia, 10240 µP).
24 Chapitre 2. Historique et évolution des ordinateurs

2.2.2 Ordinateurs centraux


Ce sont des ordinateurs d’une grande puissance de traitement, ils sont utilisés dans
de très grandes entreprises (Banques, Assurances, Compagnies aériennes, ... ). Ils sont
accessible par des dizaines ou des centaines de milliers d’utilisateurs.

2.2.3 Mini-ordinateurs
Cette catégorie n’est plus tellement significative aujourd’hui, à présent le terme corres-
pond plutôt au systèmes multi-utilisateur en temps réel.

2.2.4 Micro-ordinateurs
Ce sont des ordinateurs de dimensions réduites dont l’unité centrale est constituée
d’un ou de plusieurs microprocesseurs. Un micro-ordinateur est un ordinateur individuel
fonctionne de manière autonome, il peut être classé en quatre groupes, ordinateur person-
nel (Personnel computer (PC)), station de travail (Work station), ordinateur monocarte
(Single-board computer), micro-ordinateur monopuce (Single-chip microcomputer ou
microcontrôlleur).

2.3 Organisation d’un ordinateur


Un ordinateur (ou système à µP) p de peut lire les instructions depuis la mémoire,
acquérir des données binaires comme entrées pour le traitement et offrir les résultats
comme sortie.
Un système à µP a quatre composants essentiels : Unité Centrale de Traitement,
mémoires, unités d’entrée et unités de sortie, en plus des bus qui transfèrent les données
entre eux comme indiqué sur la Figure 2.1.

F IGURE 2.1 – Composants essentiels d’un système à microprocesseur

2.3.1 Unité centrale de traitement (Central Processing Unit (CPU))


Elle s’occupe de traitement et de stockage d’informations, elle est formé de trois
éléments suivants :
• Registres : Pour conserver des bits ou des mots ;
2.4 Périphériques 25

• Unité arithmétique et logique (ALU) : Elle effectue les opérations arithmétique


(+,-,x,/) et logiques (AND, OR, NOT, XOR,..) ;
• Unité de contrôle : Pour contrôler les broches comme (L,CS, R/W , OE,..).

2.3.2 Mémoire
Il s’agit de l’ensemble des ressources de stockage que l’ordinateur peut employer pour
sauvegarder des informations afin de les réutiliser ultérieurement (Données ou instructions)

Mémoire ROM : range en général le programme d’initialisation du système (Dans


le PC, elle range le BIOS (Basic Input Output System)) ;
Mémoire RAM : sert au rangement des programmes d’utilisateurs.

2.3.3 Unités d’entrée/sortie


Les unités d’entrée/sortie vont permettre à l’ordinateur de communiquer avec le monde
extérieur, le µP peut lire des données à partir d’une interface d’entrée (Carte d’interface
d’entrée, Contacts,...). De même, il peut envoyer le résultat de son traitement au monde
extérieur en adressant des interfaces de sortie (Carte d’interface de sortie,LED(Light
Emitting Diode), Afficheur 7 segments,...).

2.3.4 Bus de système


Les trois entrées sont inter-connectés autour de trois bus :
1. Bus de données : C’est un ensemble de fils bidirectionnels qui vont permettre le
transfert de données entre les différents éléments du système.
2. Bus de d’adresse : Ce bus permet d’adresser un élément par le µP, il est unidirec-
tionnel (16-bit adressent 216 positions, qui est égal à 64K positions).
3. Bus de commande et de contrôle : C’est un bus qui permet de véhiculer les signaux
de contrôle et de commande (CS, RD,W R, L, OE,CLK, ..), il sert à coordonner tous
les échanges d’informations et à organiser le transfert de données.

2.4 Périphériques
Il y a deux types de périphériques :

2.4.1 Périphériques d’entrée


Ils servent à fournir des informations (ou données) au système informatique (Clavier,
Souris, Scanner, Micro, Webcam, Contacts,...)

2.4.2 Périphériques de sortie


Ils servent à faire sortir des informations du système informatique (Écran, Imprimante,
Haut-parleur, Table traçante, ,...)
La Figure 2.2 montre la connexion de certains périphéries au microprocesseur via des
interfaces d’entrée/sortie.
26 Chapitre 2. Historique et évolution des ordinateurs

F IGURE 2.2 – Connexion des périphériques au microprocesseur via des interface d’en-
trée/sortie

2.5 Microprocesseur
En 1971, la compagnie Intel a réussi à placer tous les transistors qui constituent un
processeur sur un seul circuit intégré donnant ainsi naissance au microprocesseur.
Un processeur est la partie d’un ordinateur qui exécute les instructions et traite les données
des programme.
Les principales caractéristiques d’un microprocesseur sont :

(a) Le jeu d’instructions : C’est l’ensemble des codes opération du microprocesseur,


chaque code est représenté par un nombre hexadécimale à deux chiffres. La liste
de ces codes est le langage machine, il est varié avec le type de microprocesseur
et le constructeur (Additionner deux nombres, Comparer deux nombres, ....). Un
processeur peut exécuter plusieurs dizaines à des milliers d’instructions.

(b) La complexité de son architecture : Elle se mesure par le nombre de transistors


contenus dans le microprocesseur.

(c) Le nombre de bits : Indique le nombre de bits que le microprocesseur peut traiter
simultanément. Le premier microprocesseur a commencé par 4-bit, actuellement ils
sont à 64-bit.

(d) La vitesse d’horloge : Le rôle de l’horloge est de cadencer le rythme de travail


du microprocesseur, plus la vitesse d’horloge augmente, plus le microprocesseur
exécute plus d’instructions.

Note : La puissance du microprocesseur s’exprime en "millions d’instructions par seconde :


MIPS"
2.6 Historique des microprocesseurs 27

2.6 Historique des microprocesseurs


Le tableau 1 résume l’historique des microprocesseur depuis apparition du premier
microprocesseur jusqu’à ces dernières années.

TABLE 2.1 – Historique de développement des microprocesseurs


Processeur Année Nbre de Vitesse Bus Bus de MIPS
transistor d’horloge d’adresse données
Intel 4040 1979 2300 108KHz 10-bit 4-bit 0.06
Intel 8008 1972 3500 200KHz 14-bit 8-bit 0.64
Intel 8080 1974 6000 2MHz 16-bit 8-bit .
Intel 8085 1976 6500 5MHz 16-bit 8-bit .
Intel 8086 1978 29000 5MHz 20-bit 16-bit .
. . . . . . .
. . . . . . .
Pentium 1993 12M 25MHz 32-bit 32-bit 100
. . . . . . .
Pentium 4 2000 24M 1.4GHz 36-bit 64-bit 100
. . . . . . .
Core 2 Duo 2006 291M 2.4GHz 64-bit 64-bit 2200
. . . . . . .
Core i7 2008 731M 3.33GHz 64-bit 64-bit .
. . . . . . .

2.7 Langage assembleur


La programmation directe en langage machine étant assez fastidieuse, un mnémonique
est associé à chaque code qui est appelé fonction, facilitant ainsi l’écriture de programmes,
ce langage est appelé langage assembleur.

Exemple :

Mnémonique Code d’opération Opérande Fonction


JMP 00H Adresse Sauter à l’adresse indiquée
INR 3CH Implicite Incrémenter le contenu de l’accumulateur
ADD B 80H Donnée Additionner le contenu de registre B avec
celui de l’accumulateur

2.8 Architecture de Von Neuman et de Harvard


Ils existe deux type d’architecture qui décrivent la fonctionnalité et la mise en œuvre
des systèmes informatiques :
28 Chapitre 2. Historique et évolution des ordinateurs

2.8.1 Architecture de Von Neuman


Dans cette architecture, comme le montre la Figure 2.3, les données et les instructions
sont stockées dans la même zone mémoire.

F IGURE 2.3 – Principe d’architecture de Von Neuman

2.8.2 Architecture de Harvard


Cette architecture, comme le montre la Figure 2.4 sépare physiquement la mémoire
de données er la mémoire d’instructions, elle permet le transfert simultané de données et
d’instructions, ce qui améliore le temps d’exécution.
Cette architecture est souvent utilisée dans les DSP (Digital Signal Processing) et les
microcontrôlleurs, notamment les PIC de microchip et les AVR d’Ateml.

F IGURE 2.4 – Principe d’architecture de Harvard

Exemple :
LDA 2000H Charger le contenu de l’adresse dans l’accumulateur

L’instruction LDA et l’adresse 2000H sont dans la même mémoire pour Von Neuman.
Pour Harvard, LDA est dans la mémoire instructions et 2000H dans la mémoire données.
II
Deuxième Partie

3 Étude d’un microprocesseur 8-bit 31


3.1 Introduction
3.2 Microprocesseur 8-bit
3.3 Étude du microprocesseur 8085
3.4 Jeu d’instruction du 8085
3.5 Op-code et mnémonique des instructions du
8085
3.6 Cycle d’exécution d’une instruction
3.7 Temps d’exécution d’un instruction
3. Étude d’un microprocesseur 8-bit

3.1 Introduction
Les microprocesseurs 8-bit utilisent un bus de données 8-bit et un bus d’adresse 16-bit,
qui signifie que leur espace d’adressage est limité à 64Ko. Le premier microprocesseur 8-
bit largement adopté a été le 8080 d’Intel, qui était utilisé dans de nombreux ordinateurs d’
’amateurs de la fin des années 1970 et du début des années 1980. Le Zilog Z80 (Compatible
avec le 8080) et le Motorola 6800 ont également été utilisés dans des ordinateurs similaires,
on peut notamment citer MOSTEK 6502 inspiré du 6800 et du Z80.
Lorsque ces premiers microprocesseurs avaient atteint la limite de leurs performances, les
constructeurs ont fabriqué la nouvelle génération de 8-bit, plus puissante, comme le 6809
de Motorola et le 8085 d’Intel.

3.2 Microprocesseur 8-bit


Le tableau 3.5 résume les caractéristiques des microprocesseurs 8-bit de différents
constructeurs.
L’architecture interne de ces microprocesseur est directement basée sur la structure
Von Neuman.

3.3 Étude du microprocesseur 8085


Le microprocesseur 8085 se présente sous la forme d’un boîtier DIP (Dual In-line
Package) à 40 broches, il présente les caractéristiques suivantes :
✓ Nécessite uniquement une alimentation +5V ;
✓ Peut fonctionner avec une horloge de 3 → 6.144MHz et exécute 1.5 MIPS ;
✓ Capable d’adresser 64 Ko de mémoire ;
32 Chapitre 3. Étude d’un microprocesseur 8-bit

TABLE 3.1 – Historique de développement des microprocesseurs


Constructeur Intel Intel Intel Motorola Zilog Mostek Rockwell National
Référence 8008 8080 8085 6800 Z80 6502 PPS8 SC/MP
Nombre 48 69 71 71 69 71 90 50
d’intructions
Espace 16K 64K 64K 64K 64K 64K 32K 64K en
mémoire page de 4K
Registre d’u 7 7 7 3 17 3 3 6
-sage général
Nombre de 3300 400 6200 - - - - -
transistors
Horloge 0.3 2-2.67 3.6 ou 6 11.5 ou 2 - - - -
en MHz
Année 1972 1974 1976 1974 1976 1975 - 1976

✓ Nécessite 4 cycles par instruction ;

3.3.1 Architecture externe du 8085


Les noms et les rôles des broches du 8085 sont données sur la Figure 3.1

F IGURE 3.1 – Architecture externe du microprocesseur 8085

Les broches du 8085 peuvent être classées en cinq groupes :

a. Bus d’adresse et bus de données


Le poids faible des lignes d’adresse est multiplexé avec le bus de données AD7 − AD0 ,
d’où la nécessité d’un démultiplexage pour obtenir séparément les bus d’adresse et de
données, tandis que le poids fort est représenté par A8 − A15 . Le démultiplexage se fait à
l’aide du signal ALE (Address Latch Enable) comme il sera présenté plus tard.
3.3 Étude du microprocesseur 8085 33

b. Signaux de contrôle et d’état


ALE : A l’état haut, implique que les bits présents sur le bus A/D sont des lignes
d’adresse.
RD : Read, signal de lecture d’une donnée, actif en état bas.
WR : Write, signal d’écriture d’une donnée, actif en état bas.
IO/M : Input-Output/Memory : indique si le 8085 adresse la mémoire (IO/M = 0)
ou les entrées/sorties (IO/M = 1).
S0 et S1 : Signaux d’état indiquant le type d’opération en cours sur le bus. Rarement
utilisés dans les petits systèmes.

c. Alimentation et générateur de fréquence


Vcc : Alimentation +5V.
Vss : Masse de référence.
X1 et X2 : Un quartz est relié aux deux broches pour générer un signal carré
périodique. Pour une fréquence de 3MHz, le quartz doit avoir une fréquence de
6MHz.
CLK : Signal d’horloge pour d’autres circuits.

d. Signaux d’interruptions
Le 8085 possède cinq signaux d’interruptions :

INTR(Interrupt Request) : C’est le signal envoyé par une interface indiquant une
demande d’interruption.
INTA (Interrupt Aknowlege) : Le 8085 répond à INTR en envoyant "0" sur le signal
INTA.
RST 7.5, RST 6.5 et RST 5.5 : Interruptions de démarrage, ce sont des interruptions
vectorisés qui transfèrent le contrôle à une position mémoire spécifique.
TRAP (Non Maskable Interrupt) : Interruption prioritaire, non masquable.
HOLD et HLDA : Signaux de demande d’accord d’accès direct à la mémoire
(DMA).
READY : Entrée de synchronisation avec la mémoire.
RESET IN : Quand ce signal est à "0", le compteur de programme est remis à "0",
les bus sont en haute impédance et le microprocesseur redémarre.
RESET OUT : Ce signal est utilisé pour redémarrer les circuits connecté au 8085
quand ce dernier est redémarrer.

d. Port d’E/S série


Le 8085 possède deux signaux pour la transmission série :

SID : Serial Input Data.


SOD : Serial Output Data.

3.3.2 Architecture interne du 8085


La structure interne du 8085, comme il est montré sur la Figure 3.2, comprend essen-
tiellement :
34 Chapitre 3. Étude d’un microprocesseur 8-bit

F IGURE 3.2 – Architecture interne du 8085

1. Unité arithmétique et logique (UAL, en anglais :ALU)


Elle effectue les différentes opérations arithmétiques et logiques (+,-,*,/, AND, OR,
NOT,.., décalage à gauche ou à droite, ..etc), L’UAL utilise deux registres essentiels,
l’accumulateur (registre 8-bit) qui fait partie de chaque opération arithmétique et logique
et un registre temporaire (8-bit) pour le stockage de données pendant l’exécution de
l’opération, ce registre est inaccessible par le programmeur.

2. Unité de commande
Elle décode l’instruction à exécuter et génère les séquences de tous les signaux néces-
saires pour l’exécution correcte de l’instruction.

3. Registres
Ils peuvent être classés en trois catégories :

a. Registres généraux
• B, C, D, E, H et L : Sont des registres de 8-bit, souvent utilisés pour le stockage
temporaire d’informations. Ils peuvent être utilisés seuls ou combinés comme des
registres 16-bis, BC, DE, et HL
3.3 Étude du microprocesseur 8085 35

b. Registres spéciaux
• Compteur de programme (Program Counter (PC)) : C’est un registre 16-bit, il
contient l’adresse de la prochaine instruction à exécuter. L’exécution d’une instruc-
tion incrémente automatiquement son contenu (+1).
• Pointeur de pile (Stack Pointer (SP)) : C’un registre 16-bit, il indique au micropro-
cesseur l’adresse de la prochaine case disponible dans la pile.
La pile est une petite partie de la mémoire RAM utilisée pour sauvegarder les
contenus des registres lorsque cela est nécessaire.
• Registre d’instruction (Instruction Register (IR)) : C’est registre non program-
mable, il contient l’instruction en cours d’exécution. Ce registre est chargé depuis de
la RAM ou de la ROM au début du cycle d’exécution, dont l’adresse est donnée par
le compteur de programme PC.
• Registre d’état (Flag Register) : Il est composé de plusieurs bits appelés drapeaux
(Flags) servant à stocker des informations concernant le résultat de la dernière
instruction exécutée.

F IGURE 3.3 – Bits du registre d’état (Flag register)

Les rôles des cinq drapeaux (flags ) de registre d’état sont les suivant :
✓ S (Sgin Flag (Bit de signe)) : il indique le signe du résultat dans l’accumulateur
(1-négatif, 0-positif). Pour une opération d’addition ou de soustraction, S=1 si le bit
le plus significatif du résultat est égal à "1".
✓ Z (Zero Flag) : Ce drapeau est mis à 1 si le résultat de l’opération est nul.
✓ AC (Auxillary carry Flag) : Ce bit est égal à 1 s’il y a une retenue du quarter de
poids faible dans le quarter de poids fort.
✓ P (Parity Flag) : Ce bit est mis à 1 si le résultat contient un nombre pair de 1 (la
parité est paire) et mis à 0 si le résultat contient un nombre impair de 1 (la parité est
impaire).
✓ CY (Carry Flag) : Quant une retenue ou une report est générer lors d’une opération,
le CY est mis à 1.

c. Registres non programmables


• Registre d’instruction (Instruction Register (IR)) : Il est déjà présenté dans les
registres spéciaux.
• Registre de décodage d’instructions : Il décode l’instruction trouvée dans le
registre d’instruction.

3.3.3 Démultiplexage du bus AD7-AD0


Le démultiplexage des signaux AD7-AD0 se fait en mémorisant l’adresse trouvée
dans le bus à l’aide d’un verrou (latch) externe (qui est un ensemble de bascule D). La
commande de ce verrou de faite par le signale ALE (Address Latch Enable) comme le
montre la Figure 3.4.
36 Chapitre 3. Étude d’un microprocesseur 8-bit

F IGURE 3.4 – Démultiplexage du bus AD7-AD0

Exemple :
Cet exemple montre l’adressage d’une mémoire de 1Ko (Figure 3.5) tout en utilisant le
verrou (latch) afin de démultiplexer la partie la moins significative de l’adresse.

F IGURE 3.5 – Adressage d’une mémoire de 1 Ko tout en utilisant le démultiplexage

3.3.4 Format d’une instruction


Une instruction est formée par un ou plusieurs octets, le premier champ représente
l’opération à effectuer, qui s’appelle l’opcode (Operation Code), qui est toujours codé sur
8-bit. Le deuxième champ peut être une donnée 8-bit (ou 16-bit), un registre interne ou
une mémoire d’une position mémoire, qui est appelé opérande.

Exemple :
LDA 1300H
↗ ↖
Opération à effectuer Opérande (ici une adresse de 16-bit)
(Le code d’opération (opcode) 3A )

3.3.5 Taille des instructions


L’ensemble des instructions du 8085 est divisé en trois groupes :
1. Instructions de tailles 1 octet (pas l’opérande, opcode seulement).
CMA : Compléter le registre A (opcode est 2FH, Mnémonique : CMA).
2. Instruction de tailles 2 octets (opcode + 1 opérande de 8-bits)
MVI A, 28H : Écrire la valeur 28H dans le regitre A.
3.4 Jeu d’instruction du 8085 37

3. Instructions de tailles 3 octets (opcode + opérande de 16-bit).


LDA 1001H : Charger le contenu de l’adresse 1001H dans l’accumulateur A, L’op-
code de LDA est 3AH, l’opérande est une adresse de 16-bit (2 octets).
Les trois instructions précédente seront écrites dans une mémoire, qui commence par
l’adresse 1000H, de la manière suivante :

1000H 2FH −→ CMA 1003H 3AH −→ LDA


1001H 3EH −→ MVI A 1004H 01H
1002H 28 H 1005H 10H

3.3.6 Mode d’adressage


Le mode d’adressage spécifie la façon dont est calculée l’adresse mémoire d’un opé-
rande. Le microprocesseur 8085 possède quatre modes d’adressage.

a/ Adressage par registre


Ce mode d’adressage concerne tout transfert ou toute opération entre deux registres
8-bit.

Exemple :
MOV A, B : C’est le transfert du contenu de B dans A (A←B) ; il n’a aucune adresse
mémoire.

b/ Adressage immédiat
On parle de mode d’adressage immédiat lorsque l’opérande contient une donnée.

Exemple :
MOV A, 50H : La valeur 50H sera stockée immédiatement dans A (A←50H).

c/ Adressage direct
Dans ce mode, l’adresse de la donnée en mémoire est directement spécifiée dans
l’opérande.

Exemple :
LDA A, 2000H : charger l’accumulateur A par le contenu de l’adresse 2000H
(A←[2000H]).

d/ Adressage indirect
Dans ce mode, l’accès à une donnée en mémoire se fait via un registre qui contient son
adresse.

Exemple :
MOV A, M : charger l’accumulateur A par le contenu de la position mémoire dont
l’adresse est le contenu du registre paire H .

3.4 Jeu d’instruction du 8085


Comme le microprocesseur 8085 est de 8-bit, il peut avoir jusqu’à 28 = 256 instructions,
cependant, le 8085 utilise uniquement 246 combinaisons qui représentent 74 instructions.
38 Chapitre 3. Étude d’un microprocesseur 8-bit
Ces instructions peuvent être regroupées en cinq groupe :
▶ Instructions de transfert.
▶ Instructions arithmétiques.
▶ Instructions logiques.
▶ Instructions de branchement.
▶ Instructions de contrôle d’opération.

3.4.1 Instructions de transfert


Ce groupe d’instructions permet de transférer (copier) des données d’un emplacement
(registre, mémoire ou interface d’E/S) à un autre (registre, mémoire ou interface d’E/S).
Le contenu de la source n’est pas déplacé.

1. MOV : MOVe
Syntaxe : MOV Rd, Rs ou MOV M, Rs ou MOV Rd, M
Tel que : Rd : registre de destination
Rd : registre de destination
Rd : adresse spécifié par HL

Exemple :
MOV C, D [C]←[D] ou MOV M, B [MHL ] ←[B]

2. MVI : MoVe Immediate. charger un octet de données


Syntaxe : MOV Rd, donnée 8-bit

Exemple :
MVI A, 14H [A]←14H

3. OUT : OUTput to port. Envoyer un octet de données depuis A vers une interface
de sortie.
Syntaxe : Out adresse du port de sortie

Exemple :
OUT 08H

4. IN : INput from port. Recevoir un octet de données d’une interface d’entrée dans
A.
Syntaxe : IN adresse du port d’entrée

Exemple :
IN 09H

5. LXI : Load eXtended Immediat. Charger un mot (16-bit) de données dans un


registre pair.
Syntaxe : LXI Rp, donnée 16-bit
Telque : Rp : registre pair
3.4 Jeu d’instruction du 8085 39

Exemple :
B C
LXI B, 1400H [B]=14H et [C]=00H 14 00

6. LDA : LoaD Accumulator. Charger l’accumulateur par le contenue d’une adresse


mémoire.
Syntaxe : LDA adresse 16-bit

Exemple :
LDA 2000H [A]← [M2000 ]

7. LDAX : Load Accumulator eXtended. Charger l’accumulateur par le contenue


d’une adresse mémoire spécifiée dans le registre pair B (BC) ou D(DE). Il n’accepte pas le
pair HL
Syntaxe : LDAX Rp

Exemple :
LDAX B

8. STA : STore Accumulator. Stocker l’accumulateur dans une case mémoire.


Syntaxe : STA adresse 16-bit

Exemple :
STA 3000H [M3000 ]←[A]

9. STAX : STore Accumulator indirect (by eXtended register). Stocker l’accumula-


teur dans une case mémoire dont l’adresse est spécifiée dans un registre pair (extended) B
ou D.
Syntaxe : STAX Rp

Exemple :
STAX D [MDE ]←[A]

10. LHLD : Load HL register Direct. Charger le registre pair H par le contenu de la
case mémoire spécifié par les 16-bit de l’opérande et le contenu de la case qui la suit.
Syntaxe : LHLD Adresse 16-bit

Exemple :
LHLD 2000H

11. SHLD : Store HL register Direct. Charger la case mémoire spécifiée par l’adresse
de l’opérande et la case qui suit par le contenu le contenu du registre pair H.
Syntaxe : SHLD Adresse 16-bit

Exemple :
SHLD 3000H
40 Chapitre 3. Étude d’un microprocesseur 8-bit
12. XCHG : eXCHanGe. Échanger le contenu de HL avec DE.
Syntaxe : XCHG

Exemple :
H L D E
Before XCHG A9 C2 67 89
H L D E
After XCHG 67 89 A9 C2

13. XTHL : eXchange Top stack with HL. Echanger le top de pile avec HL.
Syntaxe : XTHL

14. SPHL : Copy HL registers into the Stack Pointer. Copier les contenus des
registres HL dans le registre SP.
Syntaxe : SPHL

15. PCHL : Copy HL registers into the Program Counter. Copier les contenus des
registres HL dans le registre CP.
Syntaxe : PCHL

3.4.2 Instructions arithmétiques


Dans les opérations arithmétiques à savoir : l’addition (ADD ou ADI), la soustraction
(SUB ou SUI), l’incrémentation (8-bit (INR) ou 16-bit (INX)) et la décrémentation (8-bit
(DCR) ou 16-bit (DCX)), le microprocesseur assume que l’accumulateur A est par défaut
l’un des deux opérandes et le résultat des opérations y sera stocké. Les drapeaux (flags) du
registre d’état seront également affectés par les résultats obtenus.

1. ADD : ADDition. Additionner le contenu de l’accumulateur A avec le contenu du


registre ou case mémoire.
Syntaxe : ADD Rp ou ADD M
Tel que : Rp : Registre 8-bit, M : Adresse d’une case mémoire

Exemple :
MVI A, 04H
MVI B, 03H
ADD B [A]←−[A] + [B]
07H= 04H + 03H
Flags : S=0, Z=0, CY=0

2. ADI : ADdition Immediat. Additionner le contenu de l’accumulateur A avec une


valeur.
Syntaxe : ADI donnée 8-bit
3.4 Jeu d’instruction du 8085 41

Exemple :
MVI A, FFH
ADI 01H [A]←−[A] + 01H
00H= FFH + 01H
Flags : S=0, Z=1, CY=1

3. SUB : SUBstraction. Soustraire le contenu du registre du contenu de l’accumula-


teur ou d’une case mémoire.
Syntaxe : SUB R ou SUB M

Exemple :
MVI A, FFH
MVI B, 03H
SUB B [A]←−[B] - [A]
FCH= 03H - FFH
Flags : S=1, Z=0, CY=1

4. SUI : SUbstraction Immediat. Soustraire une valeur du contenu de l’accumulateur


A.
Syntaxe : SUI donnée 8-bit

Exemple :
MVI A, 05H
SUI 02H [A]←−05H - [A]
03H= 02H - 05H
Flags : S=0, Z=0, CY=1

5. INR : INcRmentation . Incrémenter le contenu du registre ou d’une case mémoire


par 1 (+1).
Syntaxe : INR R ou INR M

Exemple :
MVI A, 05H
INR A [A]←−1 + [A]
06H= 01H + 05H
Flags : S=0, Z=0

6. INX : INcRment eXtended register . Incrémenter un register pair ou SP (16-bit).


Syntaxe : INX Rp

Exemple :
LXI SP, 2000H
INX SP SP←−1 + SP
2001H= 1H + 2000H
Flags : S=0, Z=0
42 Chapitre 3. Étude d’un microprocesseur 8-bit
7. DCR : DeCRmentation . Decrémenter le contenu d’un registre ou d’un espace
mémoire par 1 (-1).
Syntaxe : DCR R ou DCR M

Exemple :
MVI A, 01H
DCR A [A]←−1 - [A]
0H= 1H - 01H
Flags : S=0, Z=1

8. DCX : DeCRment eXtended register . Décrémenter un register pair ou SP (16-


bit).
Syntaxe : DCX Rp

Exemple :
LXI B, 3000H
DCX B BC←−1 - BC
2FFFH= 1H - 3000H
Flags : S=0, Z=0

9. ADC : ADd with Carry . Additionner un registre 8-bit ou une case mémoire avec
A et CY.
Syntaxe : ADC R ou ADC M

Exemple :
MVI A, 30H
MVI B, F0H
ADD B [A]←−[A] + [B]
CY=1 / 20H= 30H + F0H
ADC B [A]←−CY + [A] + [B]
11H= 1H + 20H + F0H

10. ACI : ADd with Carry Immediat . Additionner une donnée 8-bit avec A et CY.
Syntaxe : ACI donnée 8-bit

Exemple :
MVI A, 30H
MVI B, F0H
ADD B [A]←−[A] + [B]
20H= 30H + F0H
ACI 34H [A]←−CY + 34H + [A]
55H= 1H + 34H + 20H

11. SBB : SuBtract with Borrow . Sourstaire registre 8-bit ou case mémoire et report
CY de A.
Syntaxe : SBB R ou SBB M
3.4 Jeu d’instruction du 8085 43

Exemple :
MVI A, 30H
MVI B, 20H
ADI FFH [A]←−FFH + [A]
CY=1 / 2FH= FFH + 30H
SBB B [A]←−CY - [B] - [A]
0EH= 1 - 20H - 2FH

12. SBI : SuBtract Immediat with borrow . Soustraire une donnée 8-bit et le report
CY de A.
Syntaxe : SBI donnée 8-bit

Exemple :
MVI A, 30H
ADI FF [A]←−FF + [A]
CY=1 / 2FH= FFH + 30H
SBI 20H [A]←−CY - 20H - [A]
0EH= 1H - 20H - 2FH

13. DAA : Decimal Ajust Accumulator . Ajustement décimal de l’accumulateur.


Cette instruction est utilisée pour obtenir le résultat d’addition de deux nombres en hexadé-
cimal sous forme décimale.
Syntaxe : DAA

Exemple :
MVI A, 38H [A]←−38H
| 38 BCD 0011 1000 0111 1101
MVI B, 45H [B]←−345H
| +45 BCD 0100 0101 + 0110
ADD B [A]←−[B] + [A]
|= 83 01111101 10000011
7DH= 38H + 45H
| 7 D 8 3
DAA [A]←−83H

3.4.3 Instructions logiques


Ces instructions effectuent des opération logiques sur le contenu de l’accumulateur.
Ces opérations vont engendrés une mise à zéro du CY.

1. ANA : ANd with Accumulator . And logique entre l’accumulateur A et le contenu


d’un registre ou d’une emplacement mémoire.
Syntaxe : ANA R ou ANA M

Exemple :

MVI A, 81H
MVI B,77H
ANA B [A]←−[B] AND [A]
01H= 77HH AND 81H
44 Chapitre 3. Étude d’un microprocesseur 8-bit
2. ANI : ABd Immediat. And logique entre le contenu de l’accumulateur A et une
valeur 8-bit.
Syntaxe : ANI donnée 8-bit

Exemple :
MVI A, 55H
ANI 01H [A]←−01H AND [A]
01H= 01H AND 55H

3. ORA : OR with Accumulator . OR logique entre l’accumulateur A et le contenu


d’un registre ou d’une emplacement mémoire.
Syntaxe : ORA R ou ORA M

Exemple :
MVI A, 81H
MVI B, 7EH
ORA B [A]←−[B] OR [A]
FFH= 7EH OR 81H

4. ORI : OR Immediat. OR logique entre le contenu de l’accumulateur A et une


valeur 8-bit.
Syntaxe : ORI donnée 8-bit

Exemple :
MVI A, 55H
ORI 02H [A]←−02H OR [A]
57H= 02H OR 55H

5. XRA : XoR with Accumulator . OU exclusif entre l’accumulateur A et le contenu


d’un registre ou d’une case mémoire.
Syntaxe : XRA R ou XRA M

Exemple :
MVI A, 80H
MVI B, 7EH
XRA B [A]←−[B] XOR [A]
FEH= 7EH XOR 80H

6. XRI : XoR Immediat. OU exclusif entre le contenu de l’accumulateur A et une


valeur 8-bit.
Syntaxe : XRI donnée 8-bit

Exemple :
MVI A, 55H
XRI 02H [A]←−02H XOR [A]
57H= 02H XOR 55H
3.4 Jeu d’instruction du 8085 45

7. CMA : CoMplement the Accumulator. Complémenter l’accumulateur (cà1).


Syntaxe : CMA

Exemple :
MVI A, 55H
CMA 1010 1010 ←− 0101 0101
A A 5 5

3.4.4 Opérations logiques supplémentaires


A. Instructions logiques de rotation
Ce sont des opérations qui font tourner les bits de l’accumulateur vers la gauche ou
vers la droite, avec ou sans accumulateur (RLC, RAL, RRC, RAR).

1. RLC : Rotate accumulator Left . Rotation à gauche de l’accumulateur A. Chaque


bit de A est décalé vers la gauche d’une seule position. Le MSB (Most Significant Bit)
(A7 ) deviendra le LSB (Least Significant Bit) (A0 ). Le MSB déplacé sera également copié
dans le flag CY.

Note : La rotation à gauche de A engendre la multiplication de la valeur de A par 2 (à


condition que le bit A7 soit 0).

Exemple :

Avant RLC [A]=AEH, CY=0

Après RLC [A]=5DH, CY=1

2. RAL : Rotate Accumulator Left through carry . Rotation à gauche de l’accumu-


lateur A via carry. Chaque bit de A est décalé vers la gauche d’une seule position. Le
contenu de CY deviendra le LSB (A0 ) et le MSB (A7 ) sera stocké dans CY.

Exemple :

Avant RAL [A]=6AH, CY=1

Après RAL [A]=D5H, CY=0

3. RRC : Rotate accumulator Right . Rotation à droite de l’accumulateur A. Chaque


bit de A est décalé vers la droite d’une seule position. Le LSB (A0 ) deviendra le MSB
(A7 ). Le LSB déplacé sera également copié dans le flag CY.

Note : La rotation à droite de A engendre la division de la valeur de A par 2 (à


condition que le bit A0 soit 0).
46 Chapitre 3. Étude d’un microprocesseur 8-bit
Exemple :

Avant RRC [A]=93H, CY=0

Après RRC [A]=C9H, CY=1

4. RAR : Rotate Accumulator Right through carry . Rotation à droite de l’accumula-


teur A via carry. Chaque bit de A est décalé vers la droite d’une seule position. Le contenu
de CY deviendra le MSB (A7 ) et le LSB (A0 ) sera stocké dans CY.

Exemple :

Avant RAR [A]=76H, CY=1

Après RAR [A]=BBH, CY=0

B. Instructions de comparaison
Le 8085 possède deux instructions de comparaison à savoir : CMP et CPI.

1. CMP : COmPare register . Comparer le contenu d’un registre ou d’une case


mémoire avec le contenu de l’accumulateur A.
Syntaxe : CMP R ou CMP M
Si [A]=[R/M] → Z=1 sinon Z=0
Si [A]<[R/M] → CY=1 sinon CY=0

Exemple :
MVI B, 00H
MVI A, 09H
CMP B [A]>[B]−→CY=0, Z=0

2. CPI : ComPare Immediate . Comparer le contenu de l’accumulateur A avec une


valeur 8-bit.
Syntaxe : CMI donnée 8-bit
Si [A]=donnée 8-bit → Z=1 sinon Z=0
Si [A]<donnée 8-bit → CY=1 sinon CY=0

Exemple :
MVI A, 09H
CPI 10H [A]<10H−→CY=1, Z=0

3.4.5 Instructions de branchements


Ce groupe d’instructions change l’exécution séquentielle de programme. Elle se di-
visent en deux types :
3.4 Jeu d’instruction du 8085 47

a. Instructions de branchement (saut) inconditionnel


Le microprocesseur va au nouvel endroit quoi que se soit.

1. JMP : JuMP . Sauter à une adresse spécifiée.


Syntaxe : JMP Adresse 16-bit

Exemple :
MVI B, 68H
MVI C, 5AH
INR B
JMP FINISH
DCR C
FINISH : MOV A, B
ADD C

2. CALL : Calls the addressed subroutine program. Sauter à une adresse spécifiée
mais la traite comme un sous programme.

• Un sous programme est un groupe d’instructions écrites séparément du programme


principal pour réaliser une tache qui apparait d’une manière répétitive dans le programme
principale.
Syntaxe : CALL Adresse 16-bit su sous programme

L’exécution de cette instruction permet de :


- Sauvegarder le contenu du PC dans la pile et copier [SP − 1] ←− [PCH]
l’adresse du sous programme dans le PC. [SP − 2] ←− [PCL]

- Décrémenter SP par 2. [PC] ←−Adresse 16-bit

2. RET : RETurn. Retour inconditionnel au programme principal.


Syntaxe : RET

L’exécution de cette instruction permet de :


[PCL] ←− [MSP ]
- Récupérer la valeur initiale du PC de la pile. [PCH] ←− [MSP+1 ]

- Incrémenter SP par 2. [PC] ←−Adresse 16-bit


48 Chapitre 3. Étude d’un microprocesseur 8-bit
Exemple :

a. Instructions de branchement conditionnel


Le microprocesseur va au nouvel endroit si la condition est vérifiée. Les conditions
sont généralement liées aux états des flags de registre d’état.
On résume les instructions de branchement en ce qui suit :
• JZ Adresse (Jump on Zero)
- Saut à l’adresse spécifiée si le résultat est nul (Z=1).
• JNZ Adresse (Jump on Not Zero)
- Saut à l’adresse spécifiée si Z=0.
• JC Adresse (Jump on Carray)
- Saut à l’adresse spécifiée si CY=1.
• JNC Adresse (Jump on No Carray)
- Saut à l’adresse spécifiée si CY=0.
• JP Adresse (Jump on Plus)
- Saut à l’adresse spécifiée si S=0.
• JM Adresse (Jump on Minus)
- Saut à l’adresse spécifiée si S=1.
• JPE Adresse (Jump if Parity is Even)
- Saut à l’adresse spécifiée si P=0.
• JPO Adresse (Jump if Parity is Odd)
- Saut à l’adresse spécifiée si P=0.

Remarque
Il existe deux instructions de manipulation du flag CY à savoir :
1. STC : Mise à 1 de CY CY ←−1
2. CMC : Implémenter CY CY ←− CY
3.4 Jeu d’instruction du 8085 49

Instructions de sous-programme
En plus de l’instruction d’appel et de l’instruction de retour inconditionnelle de sous-
programme, il existe d’autres instructions d’appel et de retour conditionnelles.

a. Appels conditionnels au sous-programme


▶ CZ Adresse (Call if Zero) ; Appel de sous-programme si Z=1.
▶ CNZ Adresse (Call if Not Zero) ; Appel de sous-programme si Z=0.
▶ CC Adresse (Call if Carry) ; Appel de sous-programme si CY=1.
▶ CNC Adresse (Call if Not Carry) ; Appel de sous-programme si CY=0.
▶ CP Adresse (Call if Positive) ; Appel de sous-programme si S=0.
▶ CM Adresse (Call if Minus) ; Appel de sous-programme si S=1.
▶ CPE Adresse (Call if Parity is Even) ; Appel de sous-programme si P=1.
▶ CPO Adresse (Call if Parity is Odd) ; Appel de sous-programme si P=0

b.Retours conditionnels de sous-programme


▷ RZ Adresse (Return if Zero) ; Appel de sous-programme si Z=1.
▷ RNZ Adresse (Return if No Zero) ; Appel de sous-programme si Z=0.
▷ RC Adresse (Return if Carry) ; Appel de sous-programme si CY=1.
▷ RNC Adresse (Return if No Carry) ; Appel de sous-programme si CY=0.
▷ RP Adresse (Return if Positive) ; Appel de sous-programme si S=0.
▷ RM Adresse (Return if Minus) ; Appel de sous-programme si S=1.
▷ RPE Adresse (Return if Parity is Even) ; Appel de sous-programme si P=1.
▷ RPO Adresse (Return if Parity is Odd) ; Appel de sous-programme si P=0

3.4.6 Instruction de pile


La pile est une partie de la mémoire RAM spécifiée par le pointure de la pile (SP) à
n’importe quelle zone de la mémoire pour sauvegarder temporairement des octets pendant
l’exécution d’un programme. SP pointe vers le top de la pile, les données sont stockées à
des adresses inférieur de l’adresse pointé par SP.

Exemple :

LXI SP, 2500H

En plus du stockage de l’adresse de retour du programme pricipal dans la pile après


l’exécution de instruction CALL, les contenus des registres pairs peuvent aussi être sto-
ckées/restaurés dans/de la pile par l’instruction PUSH/POP.
50 Chapitre 3. Étude d’un microprocesseur 8-bit
Syntaxe : PUSH Rp et POP Rp

Tel que Rp : représente l’un des registres pairs B,D ou H, ou le registre PSW (Program
Status Word), qui est l’ensemble de l’accumulateur A et le registre d’état (Flag register (F))

Exemple :
Adresse Instruction
2000H LXI SP, 2099H
2003H LXI H, 42F2H
2006H PUSH H
2007H POP H

3.4.7 Instructions de contrôle


On résume les instructions de contrôle dans le tableau suivant :

Mnémonique Opérande Opération Explication


NOP Aucune Pas d’opéra- Aucune opération est effectuée
opérande tion
HLT Aucune Arrêter et pas- Le µP termine l’exécution de l’instruction en cours
opérande ser en attente et arrête l’exécution
DI Aucune Disable Toutes les interruptions sont désactivées sauf TRAP.
opérande Interrupts
EI Aucune Enable Toutes les interruptions sont activées
opérande Interrupts
RIM Aucune Read Interrupt Elle est utilisée pour l’état des interruptions 7.5, 6.5,
opérande Mask 5.5 et de lire le bit d’entrée série
SIM Aucune Set Interrupt Elle est utilisée pour implémenter les interruptions
opérande Mask 7.5, 6.5, 5.5 et la sortie de données série

3.5 Op-code et mnémonique des instructions du 8085


Le tableau ci-dessous regroupe les op-codes et mnémoniques de toutes les instructions
du 8085.
3.6 Cycle d’exécution d’une instruction 51

3.6 Cycle d’exécution d’une instruction


le temps nécessaire pour chercher et exécuter une instruction est appelé cycle d’exécu-
tion, il se fait en trois étapes :
— Recherche de l’instruction (Fetch)
— Décodage (Decode)
— Exécution (Execute)

3.6.1 Recherche de l’instruction


Le contenu de PC (Compteur de programme) est placé sur le bus d’adresse, l’unité de
commande émit un ordre de lecture (RD = 0). Au bout de temps à d’accès à la mémoire,
le contenu de la case mémoire sélectionnée est disponible sur le bus de données. L’unité
de commande charge l’opcode dans le registre d’instruction pour le décodage.

3.6.2 Décodage de l’instruction


Le registre d’instruction contient maintenant le code opération (opcode) de l’instruction,
qui peut être contient des opérandes. l’unité de commande décode l’opcode pour exécuter
l’instruction.

3.6.3 Exécution de l’instruction


Après le décodage et la récupération de l’opérande, le microprocesseur continue
l’exécution de l’instruction. L’unité de commande place le PC sur l’instruction suivante.

Exemple
On considère l’instruction : |2000H | {zI A}, |{z}
{z } MV 32H
Adresse opcode opérande
C.M. C.M.
4 C.H. 3 C.H.

Tel que : C.M. signifié Cycle Machine


C.H. signifié Cycle d’Horloge
La Figure 3.6 montre le chronogramme de l’exécution de l’instruction (MVI A, 32H)

3.7 Temps d’exécution d’un instruction


Le temps d’exécution d’une instruction est lié au nombre de ses cycles machines (1, 2
ou 3 cycles machines). De même , chaque cycle machine est lié au nombre de ses cycle
d’horloge, par conséquent, le temps d’exécution d’une instruction (Tins) est calculé selon
la relation suivante :

∑(cycle d ′ horloge)
Tins = (3.1)
Frqunce d ′ horloge
Si on prend l’instruction de l’exemple précédent (MVI A,32H) et on suppose que la
fréquence d’horloge est égale à 2MHz, on trouve que :
• Période d’horloge T = 1/ f = 1/2Mhz = 0.5µs ;
52 Chapitre 3. Étude d’un microprocesseur 8-bit

F IGURE 3.6 – Chronogramme de l’exécution de l’instruction : MVI A, 32H

• Temps de recherche de l’opcode = 4CH = 4 ∗ 0.5µs = 2µs ;


• Temps de lecture de mémoire = 3CH = 3 ∗ 0.5µs = 1.5µs
• Temps d’exécution de l’instruction Tins = 7CH = 7 ∗ 0.5µs = 3.5µs
3.7 Temps d’exécution d’un instruction 53

Hex Mnémonique Hex Mnémonique Hex Mnémonique Hex Mnémonique


CE ACI 8-bit 2B DCX H 52 MOV D,D E5 PUSH H
8F ADC A 3B DCX SP 53 MOV D,E F5 PUSH PSW
88 ADC B F3 DI 54 MOV D,H 17 RAL
89 ADC C FB EI 55 MOV D,L 1F RAR
8A ADC D 76 HLT 56 MOV D,M D8 RC
8B ADC E BD IN 8-Bit 5F MOV E,A C9 RET
8C ADC H 3C INR A 58 MOV E,B 20 RIM
8D ADC L 04 INR B 59 MOV E,C 07 RLC
8E ADC M 0C INR C 5A MOV E,D F8 RM
87 ADD A 14 INR D 5B MOV E,E D0 RNC
80 ADD B 1C INR E 5C MOV E,H C0 RNZ
81 ADD C 24 INR H 5D MOV E,L F0 RP
82 ADD D 2C INR L 5E MOV E,M E8 RPE
83 ADD E 34 INR M 67 MOV H,A E0 RPO
84 ADD H 03 INX B 60 MOV H,B 0F RRC
85 ADD L 13 INX B 61 MOV H,C C7 RST 0
86 ADD M 23 INX H 62 MOV H,D CF RST 1
C6 ADI 8-Bit 33 INX SP 63 MOV H,E D7 RST 2
A7 ANA A DA JC 16-Bit 64 MOV H,H DF RST 3
A0 ANA B FA JM 16-Bit 65 MOV H,L E7 RST 4
A1 ANA C C3 JMP 16-Bit 66 MOV H,M EF RST 5
A2 ANA D D2 JNC 16-Bit 6F MOV L,A F7 RST 6
A3 ANA E C2 JNZ 16-Bit 68 MOV L,B FF RST 7
A4 ANA H F2 JP 16-Bit 69 MOV L,C C8 RZ
A5 ANA L EA JPE 16-Bit 6A MOV L,D 9F SBB A
A6 ANA M E2 JPO 16-Bit 6B MOV L,E 98 SBB B
E6 ANI 8-Bit CA JZ 16-Bit 6C MOV L,H 99 SBB C
CD CALL 16-Bit 3A LDA 16-Bit 6D MOV L,L 9A SBB D
DC CC 16-Bit 0A LDAX B 6E MOV L,M 9B SBB E
FC CM 16-Bit 1A LDAX D 77 MOV M,A 9C SBB H
2F CMA 2A LHLD 16-Bit 70 MOV M,B 9D SBB L
3F CMC 01 LXI B,16-Bit 71 MOV M,C 9E SBB M
BF CMP A 11 LXI D,16-Bit 72 MOV M,D DE SBI 8-Bit
B8 CMP B 21 LXI H,16-Bit 73 MOV M,E 22 SHLD 16-Bit
B9 CMP C 31 LXI SP,16-Bit 74 MOV M,H 30 SIM
BA CMP D 7F MOV A,A 75 MOV M,L F9 SPHL
BB CMP E 78 MOV A,B 3E MVI A,8-Bit 32 STA 16-Bit
BC CMP H 79 MOV A,C 06 MVI B,8-Bit 02 STAX B
BD CMP L 7A MOV A,D 0E MVI C,8-Bit 12 STAX D
BE CMP M 7B MOV A,E 16 MVI D,8-Bit 37 STC
D4 CNC 16-Bit 7C MOV A,H 1E MVI E,8-Bit 97 SUB A
C4 CNZ 16-Bit 7D MOV A,L 26 MVI H,8-Bit 90 SUB B
F4 CP 16-Bit 7E MOV A,M 2E MVI L,8-Bit 91 SUB C
EC CPE 16-Bit 47 MOV B,A 36 MVI M,8-Bit 92 SUB D
FE CPI 8-Bit 40 MOV B,B 00 NOP 93 SUB E
E4 CPO 16-Bit 41 MOV B,C B7 ORA A 94 SUB H
CC CZ 16-Bit 42 MOV B,D B0 ORA B 95 SUB L
27 DAA 43 MOV B,E B1 ORA C 96 SUB M
09 DAD B 44 MOV B,H B2 ORA D D6 SUI 8-Bit
19 DAD D 45 MOV B,L B3 ORA E EB XCHG
29 DAD H 46 MOV B,M B4 ORA H AF XRA A
39 DAD SP 4F MOV C,A B5 ORA L A8 XRA B
3D DCR A 48 MOV C,B B6 ORA M A9 XRA C
05 DCR B 49 MOV C,C F6 ORI 8-Bit AA XRA D
0D DCR C 4A MOV C,D D3 OUT 8-Bit AB XRA E
15 DCR D 4B MOV C,E E9 PCHL AC XRA H
1D DCR E 4C MOV C,H C1 POP B AD XRA L
25 DCR H 4D MOV C,L E1 POP D AE XRA M
2D DCR L 4E MOV C,M E1 POP H EE XRI 8-Bit
35 DCR M 57 MOV D,A F1 POP PSW E3 XTHL
0B DCX B 50 MOV D,B C5 PUSH B
1B DCX D 51 MOV D,C D5 PUSH D

Vous aimerez peut-être aussi