Académique Documents
Professionnel Documents
Culture Documents
Youssef EL AFOU
elafou.youssef@gmail.com
Youssef EL AFOU 1
But de ce cours
2
Définition
Un microprocesseur est un circuit intégré complexe
caractérisé par une très grande intégration et doté des
facultés d'interprétation et d'exécution des instructions
d'un programme.
Il est chargé d’organiser les tâches précisées par le
programme et d’assurer leur exécution. Il doit aussi
prendre en compte les informations extérieures au
système et assurer leur traitement.
C’est le cerveau du système. A l’heure actuelle, un
microprocesseur regroupe sur quelques millimètres
carrés des fonctionnalités toujours plus complexes. Leur
puissance continue de s’accroître et leur encombrement
diminue régulièrement respectant toujours, pour le
moment, la fameuse loi de Moore. 3
Plan
4
Introduction au microprocesseur
L'apparition des microprocesseurs date du début des années 1970. A
cette époque, deux événements favorables sont apparus :
le concept de "LSI (Large Scale Integration)" permettant d'intégrer
plusieurs milliers de portes sur un même substrat.
l'arrivée à maturité de la technologie MOS caractérisée par sa f
aible consommation.
La conjugaison de ces événements a permis de regrouper une unité
centrale d'ordinateur dans un seul circuit intégré appelé
"microprocesseur". Depuis, une multitude de composants de ce type
sont apparus au sein de
familles provenant essentiellement de grands constructeurs américa
ins :
Intel, Motorola, Advanced Micro Devices (AMD), Texas Instruments,.
.. et japonais : NEC, Mitsubishi,...
Grâce aux progrès de l'intégration, l'augmentation des performances a
porté sur :
la vitesse de fonctionnement.
la largeur des mots traités (8, 16, 32, 64 bits). 5
le nombre et la complexité des opérations réalisables.
Introduction au microprocesseur
Les microprocesseurs ne cessent d'évoluer tant en terme de
vitesse d'exécution,
de consommation
et d'intégration.
7
Introduction au microprocesseur
Fonctionnement d’une architecture Von Neumann
Pour accéder de façon automatique à une case mémoire, il faut utiliser un compteur.
Ce compteur est considéré comme un registre spécial : le CO (Compteur Ordinal). La
valeur de ce compteur va désigner la case mémoire contenant la prochaine instruction
à charger : cela correspond à l’adresse de la prochaine instruction. Le compteur
ordinal contient une adresse, mais le processeur contient généralement d’autres
registres qui permettent de stocker d’autres adresses utilisées au sein de notre
programme assembleur. Ces registres sont appelées registres d’adresse.
8
Introduction au microprocesseur
Construction de l’UAL, des registres internes, et du contrôleur
UAL est perçue comme un calculateur. Il s’agit d’un circuit logique qui exécute
les opérations, les traitements et les commandes de l'ordinateur. Elle reçoit ses
instructions (codée en binaire) d’une unité de commande, et peut lire et écrire
dans des mémoires.
Les registres sont des emplacements temporaires pour stocker et transférer
rapidement les données et les instructions utilisées. Les registres sont souvent
sur le même circuit et directement connectés à l’UC. Les registres ont un
temps d'accès plus rapide que la mémoire. Par conséquent, l'utilisation de
registres à la fois comme source d'opérandes et comme destination des
résultats améliorera la performance.
Le code binaire d’une instruction représente l’opérateur et les valeurs à
traiter. Les données retournées sont en binaire accompagnées d’indications
sur les retenues, débordements, … (registre des états). Le circuit de l’UAL
sera composé d’un ensemble de fonction d’opération qui s’exécute en
parallèle.
9
Introduction au microprocesseur
Construction une UAL 1 bit avec 4 types
d’opérations
•l’addition.
•le NON-OU logique.
•le NON-ET logique.
•le OU exclusif.
4 registres de données 1 bit
10
Registres et UAL
Introduction au microprocesseur
Les schémas bloc de la figure Précédente doivent maintenant se raccorder,
pour cela nous plaçons un bus de données commun aux entrées et aux
sorties de l’UAL et au bloc de registres. Ainsi les pattes A, B, D, E et S de
notre montage sont reliées par un même fil. Notons que nous réalisons un
montage 1 bit, donc 1 fil, si nous étions en 8 bits nous aurions 8 fils, 32 bits,
32 fils … .
Comme tous les circuits électriques, il faut faire attention aux courts circuits.
Nous ajoutons donc 1 porte 3 états à la sortie du bloc de registres (juste
après la patte E, nous obtenons une patte E’), 1 autre porte 3 états à la
sortie de l’UAL (juste après la patte S, nous obtenons une patte S’).
Pour faire une mémoire entre plus proche de notre UAL et pour permettre
de stocker plus rapidement des résultats intermédiaires, nous ajoutons 2
registres. Ces 2 nouveaux registres nommés A’ et B’ (en entrée)
permettront de stocker de façon temporaire les opérandes A et B et donc
sont placés juste avant les pattes A et B.
Nous relions les pattes A’, B’, S’, E’ et D entre elles par un fil et nous notons
C9, C10, C11 et C12 les sélecteurs de contrôle du montage.
11
Introduction au microprocesseur
Registres et UAL reliés
12
Introduction au microprocesseur
13
Introduction au microprocesseur
Registres, UAL et séquenceurs reliés
14
Introduction au microprocesseur
Registres, UAL avec unité de contrôle
15
Introduction au microprocesseur
Tous les sélecteurs Ci mis ensemble forment l’unité de
contrôle de notre processeur 1 bit. Dans une architecture
plus conséquente le principe des sélecteurs restent
identique et câblés à d’autres éléments produiraient l’unité
de contrôle (séquenceur) et aussi le décodeur
d’instructions.
Pour effectuer notre schéma global et faire de la
simulation, nous ajoutons des commutateurs pour créer le
contrôle avec les sélecteurs Ci.
Pour faciliter la manipulation de notre processeur, nous
ajoutons un signal supplémentaire appelé RESET (qui
sera commandé par un commutateur). Avec si le signal
est à 1, cela force à enregistrer un 0 dans toutes les
bascules D du montage. Si le signal est à 0, le montage
fonctionne normalement. 16
Introduction au microprocesseur
Cablage du CPU avec l’exterieur
Les bus sont des ensembles de fils électriques mis en parallèle. Les bus
permettent de connecter les circuits intégrés entre eux. Ils transportent les
données des sorties aux entrées des circuits.
Bus de communication entre des circuits
17
Introduction au microprocesseur
Dans une architecture, des ROM (Read Only Memory) et RAM (Random
Access Memory) sont constituées par n bascules D avec une horloge
commune. Les données sont en sortie sur un TIC d’horloge par exemple sur
le front montant.
Ces mémoires ROM et RAM nécessitent des signaux particuliers pour
fonctionner. Ces signaux devront être contrôlés par le processeur et ils
viendront s’ajouter aux signaux de contrôle déjà existants (éléments
supplémentaires à séquencer).
Par exemple, si les blocs de mémoire comportent 5 lignes d’adresse. Il est
nécessaire de rendre compatible les mémoires et les bus. Pour atteindre et
manipuler les mémoires, il faut mettre en place un mécanisme pour
sélectionner le bon bloc de la mémoire. Par conséquent dans ce cas, nous
utiliserons 8 lignes d’adresse les 5 nécessaires pour la mémoire elle-même
et les lignes d’adresse restantes pour le mécanisme de sélection. Pour les
données nous opterons pour un bus de communication 8 lignes.
19
Introduction au microprocesseur
Bus d’adresses et de communication de données avec
sélection
21
Chapitre 1:
22
Architecture et fonctionnement d’un
microprocesseur
23
Architecture et fonctionnement d’un
microprocesseur
L’élément de base d’un calculateur est constitué par l’unité
centrale de traitement (UCT, CPU : Central Processing Unit).
L’UCT est constituée :
d’une unité arithmétique et logique (UAL, ALU : Arithmetic and
Logic Unit) : c’est l’organe de calcul du calculateur ;
de registres : zones de stockage des données de travail de
l’UAL (opérandes, résultats intermédiaires) ;
d’une unité de contrôle (UC, CU : Control Unit) : elle envoie les
ordres (ou commandes) à tous les autres éléments du
calculateur afin d’exécuter un programme.
La mémoire centrale contient :
le programme à exécuter : suite d’instructions élémentaires ;
les données à traiter.
L’unité d’entrées/sorties (E/S) est un intermédiaire entre le
24
calculateur et le monde extérieur.
Architecture et fonctionnement d’un
microprocesseur
L’unité de transfert est le support matériel de la circulation des
données. Les échanges d’ordres et de données dans le
calculateur sont synchronisés par une horloge qui délivre des
impulsions (signal d’horloge) à des intervalles de temps fixes.
27
Exécution d’un programme sur un microprocesseur
28
Description matérielle d’un microprocesseur
Rangement en mémoire :
Pour exécuter les instructions dans l’ordre établi
par le programme, le microprocesseur doit
savoir à chaque instant l’adresse de la
prochaine instruction `a exécuter.
Rangement en mémoire :
Pour savoir quel type d’opération doit être exécuté (addition,
soustraction, ...), le microprocesseur lit le premier octet de
l’instruction pointée par le pointeur d’instruction (code
opératoire) et le range dans un registre appelé registre
d’instruction. Le code opératoire est décodé par des circuits de
décodage contenus dans le microprocesseur. Des signaux de
commande pour l’UAL sont produits en fonction de l’opération
demandée qui est alors exécutée.
Les indicateurs d’état sont utilisés par les instructions de saut conditionnels : en
fonction de l’état d’un (ou plusieurs) flags, le programme se poursuit de manière
différente. Toutes ces étapes (lecture de l’instruction, décodage, exécution) sont
synchronisées par un séquenceur qui assure le bon déroulement des opérations
Exemple : registre d’état du microprocesseur
32
Description matérielle d’un microprocesseur
33
Description matérielle d’un microprocesseur
Chaque instruction est caractérisée par le nombre de périodes
d’horloge (ou microcycles) qu’elle utilise (donnée fournie par le
fabricant du microprocesseur). Exemple : horloge `a 5 MHz, période
T = 1/f = 0, 2 µs. Si l’instruction s’exécute en 3 microcycles, la durée
d’exécution de l’instruction est : 3 × 0, 2=0, 6 µs. L’horloge est
constituée par un oscillateur `a quartz dont les circuits peuvent être
internes ou externes au microprocesseur. Structure complète d’un
microprocesseur simple : pour fonctionner, un microprocesseur
nécessite donc au minimum les éléments suivants :
34
Description matérielle d’un microprocesseur
35
Chapitre 2:
36
Mémoires ROM et RAM
On distingue deux types de mémoires :
39
Mémoires ROM et RAM
Chronogrammes de lecture/´écriture en mémoire
Une caractéristique importante des mémoires est leur temps d’accès : c’est le temps
qui s’écoule entre l’instant où l’adresse de la case mémoire est présentée sur le bus
d’adresses et celui où la mémoire place la donnée demandée sur le bus de données.
Ce temps varie entre 50 ns (mémoires rapides) et 300 ns (mémoires lentes).
Chronogramme de lecture en mémoire :
40
Mémoires ROM et RAM
Interfaçage microprocesseur/mémoire
Si le temps d’accès d’une mémoire est supérieur à une période d’horloge (mémoire
lente), le microprocesseur peut accorder à la mémoire un temps supplémentaire (une
ou plusieurs périodes d’horloge), à la demande de celle-ci. Ce temps supplémentaire
est appelé temps d’attente (wait time : TW ) :
41
Mémoires ROM et RAM
Connexion de plusieurs boîtiers mémoires sur le bus d’un
microprocesseur
42
Mémoires ROM et RAM
Exemple : connexion de trois boîtiers mémoire d’une capacité
de 8 Ko chacun (13 lignes d’adresses) sur un bus d’adresse de
16 bits :
43
Mémoires ROM et RAM
Exemple : connexion de trois boîtiers mémoire d’une capacité
de 8 Ko chacun (13 lignes d’adresses) sur un bus d’adresse de
16 bits :
44
Mémoires ROM et RAM
On en déduit la cartographie ou mapping de la mémoire visible
par le microprocesseur :
45
Mémoires ROM et RAM
Table de vérité du décodeur d’adresses :
46
Mémoires ROM et RAM
Classification des mémoires
47
Mémoires ROM et RAM
Mémoires mortes :
ROM : Read Only Memory. Mémoire à lecture seule, sans écriture. Son
contenu est programmé une fois pour toutes par le constructeur. Avantage :
faible coût. Inconvénient : nécessite une production en très grande quantité.
PROM : Programmable Read Only Memory. ROM programmable une seule
fois par l’utilisateur (ROM OTP : One Time Programming) en faisant sauter des
fusibles. Nécessite un programmateur spécialisé : application d’une tension de
programmation (21 ou 25 V) pendant 20 ms.
EPROM : Erasable PROM, appelée aussi UVPROM. ROM programmable
électriquement avec un programmateur et effaçable par exposition à un
rayonnement ultraviolet pendant 30 minutes. Famille 27nnn, exemple : 2764 (8
Ko), 27256 (32 Ko). Avantage : reprogrammable par l’utilisateur.
EEPROM : Electrically Erasable PROM. ROM programmable et effaçable
électriquement. Lecture `a vitesse normale (≤ 100 ns). Ecriture (= effacement)
très lente (≈ 10 ms). Application : les EEPROM contiennent des données qui
peuvent être modifiées de temps en temps, exemple : paramètres de
configuration des ordinateurs. Avantage : programmation sans extraction de la
carte et sans programmateur. Inconvénient : coût élevé. 48
Mémoires ROM et RAM
Mémoires vives :
SRAM : Static Random Access Memory. Mémoire statique
à accès aléatoire, à base de bascules à semiconducteurs
à deux états (bascules RS). Famille 62nnn, exemple :
62128 (16 Ko). Avantage : très rapide, simple d’utilisation.
Inconvénient : compliqué à réaliser.
50
Organisation matérielle du 6809
51
Architecture du 6809
16 bits
8 bits 8 bits
Accumulateurs. A B
Manipulation
des données D
Registres X
d'index
Y
Pointeurs de U
pile
S
DP Registre page direct
PC Compteur programme
52
Architecture du 6809
Registre de page
DP
53
Architecture du 6809
Accumulateurs : A, B et D
Les calculs arithmétiques et les manipulations de données se font grâce aux
accumulateurs A et B. Ces deux registres sont interchangeables sauf pour
quelques instructions (ABX, DAA) et les opérations sur 16 bits.
D= A B (Concaténation de A et B)
RegistreA Registre B
UAL
54
Architecture du 6809
Pointeur de Pile Pointeur de Pile
S
U
RegistreA Registre B
UAL
Ces deux pointeurs d'utilisation parfaitement identique sont utilisés dans les
modes d'adressage indexé. Le contenu de ces registres (16 bits) permet de
pointer des données.
55
Architecture du 6809
Pointeur de Pile Pointeur de Pile
U S
RegistreA Registre B
UAL
57
Architecture du 6809
Pointeur de Pile Pointeur de Pile
S
U
RegistreA Registre B
DP
Registre de page: DP
DP
Registre de codes condition: CCR
Le registre codes condition (8 bits) définit à tout instant
l'état des indicateurs du processeur.
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
E F H I N Z V C 59
Architecture du 6809
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
E F H I N Z V C
H Demi-retenue
Instruction (mnémoniques)
Opération Opérande
LDA $2000
Charger (Load ) dans
le registre A
L'adressage inhérent est utilisé par les instructions qui agissent sur les
registres internes du MPU et non sur la mémoire. Il existe deux types de
mode d'adressage inhérent :
Exemple:
ABX addition de l'accumulateur B à l'index X.
62
Mode d’adressage
Exemple:
ABX addition de l'accumulateur B à l'index X.
X (B) + (X)
MPU Mémoire
PC ADR
ADR+1 ADR+ 1 Code Opération
de ABX
D A
B 14
3A ADR
X 2008
201C 2008 + 14
Y
DP
CCR 7 6 5 4 3 2 1 0
Adressage inhérent simple
63
Mode d’adressage
Adressage inhérent paramétré
Attente d'interruption.
64
Mode d’adressage
MPU Mémoire
PC ADRADR
+2
ADR+ 2
A
D
B
1F ADR
X
34 ADR+1
Y
35 ADR+2
S 1000
U 1000
DP
7 6 5 3 4 2 1 0
CCR Adressage inhérent paramétré
Échange et transfert des données 65
Mode d’adressage
Post-octet transfert/échange :
code Registre
0000 D Code Opération
0001 X 1F
0010 Y
0011 U TFR U,S transfert de U dans S
0100 S
3 4 Post-Octet
0101 PC 34
1000 A
1001 B
1010 CCR
1011 DP
66
Mode d’adressage
Instructions d'accès aux piles: le premier octet détermine le code
opératoire pur, le post-octet: les registres concernés par l'accès à la
pile.
Ex :PSHS A, B, X sauvegarde dans la pile de A, B, X
MPU Mémoire
PC ADR
ADR+2 ADR+ 2
34 ADR
16 ADR + 1
A aa ADR + 2
D
B bb
X xx x’x’
aa SSS’S’ -4
Y
bb SSS’S’ -3
ss SSS’S’-4 s’s’ SSS’S’ - 4 xx
S SSS’S’ -2
x’x’ SSS’S’ -1
U
SSS’S’
DP
7 6 5 4 3 2 1 0
CCR Adressage inhérent paramétré 30
Instructions d’accès aux piles
Mode d’adressage
EMPILEMENT
Mnémoniques :
PSHS liste explicite de registres à empiler
ou (implicitement)
PSHS #$xy
b7 b6 b5 b4 b3 b2 b1 b0
(#$xy) PC U Y X DP B A CCR
=
MPU Mémoire
3C ADR
PC ADR ADR+ 2 FF ADR + 1
ADR+2
ADR + 2
A aa
D
CCR SSS’S’ -C
B bb
aa SSS’S’ -B
bb SSS’S’ -A
X xx x’x’ pp SSS’S’ -9
Y yy y’y’ xx SSS’S’ -8
SSS’S’ - C
S ss SSSS’-C s’s’ x’x’ SSS’S’ -7
U uu u’u’ yy SSS’S’ -6
pp y’y’ SSS’S’-5
DP
Masque INT IRQ uu SSS’S’ -4
7 6 5 4 3 2 1 0 u’u’ SSS’S’ -3
7 6 5 4 3 2 1 0
x x ADR +2 SSS’S’ -2
CCR
CCR xx x 1 x x x x x x x x
1 1
SSS’S’ -1
SSS’S’
Sauvegarde Masque INT
FIRQ
Adressage inhérent paramétré
Attente d’interruption 32
Mode d’adressage
Dans ce mode d'adressage, le code opératoire 8 bits est suivi d'une valeur qui est
l'opérande de l'instruction. Ce type d'adressage permet de charger les
registres internes du microprocesseur avec la valeur de l'opérande.
Le symbole « # » signifie immédiat dans la syntaxe assembleur. Il existe trois types
d’instructions dans ce mode d’adressage :
70
Ex : LDA #$15 charger la valeur $15 dans l’accumulateur A. Le
premier octet contient le code opératoire
MPU Mémoire
86 ADR
X $15
15 ADR+1
Y
ADR+2
S
U
DP
71
Instructions sur trois octets
72
Ex : ADDD #$2005 addition du contenu de l’accumulateur D
et de $2005, le résultat se trouve dans D.
MPU Mémoire
ADR + 3
PC AD + 3
ADR Code Opération
R ADDD
A 31 11
D
B 22
27 $1122+$2005 C3 ADR
20 ADR+1
X
05 ADR+2
Y
ADR+3
S
DP
Z V C
73
Instructions sur quatre octets
74
Ex :LDY # $2008 charger l’index Y avec la valeur $2008
MPU Mémoire
ADR + 4 Octet
PC AD + 4
ADR supplémentaire
R
A
D
B 10 ADR
$10
8E ADR+1
X
20 ADR+2
Y 2008
08 ADR+3
S
ADR+4
U $2008
DP
E F H I N Z V C
75
Mode d’adressage
DP ¨PF
77
Instructions sur deux octets
Le premier octet définit le code opératoire, le second les poids faible de
l’adresse effective.
MPU Mémoire
PC AD +2 ADR + 2
ADR
R 96 ADR
A 08 ADR+1
D 11
ADR+2
B
S
11 20 08
U
DP 20
E F H I N Z V C
79
Ex : LDY $05 ou LDY < $05 chargement du registre Y avec le
contenu de $2005/06 (DP=$20)
MPU Mémoire
PC ADR
ADR+3 ADR + 3
10 ADR
A 9E ADR+1
D
B 05 ADR+2
X
Y 1122 1122
S
11 20 05
U
22 20 06
DP 20
E F H I N Z V C
CCR Adressage direct
Instructions sur trois octets
80
Mode d’adressage
Le symbole « > » est une directive assembleur qui force l’adressage étendu. Il existe
deux types d’instructions dans ce mode d’adressage
81
Ex : LDA $21A5 ou LDA > $ 21A5 chargement de l’accumulateur A
avec le contenu de l’adresse $21A5
MPU Mémoire
PC ADR
ADR+3 ADR + 3
B6 ADR
A 11 21 ADR+1
D
B A5 ADR+2
X
$11
Y
S 11
21 A5
U
DP
E F H I N Z V C
CCR Adressage étendu
Instructions sur trois octets
82
Mode d’adressage étendu
Instructions sur quatre octets
Le code opératoire (sur 2 octet)
L'opérande ( 2 octet ) : Adresse Effective
83
Ex :LDY $2CB5 ou LDY > $2CB5 chargement du registre Y Avec le
contenu de $2CB5/B6
84
Mode adressage Exemple
I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG…
2. inhérent paramétré
86
Ex :LDA [$2000] chargement de l’accumulateur avec le contenu dont
l’adresse se trouve en $2000 et $2001.
D A 11 ADR+2
20
B
00 ADR+3
ADR+4
X
$11
Y
30 2000
S
00 2001
U
DP
11 3000
E F H I N Z V C
CCR
88
Ex:LDY [$2004] chargement du registre d’index Y avec le contenu
dont l’adresse se trouve en $2004 et $2005.
Y 1122
30 2004
S 00 2005
U $11 22
DP
E F H I N ZV C 11 3000
22 3001
CCR
Dans ce cas, BPL fait un test sur le bit N du registre CCR, le branchement a lieu
si N=0 ( Résultat de l’opération précédente positif)
91
Ex: Arret EQU $3000
BPL ARRET
Le déplacement (Depl) est calculé en fonction de la valeur de ADR par rapport à l’étiquette ARRET ($3000).
92
7. Mode d'adressage relatif long
93
Exemple : ARRET EQU $4000
LBPL ARRET
La présence d’un pré-octet ($10) permet de différencier l’adressage relatif long de l’adressage relatif court.
94
Mode adressage Exemple
I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG…
2. inhérent paramétré
VI. Mode adressage relatif court mode d'adressage est réservé pour BHS FIN
les instructions de branchement (
(déplacement ± 7 bits)
VII. Mode adressage relatif long mode d'adressage est réservé pour LBPL ARRET
les instructions de branchement (
(déplacement ± 15 bits)
VIII. Mode adressage indexé
IX. Mode adressage indexé indirect
8. Mode d'adressage indexé
96
Pour ce qui est du déplacement, il y a de multiples possibilités:
celui-ci peut être nul, codé sur cinq, huit ou seize bits, ou variable
dans le cas de l’utilisation d’un accumulateur A, B ou D.
LDB $20, X
Instruction déplacement Base : X ou Y ou U ou S ou PC
LDA , Y+
Toutes ces options sont sélectionnées par le post-octet
qui suit le code opératoire.
97
Bit du registre post octet Mode d’adressage indexé
7 6 5 4 3 2 1 0 AE= , Base + Déplacement
0 R Déplacement AE= , R 4 bits
1 R 0 0 0 0 0 AE= , R +
1 R 0/1 0 0 0 1 AE= , R ++
1 R 0 0 0 1 0 AE= , - R
1 R 0/1 0 0 1 1 AE= , - -R
1 R 0/1 0 1 0 0 AE= , R 0
1 R 0/1 0 1 0 1 AE= , R Acc B
1 R 0/1 0 1 1 0 AE= , R Acc A
1 R 0/1 1 0 0 0 AE= , R 7 bits
1 R 0/1 1 0 0 1 AE= , R 15 bits
1 R 0/1 1 0 1 1 AE= , R D (ACC A +Acc B)
99
Bit du registre post octet Mode d’adressage indexé
7 6 5 4 3 2 1 0 AE= , Base + Déplacement
0 R Déplacement AE= , R 4 bits
1 R 0 0 0 0 0 AE= , R +
1 R 0/1 0 0 0 1 AE= , R ++
1 R 0 0 0 1 0 AE= , - R
1 R 0/1 0 0 1 1 AE= , - -R
1 R 0/1 0 1 0 0 AE= , R 0
1 R 0/1 0 1 0 1 AE= , R Acc B
1 R 0/1 0 1 1 0 AE= , R Acc A
1 R 0/1 1 0 0 0 AE= , R 7 bits
1 R 0/1 1 0 0 1 AE= , R 15 bits
1 R 0/1 1 0 1 1 AE= , R D (ACC A +Acc B)
100
Bit du registre post octet Mode d’adressage indexé
7 6 5 4 3 2 1 0 AE= , Base + Déplacement
0 R D éplacement AE= , R 4 bits Déplacement const
1 R 0 0 0 0 0 AE= , R +
1 R 0/1 0 0 0 1 AE= , R ++ Auto
1 R 0 0 0 1 0 AE= , - R Increm/Décrem
1 R 0/1 0 0 1 1 AE= , - -R
1 R 0/1 0 1 0 0 AE= , R 0 Déplacement nul
1 R 0/1 0 1 0 1 AE= , R Acc B
Dépl accumul
1 R 0/1 0 1 1 0 AE= , R Acc A
1 R 0/1 1 0 0 0 AE= , R 7 bits Déplacement const
1 R 0/1 1 0 0 1 AE= , R 15 bits
1 R 0/1 1 0 1 1 AE= , R D (ACC A +Acc B) Dépl accumul
Exemple :
LDA ,X chargement de A avec la valeur dont l’adresse est le
contenu de l’index X.
71
LDA ,X chargement de A avec la valeur dont l’adresse est le contenu de l’index X.
MPU Mémoire
Post-
octet
PC ADR ADR + 2
ADR +2
A6 ADR
A 84 ADR+1
D 11
B ADR+2
X xxxx 11
U
11 xxxx
DP
E F H I N Z V C
Déplacement nul
Exemple :
LDY ,X chargement de l’index Y avec la valeur dont l’adresse de base
est le contenu de X.
73
8.2 Mode d'adressage indexé. Auto-incrémentation/décrémentation
10
6
Instructions sur deux octets
Exemple :
LDA ,X+ chargement de A avec la valeur dont l’adresse est le contenu
de X, post-incrémentation par un de X.
107
LDA ,X+ chargement de A avec la valeur dont l’adresse est le contenu de l’index X.post
incrémentation par un de X
MPU Mémoire
Post-
octet
PC ADR ADR + 2
ADR +2
A6 ADR
A 80 ADR+1
D 11
B ADR+2
11
X xxxx xxxx+1
S
xxxx+1
U
11 xxxx
DP
E F H I N Z V C
A AE ADR+1
D
B 83 ADR+2
ADR+3
X xxxx xxxx-2 xxxx -2
Y 1122
U
11 xxxx- 2
DP 1122 xxxx - 1
22
xxxx
E F H I N Z V C
Auto-incrémentation/Décrémentaion(3 octets)
1 0 0 0 0 0 1 1
Dans ce cas le post-octet est égale $83 :
• b7=1 b4=0 signifie que l’adressage est indexé direct X Double
pré_décrémentation
• b6.b5=0.0 l’index est X
• b3.b2.b1.b0=0.0.1.1 double pré décrémentation. Adressage indexé direct 78
NB: Le mode auto-incrémentation/décrémentation par deux est utilisé pour gérer des tables d’adresses
8.3 Mode d'adressage indexé. Déplacement constant
80
Exemple :
ADDB -3,Y addition du contenu d’adresse mémoire Y-3 au contenu de l’accumulateur B, le résultat est
dans B.
MPU Mémoire
PC ADR ADR + 2
ADR+2
EB ADR
A 3D ADR+1
D
B bb bb+11 ADR+2
bb+11
X
Y yyyy
-3
S
11 yyyy - 3
U
yyyy - 2
-3 + yyyy
DP yyyy - 1
yyyy
E F H I N Z V C Post Octet
CCR Adressage indexé
0 0 1 1 1 1 0 1
Le post-octet prend la valeur $3D :
• b7=0 le bit b4 est le bit de signe de déplacement. Y Déplacement (en compl à 2)
= -3
• b6.b5=0.1 index Y .
• b4.b3.b2.b1.b0=1.1.1.0.1 le déplacement est -3 en complément à deux. 81
Déplacement sur 7 bits
Exemple :
LDY $30, U chargement du pointeur Y avec le contenu mémoire dont
l’adresse de base est le contenu de U + $30
82
Exemple :
LDY $30, U chargement du pointeur Y avec le contenu mémoire dont l’adresse de base est
le contenu de U + $30
MPU Mémoire
Post-
octet
PC ADR ADR + 4
ADR+4
10 ADR
A AE ADR+1
D
B C8 ADR+2
uuuu+$30
30 ADR+3
X ADR+4
Y 1122
S
1122
U uuuu uuuu+$30
11
DP 22 uuuu+$31
Post Octet
E F H I N Z V C
Ce déplacement codé sur 16bits (en complément à deux) est contenu dans
deux octets placés à la suite de ceux de l’instruction (code opératoire +
post octet).Les déplacements possibles sont donc compris entre – 32768
et
+ 32767 octets.
Exemple :
LDA $3000, X de l’accumulateur A avec le contenu
chargement mémoire
d’adresse X + $3000
84
Exemple :
LDA $3000, X chargement de l’accumulateur A avec le contenu mémoire d’adresse X + $3000
MPU Mémoire
Post-
octet
PC ADR ADR + 4
ADR+4
A6 ADR
A 11 89 ADR+1
D
B xxxx 30 ADR+2
+ $3000
00 ADR+3
X xxxx ADR+4
Y
$11
S
U xxxx +$3000
11
DP
E F H I N Z V C Post Octet
CCR Adressage indexé
Exemple :
LDA B, X chargement de l’accumulateur A avec le contenu mémoire
d’adresse X + B
87
Exemple :
LDA B, X chargement de l’accumulateur Aavec le contenu mémoire d’adresse X + B
MPU Mémoire
Post-
octet
PC ADR ADR + 2
ADR+2
A6 ADR
D A 11 85 ADR+1
B bb ADR+2
$11
X xxxx
S
xxxx+bb 11 xxxx+bb
U
Post Octet
DP
E F H I N Z V C
MPU Mémoire
Post-
ADR + 2 octet
PC ADR ADR+2
31
D A aa 8B A
ADR+1
B bb DR
ADR+2
aabb
X xxxx + xxxx
Y aabb + xxxx
S
U
DP Post Octet
E F H I N Z V C
CCR Adressage indexé
Déplacement sur 15 bits. Accumulateur D
Les paragraphes précédents nous ont permis d’aborder les différents modes
d’adressage indexé utilisant les pointeurs X, Y,S et U comme base.
11
9
Déplacement sur 7 bits.
Exemple :
LDA $20, PC chargement de l’accumulateur A avec le contenu
mémoire dont d’adresse est la valeur de PC + $20
120
Exemple :
LDA $20, PC chargement de l’accumulateur A avec le contenu mémoire dont d’adresse est
la valeur de PC + $20
MPU Mémoire Post-
octet
ADR + 3
PC ADR ADR+ 3
A6 ADR
A 11 8C ADR+1
D
B 20 ADR+2
$11 ADR+3
X
Y
S
11 ADR + 3+$20
U ADR +
Post Octet
DP 3+$20
E F H I N Z V C
CCR Adressage indexé
Base=PC
Exemple :
ADDA $2000, PC addition du contenu mémoire dont l’adresse est la
valeur courante du PC+ $2000 et de l’accumulateur A, le résultat est
dans A.
122
Exemple :
ADDA $2000, PC addition du contenu mémoire dont l’adresse est la valeur courante du
PC+ $2000 et de l’accumulateur A, le résultat est dans A.
MPU Mémoire
Post-
octet
PC ADR ADR+ 4
ADR + 4 AB ADR
D A aaaa + 11 8D ADR+1
B 20 ADR+2
aa+11 ADR+3
00
X ADR+4
Y
S
11 ADR + 4+$2000
U
ADR +
DP 4+$2000 Post Octet
E F H I N Z V C
CCR Adressage indexé
Déplacement const sur 15 bits
11 ADR+2
X xxxx= 0011 ADR+2
xxxx= ETIQ –
Y (ADR+4)
S
ETIQ
U
DP
E F H I N Z V C
CCR Adressage indexé
Etiquette localisée
La syntaxe assembleur utilisée pour définir l’indirection est la même que celle
de l’adressage étendu : « [ ] »
Les instructions sont codés sur deux octets, le premier définit le code opératoire
(identique à l’indexé simple), le second le type de déplacement, le type de base et
l’indirection.
99
9.1 Mode d'adressage indexé indirect. Déplacement nul
Exemple :
LDA [, X] chargement de A avec le contenu mémoire dont l’adresse est le contenu de
(X,X+1).
MPU Mémoire
Post Octet
A6
PC ADR ADR
ADR+2 ADR + 2 94
ADR+1
D A 11 ADR+2
B
X xxxx
Y
20 xxxx
S
08 xxxx+1
U
11
DP
11 2008
E F H I N Z V C
CCR
Exemple :
ADDA [, U++] addition de l’accumulateur A et du contenu mémoire
dont l’adresse se trouve pointée par U,U+1, le résultat est dans A.
101
Exemple :
ADDA [, U++] addition de l’accumulateur A et du contenu mémoire dont l’adresse se trouve
pointée par U,U+1, le résultat est dans A.
MPU Mémoire Post Octet
AB ADR ADR+1
PC ADR ADR+2
ADR + 2 D1 ADR+2
A aa
aa+11
D
B
aa+11
X
uuuu uuuu+1
Y
20
S
08
U uuuu
DP
uuuu+2
11 2008
E F H I N Z V C
CCR
Exemple :
LDA [$2000, X] chargement de l’accumulateur A avec le contenu
mémoire dont l’adresse est pointée par X+ $2000.
103
Exemple :
LDA [$2000, X] chargement de l’accumulateur A avec le contenu mémoire dont l’adresse est
pointée par X+ $2000.
MPU Mémoire Post Octet
A6 99 ADR ADR+1
PC ADR ADR+4
ADR + 4
20 ADR+2
D A 11
00 ADR+3
B ADR+4
$11
X xxxx
Y
30 xxxx+2000
S U
xxxx 00 xxxx+2001
+$2000
DP
11 3000
E F H IZ C
NV
CCR
Exemple :
LDU [D, Y] chargement de U avec le contenu dont l’adresse
mémoire est pointée par le contenu de Y + celui de D.
105
Exemple :
LDU [D, Y] chargement de U avec le contenu dont l’adresse mémoire est pointée par le contenu
de Y + celui de D.
MPU Mémoire Post Octet
PC AD R ADR+2
ADR + 2 EE ADR
BB ADR+1
D A aa
ADR+
B bb 2
X yyyy +
aabb
Y yyyy
30 yyyy+aabb
S
00 yyyy+aabb+1
U
1122
DP
11 3000
E F H I N Z V C 1122
22 3000+1
CCR
Exemple :
LDA [$F000, PC] chargement de A avec la valeur dont l’adresse est
pointée par la valeur courante du PC + $F000.
107
Exemple :
LDA [$F000, PC] chargement de A avec la valeur dont l’adresse est pointée par la valeur
courante du PC + $F000.
MPU Mémoire Post
Octet
A6 ADR
PC ADR
ADR+4 ADR + 4 9D ADR+1
F0 ADR+2
D
A B 11 00 ADR+3
ADR+4
ADR+4+$F000=
X MMmm
Y MMmm
PP
S
pp MMmm+1
U
DP
11 PPpp
11
E F H I N Z V C
CCR
Exemple :
LDA [TABLE, PC] chargement de A avec la valeur dont l’adresse est
pointée par TABLE.
109
Exemple :
LDA [TABLE, PC] chargement de A avec la valeur dont l’adresse est pointée parTABLE.
MPU Mémoire Post Octet
A6 ADR
PC ADR
ADR+4 ADR + 4 9D ADR+1
DD ADR+2
D A 11 ADR+3
dd
B ADR+4
TABLE-(ADR+4)
X =DDdd
Y
PP TABLE
S
pp
U
DP
11 11 PPpp
E F H I N Z V C
CCR
LDB $20, X
Instruction déplacement Base : X ou Y ou U ou S ou PC
Index X
Index Y
Pointeur S
Pointeur U
PC X X X X X X X X X
Tableau : combinaisons des adressages indexé
139
Conclusion
Le microprocesseur 6809 offre de nombreuses possibilités d’adressage
indexé (simple ou indirect) suivant le type de base et de déplacement choisi.
Le tableau suivant résume toutes ces possibilités :
LDB $20, X
Instruction déplacement Base : X ou Y ou U ou S ou PC
Index X
Index Y
Pointeur S
Pointeur U
PC X X X X X X X X X
Tableau : combinaisons des adressages indexé
LDB $20, X
Instruction déplacement Base : PC
Index X
Index Y
Pointeur S
Pointeur U
PC X X X X X X X X X
Tableau : combinaisons des adressages indexé
Classification des
instructions
142
Classification des instructions
143
Classification des instructions
144
I. Instructions de traitement des données
Instruction Fonction
ADD Addition du contenu mémoire à un accumulateur
ADC Addition du contenu mémoire à un accumulateur avec retenue
ABX Addition de l'accumulateur B à X(Non signé)
DAA Ajustement décimal de l'accumulateur A
MUL Multiplication de A par B (Non signé)
SUB Soustraction du contenu mémoire à l'accumulateur
SBC Soustraction du contenu mémoire à l'accumulateur avec retenue
SEX Extension de signe de l'accumulateur B à l'accumulateur A
145
I. Instructions de traitement des données
Instruction Fonction
ASR Décalage arithmétique à droite
LSL ou ASL Décalage logique ou arithmétique à gauche
LSR Décalage logique à droite
ROL Rotation à gauche
ROR Rotation à droite
146
I. Instructions de traitement des données
Instruction Fonction
AND « ET logique » entre mémoire et registre interne
EOR « OU Exclusif » entre mémoire et registre interne
OR « OU logique» entre mémoire et registre interne
147
I. Instructions de traitement des données
Instruction Fonction
CLR Remise à zéro du contenu mémoire ou de l’accumulateur
DEC Décrémentation du contenu mémoire ou de l’accumulateur
INC Incrémentation du contenu mémoire ou de l’accumulateur
NOP Pas d’opération. Incrémentation du compteur programme
COM Complément à un du contenu mémoire ou de l’accumulateur
NEG Complément à deux du contenu mémoire ou de
l’accumulateur
148
II Instructions de transfert des données
149
II Instructions de transfert des données
Instruction Fonction
PSH Empilement de(s) registre(s) sur la pile
PUL Dépilement de(s) registre(s)
150
II Instructions de transfert des données
151
III Instructions de tests et branchements
Ces instructions sont utilisées pour réaliser des tests de bits et des comparaisons. Les contenus
mémoire et accumulateur ne sont pas modifiés. Le résultat de ces instructions agit uniquement sur
les indicateurs du registre d’état, il n’entraîne pas de rupture de séquence( aucun branchement
n’est effectué).
Instruction Fonction
BIT Test de bits entre accumulateur et contenu mémoire
CMP Comparaison du contenu mémoire (1 ou 2 octets) avec un registre interne (8 ou 16
bits) du microprocesseur
TST Test du contenu mémoire ou d’un accumulateur
152
III Instructions de tests et branchements
2. Instructions de test et de branchement
Ces instructions permettent de réaliser des branchements conditionnels. Les tests s’effectuent sur
4 indicateurs du registre d’état :
- N : Bit de signe ou bit « négatif » (bit 3 du CCR) ;
- Z : indique si le résultat des opérations est égal ou différent de zéro (bit 2 du CCR) ;
- V : indicateur de débordement (bit 1 du CCR) ;
- C : bit de retenue (bit 0 du CCR)
Instruction Fonction
(L)BCC ou (L)BHS Branchement si pas de retenue
(L)BCS ou (L)BLO Branchement si retenue
(L) BEQ Branchement si égale à zéro
(L)BNE Branchement si différent de zéro
(L)BGE Branchement si supérieur ou égal à zéro
(L)BLT Branchement si inférieur (signé)
(L)BGT Branchement si supérieur (signé)
(L)BLE Branchement si inférieur ou égal (signé)
(L)BHI Branchement si supérieur (non signé)
(L)BLS Branchement si inférieur ou égal (non signé)
(L)BMI Branchement si négatif
(L)BPL Branchement si positif
(L)BVC Branchement si pas de débordement
(L)BVS Branchement si débordement
1 26
N.B : La lettre (L) précédant le mnémonique précise qu’il s’agit d’un déplacement long (16 bits).
III Instructions de tests et branchements
Ces instructions entraînent des ruptures de séquence, sans conditions préalables. Il faut toutefois
différencier les instructions de branchement qui sont suivies d’un déplacement long ou court, des
instructions de saut qui sont, elles, suivies de l ‘adresse effective.
Instruction Fonction
(L)BRA Branchement inconditionnel
(L)BRN Non branchement (non opération)
(L) BSR Branchement à un sous programme
JMP Saut inconditionnel à une adresse effective
JSR Saut à un sous programme
RTS Retour de sous programme
154
IV Instructions opérant sur les pointeurs
Instruction Fonction
LEA Chargement d’un registre pointeur avec une adresse effective
Fonction
Instruction
CWAY Validation puis attente d’une interruption
SYNC Synchronisation du logiciel avec une ligne d’interruption
RTI Retour du sous programme d’interruption
SW1/SW2/SW3 Interruption logicielle
155
FIN
156