Microproseur 8085
Microproseur 8085
Introduction Générale:
.Introduction :
Le microprocesseur est entrain d’avoir un grand impact dans la vie de tous les jours de
l’homme et joue un rôle important dans les sociétés industrielles.
Un CPU construit sur un circuit intégré à partir de la technologie VLSI est appelé
Microprocesseur. Un ordinateur dont le CPU est un microprocesseur est appelé micro-
ordinateur. Un microprocesseur combiné avec une mémoire et les périphériques d’E/S
forment un micro-ordinateur.
Définition :
Un micro processeur e st un in strument ou un appare il logique
programmable, à util ité multiple qui lit des instructions so us forme binaire à
part ir d’un périphérique de sto ckage appelée mémoire . Ensuit e le
micropro cesseur reço it des données sous forme binaire; et les traite selon
les instruct ion s et fourn it le résultat vers un périphérique de sortie .
Toue machine programmable peut être représentée par les trois composantes
suivantes : Microproce sseur – Mémo ire – Périphériques d’E/S comme montré
par la figure suivante :
Mémoire
Microprocesseur
Périph. E/S
Ces trois composantes prises ensemble forment un système pour réaliser une tache
bien précise
I- Évolution du Microprocesseur :
Le 1er microprocesseur a été introduit en 1971 par Intel Corporation USA. C’était un
microprocesseur de 4-bit appelé Intel 4004. En 1992 Intel introduit le premier
microprocesseur de 8-bit appelé Intel 8008. La technologie PMOS a été utilisée dans la
fabrication de Intel 4004 et 8008. En 1973 un autre microprocesseur beaucoup plus
rapide appelé Intel 8080 a été mis sur le marché. C’est la technologie NMOS qui a été
utilisée dans sa fabrication.
NB : Les termes 4-bit et 8-bit utilisés pour les microprocesseurs méritent une explication.
Un microprocesseur de 4-bit peut traiter 4 bits en parallèle, à la fois (d’un trait). Si les
données à traiter sont plus de 4 bits, le microprocesseur va prendre jusqu’à 4 bits pour
les traiter d’abord, puis prendre encore les 4 prochains bits pour les traiter etc.…. De la
même manière, un microprocesseur de 8-bit peut gérer 8 bits de données en parallèle
à la fois.
Aujourd’hui un certain nombre de microprocesseur de 8-bit sont disponibles sur le
marché comme : Motorola MC6809, Zilog’s Z80 et Z800, les séries 6500 de MOS
Technology, les NSC800 de National Semiconductor, le SCL6502 de Semiconductor
Complex etc.….
Les microprocesseurs de 16-bit sont les suivants après les microprocesseurs de 8-bit. Les
exemples de microprocesseurs de 16-bit sont : Intel 8086, 80186, 80286, Motorola’s
MC68000, les séries de Zilog’s Z8000, les TMS 9900 de Texas Instruments, le 9940 de
Fairchild, le LSI 11 de Digital Equipment etc.…..
Les microprocesseurs les plus récents ont un mot de longueur de 32-bit. Exemple : Intel
80386 (1985) et 80486, Motorola’s 68030 (1987) et 68040, National Semiconductor
NS32032 etc.….
Ces microprocesseurs fonctionnent à des fréquences différentes et adressent des
capacités de mémoires différentes. Exemple : Intel 80386 est disponible à des
fréquences de 20, 25, et 33 Mhz et peut adresser jusqu’à 4 GB de mémoire.
Tableau 1.1 et 1.2 donnent les résumés des microprocesseurs Intel et Motorola
respectivement.
la mémoire :
La mémoire est composée d’un ROM et d’un RAM. Elle peut être aussi une disquette ou
un disque dur ou un disque laser. Le premier rôle de la mémoire est de stocker
(recevo ir) les in structions so us forme de codes binaire s appelées
programme que l’ordinate ur do it e xécuter . Le second rôle de la mémoire est
des stocker (recevoir) les données sous forme binaire sur lesquelles l’ordinateur doit agir.
Le Bus d’adresse
Le bus d’adresse est constitué de 13, 20, 24 signaux sous forme de lignes parallèles. Ces
lignes existent entre le microprocesseur et la mémoire. On sait déjà que la mémoire est
subdivisée en emplacements et chaque emplacement a une adresse unique. C’est à
partir des lignes du Bus d’adresse que le microprocesseur envoie l’adresse de
l’emplacement de mémoire pour pouvoir stocker ou écrire des informations à cet
emplacement.
Si le CPU a N lignes d’adresses; Il peut adresser jusqu’à 2N emplacements de mémoires.
Exemple : Un CPU de 16 lignes d’adresse peut adresser jusqu’à 216 ou 65636
emplacements de mémoire. Un CPU de 20 lignes d’adresse peut adresser jusqu’à 220
ou 1048576 emplacements de mémoire. Un CPU de 24 lignes d’adresse peut adresser
jusqu’à 224 ou 16777216 emplacements de mémoire.
Lorsque le micropro cesseur l it à partir o u écrit de s données vers un port ;
l’adresse du port est envoyée à partir du B us de données .
Le Bus de données
Le bus de données est constitué de 8, 16 32 ou plus de lignes (conducteurs) parallèles.
Comme indiqué par les flèches dans les deux sens au niveau de la figure 2.1. Le bus
de données est bi-dire ctionnel. Ce qui veut dire que le processeur pe ut lire
(recevo ir) des données ou des informations à partir de la mémoire ou d’un
port par l’intermédiaire du bus de données ou écrire (envoyer) des données ou
des informations à la mémoire ou à un port par l’intermédiaire du bus de données.
Le nombre de données que le processeur peut traiter à la fois correspond au nombre
de ligne du bus de données. Ce nombre de ligne est appelé Largeur du bus et
caractérise le microprocesseur. Et cette largeur du bus désigne un microprocesseur;
comme par exemple, un microprocesseur de 8-bit, ou un microprocesseur de 16-bit ou
un microprocesseur de 32-bit; ici 8, 16, 32 est le nombre de lignes du bus de donnés.
Le Bus de contrôle
Pour un bon fonctionnement du microprocesseur; il doit y avoir des lignes de contrôle.
Cette ensemble de lignes de contrôle est appelé Bus de contrôle. Le Bus de contrôle
est constitué de 4 à 10 lignes. Le bus de contrôle est utilisé pour synchroniser les
opérations du microprocesseur avec les périphériques externes. Des exemples de
signaux de contrôle typiques sont : le Memory Read, le Memory Write, le I/O Read, le
I/O Write
Pour cet exemple on va considérer que le CPU va tirer les instructions et les données
une à une. On considère aussi que les instructions, sous forme binaire sont dans des
emplacements de mémoire continus (qui se suivent) commençant par l’adresse
00100H.
Le tableau suivant donnent les codes binaires qui seront nécessaires et sont dans des
emplacements ou locations de mémoires successives pour exécuter le programme.
Adresse de la Contenu de la Contenu de la Opérations
location ou mémoire mémoire effectuées ou
emplacement de ( en binaire) (en hexadécimal) commentaires
mémoire
00100H 11100100 E4 Faire entrer à
partir de..
00101H 00000101 05 Port dont
l’adresse est 05
00102H 00000100 04 Additionner avec
00103H 00000111 07 07H
00104H 11100110 E6 Faire sortir vers..
00105H 00000010 02 Port dont
l’adresse est 02
Etapes : Opérations
1A le CPU envoie l’adresse de la 1ère instruction à la mémoire
1B le CPU envoie le signal de contrôle de lecture de la mémoire pour
activer la mémoire
1C L’instruction de 1 octet est envoyé de la mémoire vers le CPU à
partir du bus de données
2A Adresse l’emplacement de mémoire suivant pur obtenir le reste de
l’instruction
2B le CPU envoie le signal de contrôle de lecture de la mémoire pour
activer la mémoire
2C L’adresse du port e 1 octet est envoyée de la mémoire vers le CPU
sur le bus de données.
2D Le CPU envoie l’adresse du port sur le bus d’adresse
2E le CPU envoie le signal de contrôle de la mémoire pour activer la
mémoire
2F Les données à partir du port sont envoyées vers le CPU sur le bus de
données
3A le CPU envoie l’adresse de l’instruction suivante à la mémoire
3B le CPU envoie le signal de contrôle de la mémoire pour activer la
mémoire
3C L’instruction de 1 octet est envoyé de la mémoire vers le CPU à
partir du bus de données
4A Le nombre 07H est envoyé de la mémoire vers le CPU à partir du bus
de données
4B le CPU envoie le signal de contrôle de lecture de la mémoire pour
activer la mémoire
4C le CPU envoie le signal de contrôle de la mémoire pour activer la
mémoire
5A le CPU envoie l’adresse de l’instruction suivante à la mémoire
5B le CPU envoie le signal de contrôle de lecture de la mémoire pour
activer la mémoire
5C L’instruction de 1 octet est envoyé de la mémoire vers le CPU à
partir du bus de données
6A le CPU envoie l’adresse de l’instruction suivante à la mémoire pour
obtenir le reste de l’instruction
6B le CPU envoie le signal de contrôle de lecture de la mémoire pour
activer la mémoire
6C L’adresse du port e 1 octet est envoyée de la mémoire vers le CPU
sur le bus de données.
6D Le CPU envoie l’adresse du port sur le bus d’adresse
6E Le CPU envoie les données au niveau du port à partir du bus de
données
6F le CPU envoie le signal de contrôle d’écriture pour activer le port..
quantités de données, des périphériques de stockage (comme les disques durs et des
CD ROM) ; des périphériques de sortie comme les imprimantes. Le PC (ordinateur) est
une parfaite illustration des systèmes programmables.
Dans les systèmes préétablies et fixes, le microprocesseur fait parti d’un produit final et
que l’utilisateur ne pourra pas le reprogrammer. Les microprocesseurs utilisés dans ces
systèmes sont généralement catégorisés comme des MI CROCONTROLLEU RS .
Exemples de systèmes fixes, préétablis : les machines à laver, les contrôleurs de
feux rouges, les testeurs automatiques.
Conclusion générale :
Les microprocesseurs et micro-ordinateurs renfermes des applications qui ont des
conséquences grandissantes et un grand intact dans notre vie de tous les jours. Ils sont
devenus incontournables pour une société moderne.
Accumulateur
A. L U Registres universels (ou à
utilité générale)
Registres spéciaux ou
registres de contrôle
Unité de contrôle et de
synchronisation
En général le C.P.U est disponible sur circuit intégré et comprend cinq sections avec
chaque section ayant une fonction bien précise
1. UAL (Unité Arithmétique et Logique )
2. Les registres universels ou à utilité générale
3. Les registres de contrôle ou spéciaux
4. Unité de contrôle et de synchronisation
5. L’Accumulateur
Chaque fabricant ou concepteur de microprocesseur a sa propre variété avec une
architecture et une organisation spécifiques, mais les microprocesseurs peuvent avoir
des caractéristiques communes et des modes de fonctionnement identiques.
L’architecture général d’un microprocesseur a été schématiquement représente par
la figure suivante.(voir figure)
( fig. 1.6).
I. L’Unité Arithmétique et Logique (U A L)
C’est au n iveau de l’U.A.L que le micropro cesseur effectue les opérations
arithmétique s (Addition, Soustraction, Division etc.…) et logiques. (Comparaison,
AND, OR, EXOR etc…). L’unité peut être subdivisée en 3 composantes principales :
- l’Accumulateur
- le Régistre d’état
- l’UAL même.
1 L’Accumulateur
Accumulateur
3 Le registre d’index
Le Registre d’Index permet de s’adresser à un emplacement de mémoire de manière
indirecte lorsqu’il pointe à cet emplacement de mémoire.
Exemple: Si l’emplacement de mémoire dont l’adresse est 2478H est chargé au niveau
d(IX). Une instruction comme « MOV A, (IX) » va copier le contenu 2478H (pointée par
le registre IX) au niveau de l’accumulateur.
CONCLUSION
Les microprocesseurs et les microcontrôleurs trouvent des applications de plus en plus
dans chaque sphère de la vie de tous les jours Les caractéristiques des différents
microprocesseurs varient de manière importante certains sont plus favorables que
d’autres pour des applications particulières Quelques exemples typiques d’applications
sont les jeux, les équipements électroménagers’ les instruments et terminaux intelligents,
la prise de décision, la conception le contrôle, l’automatisation, la communication, les
robots etc.…..
Addition
Soustraction
AND
Exclusif OR
Complément ( NOT)
Etc …
Elle est composée de l’accumulateur, des registres temporaires, des circuits
arithmétiques et logiques et du registre flag.
Pour réaliser toutes ses opérations, l’accumulateur est toujours l’un des opérants. Le
résultat des opérations est aussi gardé au niveau de l’Accumulateur. Le registre
Accumulateur est désigné par A. L’autre opérant est soit un registre temporaire ou un
emplacement de mémoire.
2 Les registres
La figure 2.1 et 3.7 montre les registres d’Intel 8085, qui sont les suivants:
Un accumulateur de 8-bit (registre A)
Six registres universels ou à utilité générale: les registres B, C, D, E, H et L.
Un Stack Pointer ou SP de 16-bit.
Un Program Counter ou PC de 16-bit.
Un Registre d’instruction
Un Registre de statut.
Un registre temporaire.
incrémenté, ensuite l’octet de haut niveau logique est retiré et le SP est encore
incrémenté.
Exemple :
1996
1997
1998
SP 1999
2000
2000H
Exemple:
PC 0100H LDA
0101H C4 H
0100H 0102H 02 H
0103H
D7 D6 D5 D4 D D2 D1 D0
3
Sign Flag Zero flag Auxiliary Parity Flag Carry Flag
(S) (Z) flag (AC) (P) (CY)
Le microprocesseur utilise le flag pour effectuer les opérations de test sur l’aspect des
données.
Carry (CY): Le Carry flag est fixée à 1 lorsqu’il y a une retenue ou carry au cours d’une
opération arithmétique ou logique (débordement). Sinon il est fixée à 0.
Parity (P): Le Parity flag est fixée à 1 lorsque le résultat d’une opération contient un
nombre pair de 1. Sinon il est fixée à 0.
Auxiliary (AC) : L’Auxiliary flag est fixée à 1 lorsqu’un carry ou retenue est généré entre
le 3ème bit et le 4ème bit lors d’une opération arithmétique ou logique. Sinon c’est fixé à
zéro.
Zero(Z) : Le Zero flag est fixé à 1 lorsque le résultat d’une opération arithmétique ou
logique est zéro. Sinon elle est fixée à zéro.
Sign (S): Le Sign Flag est fixée à 1, si le bit le plus significatif (qui a le plus de poids
logique) lors d’une opération arithmétique et logique est à 1 sinon il est fixé à zéro.
S Z AC P CS
1 0 0 1 1
NB comme constatée, au niveau du registre d’état seuls 5 bits sont définis. Les
autres 3 bits ne sont pas définis .Mais parfois tous les 8 bits peuvent être combinés
et utilises pour d’autres instructions. Dans ce cas le flag (5 bits + 3 bits) est appelé
PSW Program Status Word).
Parfois le PSW et l’Accumulateur peuvent être associés comme un registre de 16 bits et
utilisés dans des opérations de Stack (Pile) voir schéma
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
A7 A6 A5 A4 A3 A2 A1 A0 S Z X X P X CY
Accumulateur PSW
.
fig. : Organisation du PSW
1. Le Bus d’Adresse
A8 – A15 : Les pieds A8 - A15 représentent le Bus d’Adresse et sont utilisés pour l’adresse
des 8 bits les plus significatifs (plus de poids logique) d’une mémoire ou d’un
périphérique d’E/S.
2. Le Bus de données
AD0 – AD7 : Les pieds AD0 – AD7 représentent le Bus de données et sont utilisés pour
recevoir ou envoyer des données d’une mémoire ou d’un périphérique d’E/S.
ALE: Address Latch Enable. Le signal ALE est soit de niveau 0 ou de niveau 1. Quand il
est de niveau 1; il indique que les bits sur le bus AD7- AD0 sont des bits d’adresse. Mais
quand ALE est de niveau 0, AD7 – AD0 est utilisé comme Bus de données.
RD : C’est un signal de contrôle de lecture. Il est activé quand il est de bas niveau
logique. Quand il est de bas niveau logique, il indique que la mémoire ou les
périphériques d’E/S sélectionnés sont à lire.
WR : C’est un signal de contrôle d’écriture activé quand il est de bas niveau logique.
Quand il est de bas niveau logique, il indique que les données au niveau du bus de
données sont à écrire ou envoyer vers la mémoire où vers les périphériques d’entrées et
sorties sélectionnés.
IO / M: C’est un signal de statut qui doit distinguer et différencier les opérations
destinées à la mémoire et les opérations destinées aux périphériques d’entrées et
sorties. Quand il est de Haut niveau logique il indique une opération de périphériques
d’E/S et quand il est de bas niveau logique, il indique une opération de mémoire.
S1 et S2 : Ces signaux sont des signaux de statiques similaires au signal IO / M. Ils
permettent d’identifier diverses types d’opération comme montré au niveau du
tableau suivant. Mais ils sont rarement utiliser pour les petits systèmes.
Hold (Input): Ce signal indique (quand il est de haut niveau logique) qu’un autre
périphérique (Exemple un DMA controller) demande à utiliser le Bus d’adresse ou de
données. Quand le microprocesseur reçoit un signal Hold, il libère les Bus dès que
l’exécution de l’instruction courante est terminée. Le microprocesseur recommence à
utiliser les bus à la fin du signal.
INTR (Input) : Ou Interrupt Request: C’est un signal utilisé lors d’une demande d’une
interruption. Quand INTR est actif, le microprocesseur suspend l’exécution normale du
programme pour répondre à l’interruption
INTA (Output ) :Interrupt Acknowledgment: Utilisé pour répondre au signal à une
interruption. INTR par le microprocesseur après la réception de cette dernière.
RST 5.5-- RST 6.5 – RST 7.5 et TRAP : Ou Restart Interrupt. Ce sont des signaux
d’interruption. Quand ils sont utilisés, il transfère le contrôle du programme vers un
emplacement de mémoire spécifique.
Reset In ( Input ) : Quand le RESET IN est de bas niveau; il remet le Program Counter à
zéro. Et le microprocesseur est réinitialisé.
Reset Out (Output): Le signal indique que le microprocesseur est entrain d’être
réinitialisé. Ce signal peut être utilisé pour réinitialiser les autres périphériques.
SID (Input) : C’est une ligne ou pin d’entrée où des données peuvent être envoyées au
microprocesseur en série (entrée en série). La donnée reçue à partir de SID est
envoyée et stockée au niveau du 7ème bit de l’accumulateur en utilisant l’instruction
RIM.
SOD : C’est une ligne ou pin de sortie de donnée par où le microprocesseur envoie des
données en série vers d’autres périphériques (sortie en série). Donc le contenu du 7 ème
bit de l’accumulateur est transféré à la sortie en utilisant l’instruction SIM.
6. L’alimentation
Les signaux de l’alimentation et de la fréquence sont :
Vcc : Alimentation + 5V.
Vss : Relié à la terre.
X1 X2: Ce sont des terminaux où doit être connecté un circuit oscillatoire (RL ou LC)
dont la fréquence va déclencher le circuit intérieur du microprocesseur pour produire
un clock pulse nécessaire à son fonctionnement.
CLK (OUT) : C’est un clock pulse de sortie du microprocesseur qui a la même
fréquence que le clock pulse interne du microprocesseur. Les utilisateurs peuvent
l’utiliser comme système de clock pulse pour d’autres périphériques.
Introduction:
Un ordinateur ne peut faire que ce que le programmeur lui demande de faire. Pour
effectuer une tache particulière le programmeur écrit une séquence d’ instruct ions
appelée programme. Le programme est gardé au niveau de la mémoire RAM. Le
processeur prend les instructions une à une à partir de la RAM et les exécute. Il exécute
toutes les instructions dans la RAM pour produire le résultat voulu.
I. Les types de langages
1- Le langage machine :
un ordinateur utilise les nombres binaires pour ses opérations et ne comprend que les
informations composées de 0s et de 1s. Les programmes écrits so us la forme de
0s et de 1s sont appelés les PROPGRAMMES DE LANG AGE MACHI NE
(MACHINE LANGUAGE PROGRAMME).
Exemple :
Au niveau de l’exemple suivant ou deux nombres placés dans les emplacements de
mémoire 2501 à 2503 sont additionnées et le résultat gardé au niveau de
l’emplacement 2503.
DONNES :
Adresse mémoire Données
0010010100000001 00010101
0010010100000010 00100000
PROGRAMME
Codes machines Commentaires
00100001 Obtient l’adresse du 1er nombre c a d 2501H dans le
registre paire HL
00000001
00100101
01111110 Obtient le 1er nombre dans l’accumulateur
00100011 Incrémenter le contenu du registre paire HL
10000110 Ajouter le 1er nombre au 2ème nombre
00110010 Garder le résultat dans 2503H
00000011
00100101
01110110 Stop
Inconvénients
- Difficile à comprendre et à vérifier
- Les programmes sont longs
- L’écriture du programme est difficile et épuisante
PROGRAMME
Codes machines Commentaires
21 Obtient l’adresse du 1er nombre c a d 2501H dans le
registre paire HL
01
25
7E Obtient le 1er nombre dans l’accumulateur
23 Incrémenter le contenu du registre paire HL
86 Ajouter le 1er nombre au 2ème nombre
32 Garder le résultat dans 2503H
03
25
76 Stop
DONNES :
Adresse mémoire Données
2501 0F
2502 14
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. Chaque code en
alphanumérique est 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 MNE MONI CS est
appelé LANG AGE ASSE MBLEUR (ASSEMBLY LANGUAGE).
Exemple :
Un exemple de programme en langage assembleur pour l’addition de 2 nombres
placés dans 2 emplacements de mémoires successifs 2501H et 2502H est montré ci-
dessous. La somme est gardée au niveau de l’emplacement de mémoire 2503H
PROGRAMME
Mnemonics Opérant Commentaires
LXI H, 2501H Obtient l’adresse du 1er nombre c a d 2501H dans le
registre paire HL
MOV A, M Obtient le 1er nombre dans l’accumulateur
INX H Incrémenter le contenu du registre paire HL
ADD M Ajouter le 1er nombre au 2ème nombre
STA 2503H Garder le résultat dans 2503H
HLT STOP
DOONNEES
2501 – 49H
2502 – 56H
RESULTAT
2503
Remarque:
• Chaque microprocesseur a un langage assembleur qui lui est propre.
• De manière évidente un programme écrit avec un langage Assembleur doit
être traduit ou convertit en langage machine avant d’être exécuté. La
conversion est faite à l’aide d’un logiciel. Un programme ou logiciel qui convertit
ou traduit un programme écrit en langage assembleur sous forme de
programme en langage machine est appelé ASSEMBLEUR.
internat ionale . Ces langages sont orientés vers la procédure et non vers la machine
(ordinateur). Lorsqu’un programme est écrit sous forme de langage évolué, on a pas
besoin de connaître l’architecture de l’ordinateur. Et un programme écrit à partir d’un
type d’ordinateur peut être facile à exécuter à partir d’un autre type d’ordinateur (il est
portable).
Exemple de langage évolué comme Basic.
Input a
Input b
Let c = a + b
Print c
End
Bien sur on a besoin aussi de convertir le programme sous forme de langage évolué en
langage ou code machine. Ici un autre programme appelé COMPILATEUR ou
INTERPRETEUR est utilisé pour convertir ou traduire un langage évolué en code ou
langage machine pour l’opération de l’ordinateur.
Chaque langage de programmation évolué a son propre compilateur ou interpréteur.
Compilateur
Code source Ou Code Objet
Interpréteur
2- Le groupe Arithmétique :
Ces instructions effectuent des opérations arithmétiques comme l’addition, la
soustraction, l’incrémentation et la décrémentation.
• Exemple:
ADD
SUB
INR
DCR
3- Le groupe logique :
Ces instructions effectuent plusieurs opérations logiques avec le contenu de
l’accumulateur.
Exemple:
• - AND, OR, EX-OR : ANA, ORA, XRA
• - COMPARE : CMP
• - COMPLEMENT : CMA
4- Le groupe de branchement :
Ce groupe d’instructions perturbe l’exécution ou la progression normale d’un
programme de manière inconditionnelle ou conditionnelle.
Exemple:
• - JUMP :
• - CALL
• - RETURN
• - RESTART
5- Le groupe de machine :
Ces instructions contrôlent le fonctionnement de la machine.
Exemple:
• - HALT :
• - CALL
• - etc.…
Une instruction de 2 octets qui nécessite 2 emplacements de mémoire pour être gardé
au niveau de la mémoire.
c- Les instructions de 3 octets :
Dans une instruction composée de 3 octets, le 1 er octet représente l’opcode, et les
deux autres octets suivant représentent une adresse de 16-bit. Il faut bien noter que le
2nd octet est la première partie de l’adresse et le 1er octet est la le seconde partie de
l’adresse
Exemple :
JMP 2085H
LHI H, 4080H
Une instruction de 3 octets qui nécessite 3 emplacements de mémoire pour être gardé
au niveau de la mémoire.
IV. Les modes d’adressage des instructions
Dans cette instruction la source peut être un registre, un port d’entrée, ou bien un
nombre de 8-bit. Les sources et les destinations sont en fait des opérants. Les
différentes manières o u formes d’ indiquer de s opérants sont appelées
MODES D’ADRESSAGE DES INSTRUCTIONS. L’ensemble des instructions du 8085 contient
les modes d’adressage suivants :
- l’adressage registre
- l’adressage immédiat
- l’adressage registre indirect
- l’adressage implicite
1- L’adressage registre :
Dans le mode d’adressage registre, les opérants sont des registres universels ou d’utilité
générale (A, B, C, D, E, H, H)
Exemple : MOV A, B
ADD B
2- L’adressage immédiat :
Dans le mode d’adressage immédiat, l’opérant est précisée à l’intérieur de l’instruction
même, la donnée qui agit comme opérant est explicitement précisé dans l’instruction
même.
Exemple : MV A, 05
ADI A, 06
LDA 9542
3- L’adressage registre indirect:
Dans le mode d’adressage registre indirect, l’adresse de l’opérant est précisée par un
registre pair.
Exemple : LXI H, 2500H LXI H, 2500
ADD M MOV A, M
4- L’adressage implicite :
Dans le mode d’adressage implicite, l’opérant est sous entendu
Exemple : Ces instructions où l’accumulateur n’est pas cité.
CMA
RAL
RAR
etc…
V. Comment écrire, assembler et exécuter un programme simple :
Un programme est une séquence d’instructions exécutées pour demander à
l’ordinateur d’effectuer une tache bien précise. Pour écrire un programme il faut
div iser le problème en petites étapes en fonction des opérations que le
8085 peut effectuer . Ensuite, il faut traduire ces étapes en instructions. Voici un
exemple pour écrire un programme simple pour l’addition de deux nombres avec le
langage du 8085.
1- Énoncé du problème :
Écrire les instructions nécessaires pour charger les nombres hexadécimaux 32H et 48H
dans les registres A et B respectivement. Additionner les nombres et afficher la somme
au niveau du LED connecté au port de sortie PORT1.
2- Analyse du problème :
Même si ceci est un simple problème ; il est nécessaire de div iser le problème en
petite s étapes pour connaître et examiner la procédure d’écriture d’un
programme . En général la manière dont le programme est énoncé donne des
indications sur les étapes nécessaires. Ces étapes sont les suivantes :
1- Charger les nombres dans les registres
2- Additionner les nombres
2 Additionner les
nombres.
héxadécimaux
3 Afficher la somme.
Fin
7- Exécuter le programme :
Pour exécuter le programme nous avons beso in de dire au
micropro ces seur par o ù le program me commence en entrant l’adresse de
mémoire 2000H. Puis on presse sur la touche EXECUTE pour débuter l’exécution du
programme. Dès que la touche EXECUTE est pressée , le microprocesseur va charger
2000H au niveau du PC ( Program counter) et le contrôle de programme est transféré
du programme du moniteur à notre programme.
Le microprocesseur commence à lire les codes machines un à un et les exécute
jusqu’à ce qu’il rencontre l’instruction HLT.
VI. Survole de l’ensemble des instructions du 8085 :
Pour pouvoir développer des logiciels et écrire des programmes pour contrôler des
systèmes ; une bonne compréhension de l’ensemble des instructions du 8085 est
essentielle. Pour Intel 8085 il y a 74 codes d’opération résultant sur 246 instructions. Ces
instructions peuvent être regroupées de la minière suivante selon leur type :
Les notations suivantes sont utilisées dans la description des instructions :
R = registre de 8-bit du 8085 (A, B, C, D, E, H, L)
M= registre mémoire (emplacement)
RS= Registre source (A, B, C, D, E, H, L)
Rd= registre destination (A, B, C, D, E, H, L)
HLT Hlt
Exemple 1:
Charger l’accumulateur avec l’octet de donnée 82H et sauvegarder la donnée dans
le régistre B.
Instructions MVI A, 82H
MOV B, A
Exemple 2 :
Écrire les instructions nécessaires pour lire les constants ON/OFF connectées au port
d’entrée dont l’adresse est 00H et activer (alimenter) les périphériques connectés au
port de sortie dont l’adresse est 01H comme montré par le schéma de la figure 6.1.
Solution:
Instructions IN 00H
OUT 01H
HLT
Petits cercles fléchés pour représenter une continuation vers une page
différente
)
La figure ci-contre montre la procédure des étapes décrites précédemment dans un
organigramme
Début
Sortir Nombre
Fin
MVI B, 37H
MVI A, B
OUT 01H
HLT
2ème Étude de cas : Programme de transfert de données pour contrôler des
périphériques de sortie.
Énoncé du problème :
Un micro-ordinateur est conçu pour contrôler plusieurs appareils et lampes dans une
maison. Le système a un port de sorite dont l’adresse est 01H. et –plusieurs unités sont
connectées aux bits D0 à D7 comme montré par la figure 6.4 (voir figure). Une matinée
froide, vous voulez allumer ou démarrer la radio, la cafetière et le chauffage. Écrier les
instructions nécessaires pour le micro-ordinateur. Assumer que la mémoire RAM
commence par 2000H.
Analyse du problème :
Le port de sortie montré à la figure 6.4 est un flip flop (bascule) D. Quand les données
sont envoyées au port de sortie, elles sont relayées par le flip flop D. un bit de donnée
de logique 1 alimente approximativement 5V comme sortie et peut activer un relais.
Pour allumer la radio, la cafetière et le chauffage, il faut fixer D6, D5 et D4 à la logique
1 et les autres bits à la logique 0.
D7 D6 D5 D4 D3 D2 D1 D0
0 1 1 1 0 0 0 0
01110000 = 70H
Le port de sortie requiert 70H, et 70H pourrait être envoyé au port de sortie en
chargeant l’accumulateur avec 70H.
Le programme :
Mnémonics Commentaire
MVI A, 70H Charger l’accumulateur avec les bits
nécessaires pour allumer les périphériques
1. L’Addition :
Le 8085 effectue des additions avec des nombres binaire s de 8 -bit et g arde le
résultat au niveau de l’accumulate ur . Si la somme est plus large que les huit bit
(FF), le carry flag est fixé.
Exemple 1:
Le contenu de l’accumulateur est 93H et le contenu du registre C est B7H. Additionneur
les 2 contenus
Solution :
Instructions ADD C
CY D7 D6 D5 D4 D3 D2 D1 D0
(A ) 93H = 1 0 0 1 1 0 0 1
(B) B7 = 1 0 1 1 0 1 1 1
Som. (A) 4AH = 1 0 1 0 0 1 0 1 0
Conditions des flags
S=0 Z = 0 CY = 1
Donc la somme est 4AH, il y a débordement et la carry est fixé
MVI C,6F
INR C
MOV A,C
ADD D
OUT PORT1
PORT1
HLT
2. La Soustraction :
Le 8085 effectuent une soustractio n en utilisant la méthode du second
complément avec des nombres binaire s de 8 -bit et garde le résultat au
niveau de l’accum ulateur . Une soustraction peut être effectuée soit en utilisant
l’instruction SUB pour soustraire le contenu d’un régistre source (A,B, C, D, E, H, L) ou
l’instruction SUI pour soustraire un nombre de 8-bit du contenu de l’accumulateur. Dans
les deux cas c’est toujours (A-X ; X étant l’autre régistre ou le nombre de 8-bit)
Le 8085 effectue intérieurement les étapes suivantes pour exécuter l’instruction SUB ou
SUI
MVI C,39H
MOV A,B
SUB C
OUT PORT1
PORT1
HLT
Pour effectuer l’instruction SUB le microprocesseur va effectuer intérieurement les opérations suivantes :
CY D7 D6 D5 D4 D3 D2 D1 D0
(B ) 39H = 0 0 1 1 1 0 0 1
Etape 1 1er complément de 39H = 1 1 0 0 0 1 1 0
Etape 2 2ème complément de 39H + 0 0 0 0 0 0 0 1
1 1 0 0 0 1 1 1
Pour soustraire 30H – 39H ajouter 30H = 0 0 1 1 0 0 0 0
30H au 2ème complément de 39H
Etape 3 = 0 1 1 1 1 0 1 1 0
Etape 4 Complémenter le carry CY 1 1 1 1 1 0 1 1 1
Conditions des flags
S=1 Z=0 CY = 1
Comme le carry est fixé à 1 ; le nombre F7H est le 2nd complément de (39H-30H)=09H
III. Les opérations Logiques :
Le microprocesseur est généralement un puce programmable, il peut effectuer toutes
les opérations logiques à travers son ensemble d’instruction. Les instructions du 8085
incluent les instructions logiques comme AND , OR, EXOR et
NOT(COMPLEMENT).
Instructions : Les instructions Logiques:
- Considèrent implicitement que l’accumulateur est un des opérants
- Réinitialisent le carry flag. L’instruction COMPLEMENT est une exception. Elle
n’affecte aucun flag.
- Modifient les flags Z, P et S selon les conditions du résultat
- Place le résultat au niveau de l’accumulateur
- N’affecte pas (ne change pas) le contenu du régistre opérant.
Analyse du programme :
Dans ce problème la position d’un seul contact nous intéresse : S7 ; qui est connecté à
ligne D7 du bus de données. Assumer que différentes personnes ont activé ou allumer
ou mis en position ON les contacts du climatiseur (air conditionner) (S7), la radio (S4), et
les lampes (S3, S2, S1, S0). Si le microprocesseur lit le port d’entrée (IN 00H),
l’accumulateur va recevoir la donnée qui est l’octet 9FH. Cette instruction peut être
aussi simulée par l’instruction MVI A, 9FH. Mais si vous êtes intéressés seulement de savoir
si le contact S7 est en position ON ; vous pouvez masquer les bits D6 à D0 en
appliquant la logique AND aux données d’entrées avec un octet qui a 0 aux positions
D6 à D0 et 1 au niveau de la position du bit D7.
D7 D6 D5 D4 D3 D2 D1 D0
1 0 0 0 0 0 0 0 = 80H
Après que les bits D0 jusqu’à D6 soient masqués, l’octet qui reste peut être envoyé vers
le port de sortie pour démarrer le climatiseur (Air Conditionner)
Résultat (Sortie ) du programme :
L’instruction ANI 80H applique la logique AND entre la donnée et l’accumulateur.
(A) = 1 0 0 1 1 1 1 1 (9FH)
AND
(Octet pour masquer) 1 0 0 0 0 0 0 0 ( 80H)
(A) = 1 0 0 0 0 0 0 0
Conditions des flags
S=1 Z=0 CY = 0
Programme :
Instructions
Commentaires
Opcode Opérant
A, Donnée Cette instruction simule
MVI
l’instruction IN 00H
ANI 80H Masquer tous les bits excepté D7
Dans cet exemple la sorite ou résultat est le même que l’octet de donnée (80H) pour
masquer ; parce que le contact S7 ( ou le bit D7) est en position ON. Si le contact S7 est
en position OFF, la sortie serait zéro.
L’OPERATION « MASQUER » EST SOUVENT UTLILISEE POUR ELIMINER LES BITS NON VOULUS
DANS UN OCTET. L ‘octet pour éliminer (masquer) (qui doit être en opération AND) est
déterminé en plaçant des 0s dans les positions des bits qui doivent être masqués et des
1s dans les autres positions des bits qui restent.
2- OR, EXCLUSIVE-OR Et NOT:
Les instructions ORA et ORI représentent la porte logique OR avec 8 portes OR de 2
entrées. Ce processus est similaire à la logique AND expliquée dans la section
précédente. L’instruction (XRA et XRI) effectue la fonction logique de la porte Exclusive
OR pour huit bits. Et l’instruction CMA applique la fonction logique NOT aux bits de
l’accumulateur.
Exemple 1 :
Assumons que le régistre B contient 93H et l’accumulateur contient 15H. Donner le
résultat des instructions ORA B, XRA B, ET CMA.
1- L’instruction ORA B va effectuer l’opération suivante
(B) = 1 0 0 1 0 0 1 1 (93H)
OR
(A) = 0 0 0 1 0 1 0 1 (15H)
(A) = 1 0 0 1 0 1 1 1 (97H)
Conditions des flags
S=1 Z = 0 CY = 0
Le résultat 97H sera placé au niveau de l’accumulateur et le flag sera réinitialisé et les
autres flags seront modifiés pour refléter les conditions des données dans
l’accumulateur.
2- L’instruction XRA B va effectuer l’opération suivante
Solution :
Pour maintenir la radio allumée sans affecter les autre s appare ils, le bit D7
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’inst ruct ion I N va lire la position de s contacts, comme montré avec D7 à
D0, et l’instruction ORI va activer le bit D4 sans affecter les autres bit s .
IN 00H (A) = D7 D6 D5 D4 D3 D2 D1 D0
ORI 10H = 0 0 0 1 0 0 0 0
(A) = D7 D6 D5 1 D3 D2 D1 D0
Condit ions des flags
Solution :
Pour éteindre le climatiseur, il faut réi n itial iser ( mettre au n iveau logique
0) le bit D7 en appl iquant 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’inst ruct ion ANI réinitialise le bit D7 sans affecter les autres bits
IN 00H (A) = D7 D6 D5 D4 D3 D2 D1 D0
ANI 7FH = 0 1 1 1 1 1 1 1
(A) = 0 D6 D5 D4 D3 D2 D1 D0
Condit ions des flags
CY = 0 ; les autres vont dépendre des données.
4- Etude de cas de programme: Appliquer l’instruction OR à des données provenant de
deux ports d’entrées
Énoncé 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.
Analyse du programme :
Pour allumer les appare ils à partir de n’importe l equel des ports ; le
micropro cesseur do it lire les contacts des deux ports et appliquer
l’instruct ion OR entre les différentes positions des contacts des deux ports.
Considérons que les positions des contacts dans un port d’entrée ( sit ué au
niveau de la chambre à co ucher) correspond à l’octet de donnée 91H et
les posit ions des contacts dans le 2nd port d’entrée (situé dans la cuisine)
correspond à l’octet de donnée A8 H. La personne qui se trouve dans la
chambre à coucher veut allumer ou démarrer le climat iseur, la radio , et la
lampe de la chambre à coucher ; e t la personne qui se trouve dan s la
cuisine veut allumer ou démarrer le climatiseur, la cafetière, et la lampe
de la cuisine .
En appliquant l’instruction OR entre ces deux octets ; le microprocesseur
peut allumer ou démarrer les appareils nécessaires.
Programme :
Adresse de Instructions
Code
la Opérant Commentaires
machine Opcode
mémoire
B, 91H Cette instruction simule la
XX00 06 MVI
lecture du port d’entrée 01H
XX01 91
XX02 0E MVI C, A8H Cette instruction simule la
lecture du port d’entrée 00H
XX03 A8
XX04 78 MOV A,B transférer le contenu de B dans
A pour appliquer la logique OR
(c’est pas possible directement
entre B, et C)
XX05 B1 ORA C Combiner les positions des
contacts des régistres B et C au
niveau de l’écran.
XX06 D3 OUT PORT1 Allumer les appareils et les
lampes
XX07 PORT1
XX08 76H HLT Fin du programme
Résultat (Sortie ) du programme :
En appliquant la logique OR entre les octets de données dans B et dan s
C :
(B) (A) = 1 0 0 1 0 0 0 1 (91H)
OR
(C)= 1 0 1 0 1 0 0 1 ( A8H)
(A) = 1 0 1 1 1 0 0 1 (9BH)
Conditions des flags
S=1 Z = 0 CY = 0
Programme :
Instructions
Commentaires
Opcode Opérant
B, 91H Cette instruction simule la lecture du port
MVI
d’entrée 01H
1- JUMP inconditionnel
L’ensemble des instructions du 8085 inclus u n e seule instruction JUMP
inconditionnelle. Le JUMP inconditionnel permet au
programmeur de réaliser des boucles continues.
Instruction
Opcodes Opérant Description
JMP 16-bit JUMP
- Ceci est une instruction de 3-octet
- Le 2nd octet et le 3ème octet représentent l’adresse de 16-bit.
Exemple :
Pour de mander au microprocesseur de se déplacer vers l’emplacement de mémoire
2000H ; on écrit :
Code Mnémonics
machine
C3 JMP 2000H
00
20
Programme :
Adresse de Code label Instructions
Commentaires
la mémoire machine Opcode Opérant
2000 DB START IN 00H Lire les contacts d’entrée
2001 00
2002 D3 OUT 01H Démarrer les appareils selon les
positions des contacts
2003 01
2004 C3 JMP START Retourner et recommencer à lire
les positions des contacts encore
2005 00
2006 20
3- Les JUMPS Conditionnels :
Les instructions JUMPS conditionnels permettent au
microprocesseur de prendre des décisions sur la base de
c e r t a i n e s c o n d i t i o n s i n d i q u é e s p a r l e s f l a g s . Les instructions
JUMPS conditionnels vérifient les conditions du flag et prennent une décision de
changer ou de ne pas changer la séquence d’un programme.
Instructions
Toutes les instructions JUMP dans le 8085 sont des instructions de 3-octets
Les instructions suivantes transfèrent la séquence du programme à l’emplacement de
mémoire précisé sous les conditions requises (données.)
5- Affichage
6- Fin
Organigramme
Les 6 étapes peuvent être transformées en organigramme comme montré par la figure
suivante :
Début
Additionner les
nombres
Est ce qu’il
y a un carry
Afficher
Fin
programme
MVI D, 9BH
MVI E, A7H
MOV A, D
ADD E
JNC AFFICHER
MVI A, 01H
HLT
Début
Effectuer la tache
Retourneretetrépéter
Retouner répéter
la tache
Un tour de piste
complété ? Le compteur
Diminuer le compteur est-il zéro
Fin
Début
BLOC 6
fin BLOC 7 Cette inclut l’envoi du résultat à un port de
fig. : 7.3 Organigramme de sortie ou le garder dans la mémoire (étape
programmation généraliste. g)
Exemple :
Écrire les instructions nécessaires pour charger le nombre de 16-bit 2050H dans le
registre pair HL en utilisant les opcodes LXI et MVI et expliquer la différence entres les
deux instructions.
Instructions
La figure ci-dessus montre le contenu des régistres et les
instructions nécessaires pour l’éxemple.
Codes Mnemonics Commentaires
Machines
LXI 21 LXI H, 2050H Charger les registres
HL
H 20 50 L 50 50 dans le registre L
20 et 20H dans le
registre H
Lxi H, 8000H
Exemple: M O V A,M
Lxi B, 8000H
Exemple: L D A X B
Exemple: L D A 8 0 0 0 H
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, LDAX, et LDA.
2050H F7
Solution :
• 1- LXI H, 2050H
• MOV A,M
• 2- LXI B, 2050H
• LDAX B
• 3- LDA 2050H
Lxi H, 8000H
Exemple: M O V M, A
Lxi B, 8000H
Exemple: S T A X B
Exemple: S T A 8 0 0 0 H
Exemple :
1- Le registre B contient 32H. Utiliser les instructions MOV, STAX pour copier le contenu
du registre B dans l’emplacement de mémoire 8000H en utilisant le mode
d’adressage indirecte.
B
32H
LXI D, 8000H
MOV A,B
STAX D
STA 8000H
LXI H, 8000H
MVI M,F2H
B 20 51 C INX B
B 20 50 C INR B
B 21 51 INR C
Étude de cas : Programme de transfert de données d’un registre à un
port de sortie:
Énoncé du problème :
16 octets de données sont placées dans les emplacements de mémoire entre XX50H et
XX57H. 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
Analyse du problème :
Le problème peut être analysé en termes des blocs montrés dans l’organigramme de
la figure suivante.
Données
XX00 37
XX00 98
Exemple 1 :
Ecrire les instructions nécessaires pour ajouter le contenu des remplacements 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
l’emplacement 2040H contient 7FH.
Charger le nombre de 16-bit 2050H dans le registre pair HL en utilisant les opcodes LXI et
MVI et expliquer la différence entres les deux instructions.
Solution :
La figure ci-dessus montre le contenu des registres et les instructions nécessaires pour
l’exemple. Il faut d’abord préciser l’emplacement de mémoire en chargeant 2040H
dans le registre pair HL
Codes Mnemonics Commentaires
Machines
LXI 21 LXI H, 2040H Charger les registres HL
H 20 50 L 40 50 dans le régistre L
20 et 20H dans le régistre H
86 ADD M
23 INx H
96 SUB M
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
l’emplacement de mémoire.
Solution :
La figure ci-dessus montre le contenu des registres et les instructions nécessaires pour
l’exemple
Codes Mnemonics Commentaires
Machines
LXI 21 LXI H, 2040H Charger les registres HL
H 20 50 L 40 50 dans le régistre L
20 et 20H dans le régistre H
36 MVI M, 59H
59H
86 INR M
36 MVI M, 90H
90
35 DCR M
Le programme :
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
CY A7 A6 A5 A4 A3 A2 A1 A0
Exemple :
Assumer que l’accumulateur contient AAH et CY = 0. Montrer le contenu de
l’accumulateur après l’exécution e l’instruction RAL deux fois.
Solution :
Avant l’exécution CY A7 A6 A5 A4 A3 A2 A1 A0
AAH
de l’instruction 0 1 0 1 0 1 0 1 0
Après l’exécution CY A7 A6 A5 A4 A3 A2 A1 A0
54H
du 1er RAC 1 0 1 0 1 0 1 0 0
Après l’exécution CY A7 A6 A5 A4 A3 A2 A1 A0
A9H
du 2ème RLC 0 1 0 1 0 1 0 0 1
Exemple :
Assumer que l’accumulateur contient AAH et CY = 0. Montrer le contenu de
l’accumulateur après l’exécution e l’instruction RLC deux fois.
Solution :
Avant l’exécution CY A7 A6 A5 A4 A3 A2 A1 A0
AAH
de l’instruction 0 1 0 1 0 1 0 1 0
Après l’exécution CY A7 A6 A5 A4 A3 A2 A1 A0
55H
du 1er RLC 1 0 1 0 1 0 1 0 1
Après l’exécution CY A7 A6 A5 A4 A3 A2 A1 A0
AAH
du 2ème RLC 0 1 0 1 0 1 0 1 0
Exemple :
Après l’exécution CY A7 A6 A5 A4 A3 A2 A1 A0
C0H
du 1er RRC 0 1 1 0 0 0 0 0 0
Avant l’exécution CY A7 A6 A5 A4 A3 A2 A1 A0
81H
de l’instruction
Après l’exécution CY A7 A6 A5 A4 A3 A2 A1 A0
40H
du 2ème RLC 1 0 1 0 0 0 0 0 0
Exemple :
Écrire une instruction pour charger l’octet de données 64H dans l’accumulateur. Et
vérifier si l’octet de données au niveau de l’emplacement de mémoire 2050H est égale
au contenu de l’accumulateur. Si les données sont égales. Allez à l’emplacement OUT1
Solution:
Supposons que nous avons 9AH au niveau de l’emplacement 2050H.
LXI H, 2050H
MVI A, 64H
CPM M
JZ OUT
A- Le cycle de l’instruction
Une instruction est une commande assignée à l’ordinateur pour effectuer une
opération ou une tache.
Les étapes nécessaires pour qu’un processeur ou CPU
accomplisse le retrait d’une instruction et les données
nécessaires de la mémoire et de l’exécuter sont appelées
l e C Y C L E D E L’INSTRUCTION (INSTRUCTION CYCLE ou EC). Le cycle de l’instruction
est constitué du CYCLE DE RETRAIT ou RAPPEL (FETCH CYCLE ou FC) et du CYCLE DE
L”EXECUTION (EXECUTION CYCLE ou EC). Les étapes nécessaire pour tirer un opcode
de la mémoire constituent le FETCH CYCLE; alors que les étapes nécessaires pour tirer
des données (s’il existe) de la mémoire et d’effectuer les opérations précisées dans une
instruction constituent l, EXECUTION CYCLE.
Le temps nécessaire pour l’exécution d’une instruction (IC) est donnée par :
IC = FC + EC
Le régistre
est-il zéro
Le registre est chargé avec le compte FF (255 décimal) qui est décrémenter et le
programme est exécuté autour de la boucle jusqu’à ce que le contenu du registre C
soit à Zéro. Après le contrôle retourne au programme principal.
Comment calculer le temps de temporisation :
Si on regarde bien le programme on peut distinguer deux parties :
- Le temps d’exécution de la boucle (Time inside Loop): TL
- Le temps d’exécution des instructions en dehors de la boucle (time outside Loop):To
Donc le temps total de la temporisation est :
TD = To + TL
Voici une table donnant un récapitulatif de chaque instruction, de son nombre d’états
du nombre de fois qu’elle est exécutée.
Instructions États Nombre Nombre total d’états par
d’exécution instruction
MVI 7T 1 7T X 1
DCR 4T N 4T X N
JNZ 7/10T (N-1) + 1 10T X (N-1) + 7T X 1
RET 10T 1 10T X 1
NB : Pour l’instructions JMP le nombre d’ états est un peu particulier. Car le nombre
d’états comme indiqué (7/10) varie selon le sens de l’exécution. Le nombre d’états
pour JNZ est d 10 lors que le sens de l’exécution de JNZ vers DCR pour une réexécution
de la boucle, alors que le nombre d’états n’est que de 7 lorsque l’exécution va de
l’instruction JNZ vers RET.
Donc :
TD = TO + TL
TO = T x (7 x 1) + T x (10 x 1)
TO = 17T
TL = T x (4N + 10 (N – 1) +7)
TL = T X (14N – 3)
TD = 17T + T X (14N – 3)
TD = T (17 + 14N – 3)
Considérons que la fréquence du clock pulse du microprocesseur est de 2 Mhz
1 1
T= 0,5 x10 -6 s
F 2Mhz
N = FFH = 255d
TD = 0,5x10 -6 s (17 + 14 x 255 – 3)
TD = 1792 x 10-6 s
NB : les états de 7/10 peuvent être négligé et prendre 10états sur le nombre de fois que
JNZ va être exécuté.
Nb : l’instruction ORA est utilisée pour fixer le flag Zéro car l’instruction DCX n’affecte
pas le flag.
Voici une table donnant un récapitulatif de chaque instruction, de son nombre d’états
du nombre de fois qu’elle est exécutée.
Instructions Etats Nombre Nombre total d’états par
d’exécutions instruction
LXI 10T 1 10T X 1
DCX 6T N 6T X N
MOV 4T N 4T X N
ORA 4T N 4T X N
JNZ 10/7T (N-1) + 1 10T X (N-1) + 7 TX 1
RET 10T 1 10T X 1
Donc :
TD = TO + TL
TO = T x (7 x 1) + T x (10 x 1)
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
TD = T (17 + 24N)
TD = 109112 x 10-6 s
Donc :
TD = TO + TL
= TO + TL1 + TL2
TO = T x (7 x 1) + T x (10 x 1)
TO = 17T
TL1 = T(14N1 + [10(N1 – 1) + 7))
= T ( 14 N1 - 3)
N1 = FFH = 255d
TL1 = 0,5x10 -6 s (14 X 255 – 3)
= 1783,5 X10 - 6 s
TL1
TL2 = T(7N2 +N2 T + 4 N2 + 10 [(N2 - 1) + 1 X 7])
T
3
= N2 [21T + TL1 - ]
N2
3
Si on néglige -
N2
TL2 = 56 [21 0,5x10 -6 s + 0,5x10 -6 s + 1783,5 X10 - 6 s 0,5x10 -6 s]
TL2 = 100.46 ms
Charger le régistre B
MVI C, FFH
Décrémenter le régistre C
TL1
Décrémenter le régistre Temps de Temporisation
C pour loop1
Le régistre
C est-il zéro
Le régistre B
est-il zéro
JNZ Loop 2
Initialiser le compteur
Initialiser le compteur
Afficher le compte
Mettre à jour le compteur
Le Compte
est-il complet Temps de temporisation
Retourner
FIN
FIN
La figure montre les différents blocs ; mais leur ordre pourrait être modifié en fonction
de la nature du problème comme montré par la figure suivante.. En effet le compteur
peur être après ou avant l’initialisation.
2604 Emplacement
suivant disponible
2605
2606 SP
2607 2608
2608 6B
Emplacement à la
tête de la pile
Push B
2604 Emplacement B C
suivant disponible 83 2A
2605
2606 SP
2607 2608
2608 6B
Emplacement à la
tête de la pile
2604 Emplacement
suivant disponible
2605
2606 2A SP
2607 83 2606
2608 6B
POP B
2604 Emplacement B C
suivant disponible 53 38
2605 4C
2606 84 SP
2607 9C 2605
2608 1B
Après POP B
2604 Emplacement B C
suivant disponible 84 4C
2605
2606 SP
2607 9C 2607
2608 1B
Le tableau suivant montre les instructions nécessaires utilisées avec les piles.
Instructions :
Opcode Opérant Description
Charger le Registre Pair Pointer de la tête de la pile avec une adresse
LXI SP, 16-bit
de 16-bit
Stoker le contenu du registre pair au niveau de la pile
PUSH Rp - C’est une instruction d’1 octet
PUSH B
Elle copie le contenu du registre pair précisé au niveau de la pile
comme décrit en bas.
PUSH D
PUSH PSW Le régistre qui pointe à la tête de la pile est encore décrémenté, et les
contenus du régistre de bas niveau ( cad le régistre C) sont copiés au
niveau de cet emplacement.
POP B
Elles copie le contenu des deux premiers emplacements de mémoire à
la tête de la pile au niveau du régistre pair précisé.
POP D
Instructions :
Opcod Opérant Description
e
Appeler le sous programme de manière inconditionnelle
C’est une instruction de 3 octets
Garde le contenu du Program Counter (la prochaine instruction)
au niveau de la pile
16-bit Adresse de
Décrémente le registre Pointeur de la pile par 2.
CALL la mémoire du
Se déplace inconditionnellement au niveau de l’emplacement
sous -programme
précisé par le 2ème et les 3èmes octets.
Cette instruction est complétée par l’instruction RETURN au
niveau du sous programme.