Vous êtes sur la page 1sur 18

CHAPITRE 5

Architecture et fonctionnement de l’i8080

1
I - INTRODUCTION

L’i8080 d’INTEL est l’un des premiers micro-processeurs


8 bits (standard) introduit sur le marché dès 1975. Les
microprocesseurs les plus récents fonctionnent suivant
les mêmes principes et présentent des caractéristiques
supplémentaires. Et la compréhension du
fonctionnement de l’i8080 permet d’aborder sans trop
de difficultés celui des autres microprocesseurs
« standard ».

2
II – SCHEMA GENERAL DU i8080

3
Le processeur i8080 est un système monobus articulé autour d’un
accumulateur habituellement désigné par A et qui dispose de :

- 6 registres d’usage général (banalisé), désignés par B, C, D, E, H et


L. Les deux registres internes spéciaux H et L permettent d’assurer
d’une part la compatibilité avec son prédécesseur l’i8008, et d’autre
part de communiquer avec le bus d'adresses.

- 2 registres de 16 bits : le compteur ordinal PC (Program Counter) et


le pointeur de pile SP (Stack Pointer). Les parties hautes (poids forts) et
basse (poids faibles) de ces registres sont désignées par les lettres H
(High) et L (Low) respectivement, afin d’y distinguer facilement les 8
bits de plus forts poids des 8 bits de plus faibles poids  les parties
hautes et basses du PC (resp. SP) seront appelées PCH et PCL (resp.
SPH et SPL). PC et SP sont reliés au bus d'adresses et peuvent être
manipulés aussi bien comme des registres uniques 16 bits, que comme
des paires de registres 8 bits.

4
- 1 registre d’instruction appelé IR (Instruction Register) qui mémorise
à chaque fois un octet de l’instruction extraite de la mémoire centrale.

- 2 registres tampons mis en œuvre par l’UAL : ACT (Accumulateur


temporaire), TMP (registre tampon ou « Buffer »).

- 1 multiplexeur (MUX) permettant dans le cas où plusieurs registres


sont branchés sur une voie unique, de ne faire communiquer qu’un seul
registre ou une seule paire de registres sur le bus d'adresses à un instant
donné.

- 1 incrémenteur/décrémenteur symbolisé par +1 ou -1 permettant


de modifier automatiquement le contenu des registres d'adresses PC et
SP durant certaines opérations.

- 1 registre d’indicateurs d’états (drapeaux ou « flags ») affecté en


général par les opérations se déroulant au sein de l’UAL. Son contenu
sert également parfois lors des opérations au sein de l’UAL.

5
III – SCHEMA INTERNE DU i8080

6
IV – SEQUENCEMENT DES
INSTRUCTIONS DU i8080

On sait que sur tout processeur, l’exécution d’une instruction débute par une phase
de recherche en mémoire (« fetch» en anglais), c’est-à-dire un moment où
l’instruction est transférée de la mémoire centrale vers le registre d’instruction (RI).
Dans le cas de l’i8080, cette phase de recherche se déroule pendant un cycle
machine.

L’exécution de chaque instruction nécessite entre un et cinq cycles machine, c’est-à-


dire entre un et cinq accès mémoire, suivant la taille de l’instruction. Sur l’i8080,
cette taille peut être de un, deux ou trois mots (un mot correspond à un octet) et
peut, par conséquent exiger un ou deux accès mémoire après le premier. Chaque
cycle machine est une suite de 3, 4, 5 étapes correspondant à des états internes
nommés T1, T2, …, T5. En utilisant une horloge standard de 2 MHz, l’exécution
complète d’une instruction nécessite entre 4 et 18 états d’une durée de 500
nanosecondes chacun, c’est-à-dire entre 2 et 9 microsecondes.

7
1. Format des instructions

Comme les instructions de tous les autres microprocesseurs, les instructions


du 8080 d’INTEL peuvent avoir des formats de 1, 2 ou 3 mots.

- Cas des instructions codées sur 1 mot : le code opération portant sur 8
bits contient aussi la désignation des registres à employer lors de
l’opération. Ex. : MOV R1, R2.

- Cas des instructions codées sur 2 mots : le code opération est suivi
d’une donnée. Ex. : ADI data (« add immediate data to A », c’est-à-dire
rajouter à l’accumulateur la donnée qui suit immédiatement le code
opération).

- Cas des instructions codées sur 3 mots : le code opération est suivi de 2
mots qui correspondent à la spécification d’une adresse tenant sur 16 bits.
Ex. : JMP addr (« jump to specified address », c’est-à-dire sauter/débrancher
à l’adresse indiquée).

8
Pour chaque octet de l’instruction, l’unité de commande doit
effectuer une recherche en mémoire
 + l’instruction est courte, + son exécution est rapide.
Codification des
registres du i8080
Conventions de notations
000 pour le registre B ;
001 pour le registre C ;
SSS pour source
010 pour le registre D ;
DDD pour destination
011 pour le registre E ;
R pour registre
100 pour le registre H,
rp : pour paire de registre
101 pour le registre L ;
H : pour partie haute de l’octet
110 (Mémoire) ;
L : pour partie basse de l’octet
111 pour le registre A.
n : pour adresse (0 à 7)
B1 : pour byte (octet) 1 de l’instruction
Codification des
B2 : pour byte (octet) 2 de l’instruction
paires de registres
B3 : pour byte (octet) 3 de l’instruction
du i8080
M : pour adresse mémoire définie par H et L
00 pour la paire BC ;
X : pour opération interne au CPU
01 pour la paire DE ;
10 pour la paire HL ;
11 pour la paire SP.
9
2. Exemple d’instruction codée sur un mot
Cas de l’instruction MOV

Représentation mnémonique (symbolique ou encore assembleur)

MOV R1, R2
Description

Transfert le contenu du registre R2 dans le registre R1. A la fin de


l’exécution de cette instruction, le contenu de R1 est identique à celui de
R2. Cette opération de lecture ne modifie pas le contenu de R2.

Représentation binaire (machine)


0 1 D D D S S S
avec : 01 représentant le code caractéristique de l’opération
DDD représentant les 3 bits désignant le registre destination
SSS représentant les 3 bits associés au registre source

Exemple
01111000
On cherchera la traduction assembleur associée à cette instruction.
10
10
Séquencement de l’instruction « MOV R1, R2 »
La phase de recherche correspond aux 3 premiers états de cycle machine M1. Ces 3
états sont appelés T1, T2 et T3 sur le tableau du jeu d’instruction du microprocesseur.
La séquence correspondant à ces 3 états est commune à toutes les instructions du
microprocesseur puisque toutes les instructions doivent d’abord être lues en mémoire
avant d’être exécutées. La 1re phase de recherche de l’instruction correspondant à
l’étape T1 est représentée par :

T1 : (PC) out

C’est-à-dire libération du contenu du compteur ordinal sur le bus des adresses. A ce


stade, une adresse est présentée à la mémoire, et le décodeur d’adresse mémoire
décode l’adresse afin de sélectionner la case mémoire appropriée. Plusieurs centaines
de nanosecondes plus tard, le contenu de la case mémoire sélectionnée devient
disponible sur les broches de sorties du boîtier mémoire qui sont branchées sur le bus
de données.
Pendant ce temps d’accès à la mémoire, et c’est là une pratique devenue
« standard », on exécute une opération à l’intérieur du microprocesseur :
l’incrémentation, c’est-à-dire l’augmentation de 1 du contenu du compteur ordinal,
qui se traduit par :
T2 : PC = (PC) + 1

11
11
Pendant que la mémoire effectue son cycle de lecture, le contenu du PC est en effet
incrémenté. T2 nécessite environ 500 nanosecondes sur l’i8080 standard. A la fin de
T2, le contenu de la mémoire devient disponible et peut être transféré dans le
microprocesseur. C’est le début du temps T3 noté :
T3 : instruction dans IR.
Durant l’état T3, l’instruction lue en MC est mise sur le bus des données et
transférée dans le registre d’instruction de l’i8080 standard où elle sera décodée.
Pendant l’état T4, ce décodage a lieu et le contenu du registre est copié dans TMP,
ce qu’on symbolise par :
T4 : (SSS) → TMP.

Durant l‘état T5, le contenu de TMP est envoyé dans le registre de destination, ce
qu’on note :
T5 : (TMP) → DDD.
A ce stade, l’exécution de l’instruction est terminée. Le contenu du registre R2 a été
transféré vers la destination indiquée, à savoir le registre R1. Cela achève
l’exécution de l’instruction. Les autres cycles machines - M2, M3, M4, M5 - ne sont
pas nécessaires à l'exécution de cette instruction et ne sont donc pas utilisés.
L’exécution se termine à la fin de M1.

12
12
3. Exemple d’instruction codée sur deux mots
Cas de l’instruction ADI
Représentation mnémonique (symbolique ou encore
assembleur)
ADI data
Description
Ajoute au contenu actuel de l’accumulateur la donnée qui suit
immédiatement le code opération, c’est-à-dire celle codée sur le
2e octet.

Représentation binaire (machine)


Octet 1 : 1 1 0 0 0 1 1 0
Octet 2 : donnée immédiatement fournie
Exemple
11000110
00110100
On déterminera la traduction assembleur associée à cette
instruction.
13
13
Séquencement de l’instruction « ADI data »
La phase de recherche est identique pour toutes les
instructions à exécuter. Pour cela, on va supposer être au
début du temps T4 associé au décodage de l’instruction.
Durant T4, le contenu de l’accumulateur est envoyé dans
l’accumulateur temporaire, ce qu’on note par :

T4 : (A) → ACT.

L’état T5 ne sera pas employé par le microprocesseur et la


transition se fera directement de l’état T4 du cycle mémoire
M1 vers l’état T1 de M2.

Durant l’état T1 de M2, le contenu du PC est mis sur le bus


d’adresses, ce qu’on note par :
T1 : (PC) out.
14
14
Au temps T2 suivant, le compteur ordinal est incrémenté, ce qui
donne :
T2 : PC = (PC) + 1.

Après cela va débuter le transfert du contenu du second byte de


l’instruction noté B2 dans le registre TMP, transfert qui se
poursuivra jusqu’à la fin du temps T3, ce qui est noté :
T3 : poursuite du transfert de B2 <=> TMP.

Une transition automatique du temps T3 de M2 vers le cycle M3 se


fera. Le microprocesseur n’utilisera pas le temps T1 de M3, mais
plutôt le temps T2 suivant pour effectuer l’addition souhaitée, ce
qu’on symbolisera par :
T2 : (ACT) + (TMP) → A.
C’est alors la fin de l’instruction. Le temps T3 de M3 ainsi que les
autres cycles machines M4 et M5 resteront inutilisés.

15
15
4. Exemple d’instruction codée sur trois mots
Cas de l’instruction LDA
Représentation mnémonique (symbolique ou encore
assembleur)
LDA addr
Description
Charge l’accumulateur avec le contenu de la cellule mémoire dont
l’adresse (deux octets) est immédiatement fournie à la suite du
code opération.
Représentation binaire (machine)
Octet 1 : 0 0 1 1 1 0 1 0
Octet 2 : byte bas adresse (bits 0-7)
Octet 3 : byte haut adresse (bits 8-15)
Exemple
00111010
00100010
00000101
Déterminez la traduction assembleur associée à cette instruction.
16
16
Séquencement de l’instruction « LDA addr »
Pendant le cycle machine M1 :
- T1, T2 et T3 servent à la recherche de l’instruction ;
- T4 est employé pour la réalisation d’opérations internes au CPU telles que
le décodage de l’instruction (usage de la convention X)
- T5 n’est pas utilisé.

Pendant le cycle machine M2 on a :


- T1 : (PC) out ;
- T2 : PC = (PC) + 1, et début du transfert B2 vers Z ;
- T3 : fin du transfert B2 vers Z ;

Pendant le cycle machine M3 on a :


- T1 : (PC) out ;
- T2 : PC = (PC) + 1, et début du transfert B3 →W;
- T3 : fin du transfert B3 en W.

17
17
Pendant le cycle machine M4 on a :
- T1 : (WZ) out ;
- T2 : début du transfert DATA → A ;
- T3 : fin du transfert DATA → A.

FIN CHAPITRE 5

18
18

Vous aimerez peut-être aussi