Académique Documents
Professionnel Documents
Culture Documents
1. Expliquer
xpliquer les phases d’exécution d’une instruction.
2. S’initier
’initier avec la programmation en langage
Objectifs du chapitre : assembleur simple.
3. Apprendre à effectuer la trace d’un
un programme en
langage assembleur.
Registre de la CPU, Jeu eu d’instructions, Cycle
instruction, Cycle machine, Cycle de recherche, Cycle
Mots clés du chapitre : d’exécution, Séquenceur, Compteur ompteur ordinal,
Accumulateur, Registre instruction. Branchement
B
conditionnel et inconditionnel.
1. INTRODUCTION
2. REGISTRES DE LA CPU :
3. JEU D’INSTRUCTION
3.1. Définitions
Eléments de contenu : 3.2. Typologie des instructions
4. UNITE DE COMMANDE :
5. UNITE ARITHMETIQUE ET LOGIQUE
6. CYCLE INSTRUCTION
7. EXEMPLE DE JEU D’INSTRUCTIONS A UNE ADRESSE
DRESSE
1. Introduction
L’unité centrale de traitement se compose de deux unités fonctionnellement séparées :
l’unité arithmétique et logique (UAL) et l’unité de commande ou de contrôle. L’UAL
est la zone du CPU où les opérations arithmétiques et logiques sont réalisées. L’unité
de commande dirige le fonctionnement de toutes les autres unités (UAL, mémoire,
entrées/sorties) en leur fournissant les signaux de cadence et de commande ; ses
1/9
circuits génèrent les signaux nécessaires à l’exécution de chaque instruction d’un
programme.
2. Jeu d’instructions
2.1. Définitions
Jeu d’instruction (Instuction Set) :
Il représente l’ensemble des instructions qu’un processeur est capable d’exécuter.
2/9
3. Registres de la CPU :
Lorsque le processeur exécute les instructions, il a besoin de stocker temporairement
certaines informations (telle que l’adresse d’un mot mémoire à lire) dans des registres
mémoire qui ont la particularité d’avoir un temps d’accès plus rapide que celui de la
mémoire.
Suivant le type du processeur, le nombre de registre peut varier d’une entre une
dizaine et plusieurs centaines. Les registre les plus importants sont détaillés dans ce
qui suit.
Accumulateur (ACC) :
L’accumulateur est registre très important de l’UAL. Dans la plupart des opérations
arithmétiques et logiques, l’ACC contient un des opérandes avant l’exécution et le
résultat après. Il peut aussi servir de registre tampon dans les opérations
d’entrée/sortie. Il est accessible par programmation.
3/9
4. Unité de commande
Les principaux dispositifs de l’unité de commande qui entrent en jeu lors de la
recherche en mémoire et du décodage d’une instruction, sont :
• Le compteur ordinal (CO) ;
• Le registre instruction (RI) ;
• Le décodeur de code opération ;
• Le séquenceur ;
Le décodeur :
On connaît déjà les circuits décodeurs, ils permettent d’activer pour chaque état de ses
lignes d’entrées, une ligne en sortie différente.
Le décodeur de code opération, détermine quelle opération doit être effectuée, parmi
toutes les opérations possibles. Ses sorties seront passées vers le séquenceur.
Séquenceur :
On sait qu’une instruction se fait généralement en plusieurs étapes (avec une séquence
précise), par un ensemble de sous circuits de l’unité centrale. Seul est le séquenceur
qui connaît cette séquence. Il génère et dis tribut les signaux de commande qui
permette d’actionner en séquence les circuits concernés. Le séquenceur ne peut être
qu’un circuit séquentiel (à mémoire) et il a donc lui même une entrée de commande,
qui doit être par une horloge.
4/9
Registres
d’entrée de
Micro Registre
commande d’état
s
Registres de
sortie de
Figure 1 : Schéma de principe d’un UAL.
6. Cycle instruction
Le cycle d’instruction n’est autre que le temps nécessaire que prennent les différentes
phases d'une instruction pour s’exécuter.
Cycle machine
1 2 3 4 5 6 7 8
Impulsions
d’horloge
Les signaux périodique générés par l’horloge définissent le cycle de base ou cycle
machine, durée élémentaire régissant le fonctionnement de la machine.
Un cycle instruction est composé d’un cycle de recherche et d’un cycle d’exécution et
peut s’étendre sur plusieurs cycles machine.
5/9
6.2. Cycle de recherche et cycle d’exécution
Un cycle d'instruction peut se décomposer en un cycle de recherche et un cycle
d'exécution.
Cycle de recherche :
La circulation des informations pendant un cycle de recherche est illustrée dans la
figure suivante :
2
RA Mémoire RM
3
1
CO RI
4
Décodeur
5 4
Séquenceur
Horloge
6/9
Le cycle d’exécution :
Le cycle de recherche est suivi par le cycle d’exécution durant lequel l’opération
spécifiée dans l’instruction est effectuée.
2
RA Mémoire RM
1 Accumulateur
3
Séquenceur UAL
Par la suite, pour faciliter le travail, les programmes ont été écrits en donnant
directement les noms (abrégés) des opérations. On les a appelés les codes
mnémoniques, car on pouvait facilement les mémoriser (par exemple ADD, DIV,
SUB, MOV, etc.). Les adresses des instructions et des variables pouvaient aussi être
données sous forme symbolique. Pour pouvoir utiliser ce genre de langage dit
d’assemblage, il fallait trouver le moyen de les convertir en langage machine. Le
programme qui assure la traduction d’un programme en langage d’assemblage (ou
assembleur), en un programme en langage machine, s’appelle assembleur.
7/9
Par la suite nous allons, considérer le jeu d’instruction suivant présenté en assembleur
et en langage machine :
Code Instruction
Langage Langage Signification
assembleur assembleur
Charge la valeur de la variable id_var dans le registre
LOAD id_var 0E
accumulateur
Additionne le contenu de l’accumulateur à la valeur de la
ADD id_var 1E
variable id_var
Réalise l’opération (contenu accumulateur –
SUB id_var 2E
valeur(id_var))
Réalise l’opération (contenu accumulateur *
MUL id_var 3E
valeur(id_var))
NOT id_var 4E Effectue le complément logique de valeur(id_var)
Stocke le contenu de l’accumulateur dans la variable
STORE id_var 5E
id_var
Effectue un saut inconditionnel à l’emplacement de
JMP Etiquette 3F
l’étiquette
Compare le contenu de l’accumulateur à la variable
id_var et met à un l’un des indicateurs du registre d’état :
• Z est mis à un si la comparaison mène à
l’égalité.
• G est mis à un, si le contenu de l’accumulateur
CMP id_var FE
est strictement supérieur au contenu de la
variable.
• B est mis à un, si le contenu de l’accumulateur
est strictement inférieur au contenu de la
variable.
Effectue un saut à l’emplacement de l’étiquette, si le bit
JZ Etiquette EF
Z du registre d’état est égal à 1
Effectue un saut à l’emplacement de l’étiquette, si le bit
JG Etiquette EE
G (Greater than) du registre d’état est égal à 1
Effectue un saut à l’emplacement de l’étiquette, si le bit
JB Etiquette FF
B (Below) du registre d’état est égal à 1
Application 1 :
Ecrire en langage assembleur, un programme qui permet de permuter cycliquement le
contenu de trois variables A, B, C en utilisant une variable intermédiaire D.
Exemple :
A B C
Avant exécution 5 10 12
Après exécution 12 5 10
Application 2 :
Soit le programme en langage assembleur suivant, utilisant trois variables A, B et C :
1. LOAD A
2. STORE C
3. LOAD B
4. STORE A
5. LOAD C
6. STORE B
8/9
Sachant que :
• Chaque variable est de taille deux octets.
• La taille d’un mot mémoire est de 2 octets.
• La taille d’une instruction est de 2 octets (code opération sur 1 octet et adresse
opérande sur 1 octets).
• Les données sont rangées dans la mémoire centrale à partir de l’adresse (1F)16 .
• Les instructions sont rangées à partir de l’adresse (F2)16.
1. Compléter le schéma suivant qui reflète le contenu de la mémoire centrale avant
l’exécution de ce programme:
Adresses Mémoire centrale Commentaire
(1F)16
(0010)16 Variable A
…….
(0022)16 Variable B
…….
... Variable C
(F2)16
... Instruction 1
…….
... Instruction 2
…….
... Instruction 3
…….
... Instruction 4
…….
... Instruction 5
…….
... Instruction 6
9/9