Vous êtes sur la page 1sur 156

Cours Microprocesseurs

Youssef EL AFOU
elafou.youssef@gmail.com

Youssef EL AFOU 1
But de ce cours

 Connaître le rôle du microprocesseur.


 Connaître les différents composants d’un
microprocesseur et leurs rôles.
 Comprendre le fonctionnement du microprocesseur
et l’interaction entre les différentes unités.
 Maîtriser les étapes nécessaires à l’exécution des
programmes par le microprocesseur.

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

 Introduction aux Microprocesseurs


 les systèmes a base de microprocesseur
 Microprocesseur 6809
 Programmation en assembleur
 Le jeu d'instructions du 6809
 Les interface Séries et parallèles

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.

Architecture de Von Neumann

Dans une architecture Harvard, les


données et les instructions circulent sur
deux bus différents.

Les premiers microprocesseurs se basaient sur


une architecture Von Neumann tandis que des
processeurs nécessitant plus de puissance de
calcul reposaient sur une architecture Harward.
Depuis quelques années, on constate que les
microprocesseurs utilisent les atouts des deux 6
architectures.
Introduction au microprocesseur

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

Même si nous sommes en 1 bit, notre additionneur rend un


résultat sur 2 bits. Le bit résultat issu de l’addition des 2 bits
placés en entrée et le bit de retenu (Carry) non encore
utilisé. Nous parlons ainsi des états du calcul. Pour garder
les informations, nous construisons le registre d’états à
partir de bascule D. Nous conservons 1 bit, si l’addition
provoque une retenue, et nous ajoutons une bascule D avec
C13 comme sélecteur. Nous conservons 1 bit, si le résultat
est nul, et nous ajoutons une bascule D avec C14 comme
sélecteur.

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

Le microprocesseur échange des informations avec la mémoire


et l’unité d’E/S, sous forme de mots binaires, au moyen d’un
ensemble de connexions appelé bus. Un bus permet de
transférer des données sous forme parallèle, c’est-à-dire en
faisant circuler n bits simultanément. Les microprocesseurs
peuvent être classés selon la longueur maximale des mots
binaires qu’ils peuvent échanger avec la mémoire et les E/S :
microprocesseurs 8 bits, 16 bits, 32 bits, ... Le bus peut être
décomposé en trois bus distincts :
 le bus d’adresses permet au microprocesseur de spécifier
l’adresse de la case mémoire à lire ou à écrire ;
 le bus de données permet les transferts entre le
microprocesseur et la mémoire ou les E/S ;
 le bus de commande transmet les ordres de lecture18 et
d’écriture de la mémoire et des E/S.
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

Pour compléter les connexions des bus, il ne reste qu’à ajouter:


•des buffers à 3 états pour relier le bus de données interne et le bus de
données externe.
•des buffers à 3 états pour relier le bus d’adresse interne et le bus d’adresse
externe.
•de nouveaux signaux de contrôle pris en compte dans le séquencement. 20
Introduction au microprocesseur
Représentation d'un 4004 avec ses bus

21
Chapitre 1:

Généralités sur les Microprocesseur

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.

Un calculateur construit autour d’un microprocesseur est un


microcalculateur ou un microordinateur.

la mémoire centrale La mémoire peut être vue comme un


ensemble de cellules ou cases contenant chacune une
information : une instruction ou une donnée. Chaque case
mémoire est repérée par un numéro d’ordre unique nommé
adresse.
Remarque : un circuit intégré qui inclut une UCT, de la mémoire
25
et des périphériques est un microcontrôleur.
Architecture et fonctionnement d’un
microprocesseur
Représentation de la mémoire centrale :

Une case mémoire peut


être lue ou écrite par le
microprocesseur (cas
des mémoires vives) ou
bien seulement lue (cas
des mémoires mortes).
26
Description matérielle d’un microprocesseur

Un microprocesseur se présente sous la forme d’un circuit


intégré muni d’un nombre généralement important de
broches:

27
Exécution d’un programme sur un microprocesseur

Un microprocesseur exécute un programme.


Le programme est une suite d’instructions stockées dans la
mémoire. Une instruction peut être codée sur un ou
plusieurs octets.

Format d’une instruction :

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.

Le microprocesseur utilise un registre contenant


cette information. Ce registre est appelé
pointeur d’instruction (IP : Instruction Pointer) ou
compteur d’instructions ou compteur ordinal.
Exemple :
la valeur initiale du pointeur d’instruction
est fixée par le constructeur du
microprocesseur. Elle vaut une valeur bien
définie à chaque mise sous tension du
microprocesseur ou bien lors d’une remise
29
à zéro (reset).
Description matérielle d’un microprocesseur

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.

Remarque : pour exécuter une instruction, l’UAL utilise des


registres de travail, exemple : l’accumulateur, registre
temporaire recevant des données intermédiaires.
30
Description matérielle d’un microprocesseur
Rangement en mémoire :

Pendant que l’instruction est décodée, le pointeur d’instruction


est incrémenté de façon à pointer vers l’instruction suivante:

puis le processus de lecture et de décodage des instructions


recommence. A la suite de chaque instruction, un registre du
microprocesseur est actualisé en fonction du dernier résultat :
c’est le registre d’état du microprocesseur. Chacun des bits du
31

registre d’état est un indicateur d’état ou flag (drapeau).


Description matérielle d’un microprocesseur
Les indicateurs d’état sont activés lorsqu’une certaine condition est remplie,
exemple : le flag Z est mis à 1 lorsque la dernière opération a donné un résultat
nul, le flag C est mis à un lorsque le résultat d’une addition possède une retenue,

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

Pour exécuter le programme contenu dans la mémoire centrale, le séquenceur du


microprocesseur exécute lui-même un programme appelé micro-code, contenu dans
une mémoire morte `a l’intérieur du microprocesseur. Le séquenceur est dirigé par une
horloge qui délivre un signal de fréquence donnée permettant d’enchaîner les
différentes étapes de l’exécution d’une instruction :

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

Pour exécuter le programme contenu dans la mémoire centrale, le séquenceur du


microprocesseur exécute lui-même un programme appelé micro-code, contenu dans
une mémoire morte à l’intérieur du microprocesseur. Le séquenceur est dirigé par une
horloge qui délivre un signal de fréquence donnée permettant d’enchaîner les
différentes étapes de l’exécution d’une instruction :

35
Chapitre 2:

Mémoires et leurs fonctionnements

36
Mémoires ROM et RAM
On distingue deux types de mémoires :

les mémoires vives (RAM : Random Access Memory) ou


mémoires volatiles. Elles perdent leur contenu en cas de
coupure d’alimentation. Elles sont utilisées pour stocker
temporairement des données et des programmes. Elles
peuvent être lues et écrites par le microprocesseur ;
les mémoires mortes (ROM : Read Only Memory) ou mémoires
non volatiles. Elles conservent leur contenu en cas de coupure
d’alimentation. Elles ne peuvent être que lues par le
microprocesseur (pas de possibilité d’écriture). On les utilise
pour stocker des données et des programmes de manière
définitive. Les mémoires sont caractérisées par leur capacité :
nombre total de cases mémoire contenues dans un même
boîtier. 37
Mémoires ROM et RAM
Schéma fonctionnel d’une mémoire:

Le nombre de lignes d’adresses dépend de la capacité de la


mémoire : n lignes d’adresses permettent d’adresser 2n cases
mémoire : 8 bits d’adresses permettent d’adresser 256 octets,
16 bits d’adresses permettent d’adresser 65536 octets (= 64
Ko), Exemple : mémoire RAM 6264, capacité = 8K × 8 bits : 13
broches d’adresses A0 à A12, 213 = 8192 = 8 Ko. 38
Mémoires ROM et RAM
Interfaçage microprocesseur/mémoire

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 ) :

Chronogramme d’écriture en mémoire :

41
Mémoires ROM et RAM
Connexion de plusieurs boîtiers mémoires sur le bus d’un
microprocesseur

Les boîtiers s possèdent une broche notée CS (Chip Select).


Lorsque cette broche est active (état bas), le circuit peut être lu
ou écrit. Lorsqu’elle est inactive (état haut), le circuit est exclu du
service: ses broches de données D0 à D7 passent à l’état de
haute impédance: tout se passe comme si la mémoire était
déconnectée du bus de données du microprocesseur, d’où la
possibilité de connecter plusieurs boîtiers mémoire sur un même
bus : un seul signal CS doit être actif à un instant donné pour
éviter les conflits entre les différents boîtiers.

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 :

Le mapping de la mémoire devient ainsi :

46
Mémoires ROM et RAM
Classification des mémoires

Jusqu’à la fin des années 1970, on utilisait des mémoires à


tores magnétiques, lentes et de faibles capacités. Actuellement,
on n’utilise plus que des mémoires à semiconducteurs.

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.

 DRAM: Dynamic RAM. Basée sur la charge de


condensateurs : condensateur chargé = 1, condensateur
déchargé = 0. Avantage : intégration élevée, faible coût.
Inconvénient : nécessite un rafraîchissement périodique à
cause du courant de fuite des condensateurs. Application :
réalisation de la mémoire vive des ordinateurs (barrettes
mémoire SIMM : Single On-line Memory module).
49
Chapitre 3:

Applications sur Microprocesseur


6809

50
Organisation matérielle du 6809

Le microprocesseur 6809 est un processeur 8 bits


dont l'organisation interne est orientée 16 bits. Il est
fabriqué en technologie MOS et se présente sous la
forme d'un boîtier 40 broches.

51
Architecture du 6809

Le microprocesseur 6809 comporte NEUF registres internes


programmables accessibles par l'utilisateur:

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

CCR Registre d’état

52
Architecture du 6809

Pointeur de Pile Pointeur de Pile


S
U
RegistreA Registre B

Registre..d'état… UAL Compteur Ordinal


CCR PC

Registre d'index Registre d'index


X Y

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

Registre d'index Registre d'index


X Y
 Registres pointeurs: S, U, X, Y

Registres d'index : X,Y

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

Registre d'index Registre d'index


X
Registres d'index : X,Y
Le pointeur de pile S (Système) est utilisée par le
microprocesseur pour gérer le sauvegarde de ses registres internes
pendant l'exécution de programmes d'interruptions ou de sous
programmes. Le pointeur de pile U (Utilisateur) est utilisé uniquement
par le programmeur pour réaliser des passages d'arguments des sous
programmes ou vers des sous programmes.
56
Architecture du 6809
Registre A Registre B

UAL Compteur Ordinal


PC

Registre compteur programme PC

Le contenu de ce registre (16 bits) détermine l'adresse de l'instruction que


doit exécuter le processeur. Il pointe en permanence l'adresse de la
prochaine instruction à exécuter. Dans certain cas, ce compteur
programme peut être utilisé comme un index.

57
Architecture du 6809
Pointeur de Pile Pointeur de Pile
S
U
RegistreA Registre B

UAL Compteur Ordinal


PC

Registre d'index Registre d'index


X Y

DP

Registre de page: DP

Ce registre (8bits) est prévu pour étendre les


possibilités d'adressage direct à tout l'espace mémoire, sous
58
contrôle du logiciel.
Architecture du 6809

Pointeur de Pile Pointeur de Pile


S
U
RegistreA Registre B

CCR UAL Compteur Ordinal


PC

Registre d'index Registre d'index


X Y

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

C Retenue (Carry) Positionné lors d'une opération arithmétique


Dépassement (oVerflow) Positionné si le résultat( en complément à
deux) d'une opération arithmétique déborde
V

Zéro Mis à 1 si le résultat de l'opération


Z
précédente est nul
N Négatif Indique un résultat négatif.
Masque d'interruptions IRQ Lorsqu'il est à 1, masque les interruptions
I
IRQ

H Demi-retenue

Masque d'interruptions FIRQ Lorsqu'il est à 1, masque les interruptions


F
FIRQ
Etat de sauvegarde Si à 1, tout le contexte du processeur est
E 60
sauvegardé dans la pile
Mode d’adressage
 Le MPU possèdent 59 instructions de base mais en conjonction
avec les NEUF modes d'adressage disponibles, on parvient à 1464
possibilités

STRUCTURE D'UNE INSTRUCTION

 Elle comporte de un à 5 octets ( dépend du mode d'adressage).


 Le premier (parfois le deuxième) octet indique l'action à effectuer
correspond au code de l'instruction,
 Les octets suivants précisent les opérandes ou sur quelques
registres cette action agira.

Instruction (mnémoniques)
Opération Opérande
LDA $2000
Charger (Load ) dans
le registre A

LDA $2000  code en hexadécimal = B6 2000 ( 3 octets)


61
Mode d’adressage
 Le MPU possèdent 59 instructions de base mais en conjonction avec
les NEUF modes d'adressage disponibles, on parvient à 1 464 possibilités

Mode d'adressage inhérent

 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 :

 Adressage inhérent simple


 Le code opération contient toute l'information nécessaire à l'exécution
de l'instruction.
 Ces instructions codées sur un octet sont: ABX, INCB,NEGA,…..

 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é

L'instruction comporte un octet supplémentaire permettant de préciser les


opérandes intervenant dans l'instruction. La présence de cet octet
supplémentaire est indispensable pour les instructions de type:

 Échange et transfert de registres;

 Instructions d'accès aux piles;

 Attente d'interruption.

64
Mode d’adressage

Échange et transfert de registres: le premier octet détermine le code opération


pur, le second les registres source et destination:
Ex :TFR U,S  transfert de U dans S

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
=

Ordre d’empilement des registres

Si bi (0 i  7) = 1, alors le registre correspondant est empilé


dans la pile S. Ainsi la donnée immédiate #$xy permet de
sélectionner le(s) registre(s) à sauvegarder.
0 0 0 1 0 1 1 0
X B A
Exemple: PSHS A,B,X  PSHS #$16
aa
bb
xx 31
x’x’
Mode d’adressage
Attente d'interruption: le premier octet est associé à l'instruction CWAY, le second
sert à masquer ou à valider les interruptions.
EX :CWAY # $ FF  attente d'interruption

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

2. Mode d'adressage immédiat

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 :

 Instructions sur deux octets

Le premier octet contient le code opératoire, le second la constante 8 bits. Ce type


d’instruction est réservé pour travailler sur les registres 8 bits du microprocesseur.

70
Ex : LDA #$15  charger la valeur $15 dans l’accumulateur A. Le
premier octet contient le code opératoire

MPU Mémoire

PC ADR ADR+2 ADR + 2


Code Opération
A LDA
D 15
B

86 ADR
X $15
15 ADR+1
Y
ADR+2
S
U

DP

CCR 7 6 5 4 3 2 1 0 Adressage immédiat


Instructions sur deux octets

71
 Instructions sur trois octets

Le premier octet contient le code opératoire, le second et le troisième


contiennent la constante 16 bits. Ce type d’instructions est réservé
pour travailler sur les registres 16 bits du microprocesseur.

Ex : ADDD #$2005  addition du contenu de l’accumulateur D


et de $2005, le résultat se trouve dans D.

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

CCR E F H I N Adressage immédiat

Instructions sur trois octets

73
 Instructions sur quatre octets

Dans ce type d’instruction, le code opératoire utilise deux octets


mémoire, la constante également. Le premier octet ($10) est
nécessaire pour les instructions : CMPD, CMPS, CMPU, CMPY,
LDS, LDY, STY, STS.

Ex :LDY #$2008  charger l’index Y avec la valeur $2008

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

CCR Adressage immédiat

Instructions sur quatre octets

75
Mode d’adressage

3. Mode d'adressage direct

 Le code opératoire (un ou 2 octet)


 L'opérande ( 1 octet ) : Poids Faible (8 bits) de l’Adresse Effective

DP ¨PF

Le symbole « < » est une directive assembleur qui force l’adressage


direct. Il existe deux types d’instructions dans ce mode d’adressage :

 Instructions sur deux octets

 Instructions sur trois octets


76
 Instructions sur deux octets
Le premier octet définit le code opératoire, le second le poids faible de
l’adresse effective.

Ex :LDA $08 ou LDA < $08 chargement de l’accumulateur A


avec le contenu de $ 2008 ( DP= $20)

77
 Instructions sur deux octets
Le premier octet définit le code opératoire, le second les poids faible de
l’adresse effective.

Ex :LDA $08 ou LDA < $08 chargement de l’accumulateur A


avec le contenu de $ 2008 ( DP= $20)

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

CCR Adressage direct

Instructions sur deux octets 43


 Instructions sur trois octets

Le code opératoire (sur 2 octet)


L'opérande ( 1 octet ) : Poids Faible (8 bits) de l’Adresse Effective

Ex : LDY $05 ou LDY < $05  chargement du registre Y avec le


contenu de $2005/06 (DP=$20)

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

4. Mode d'adressage étendu


 Le code opératoire (sur 1 ou 2 octet)
 L'opérande ( 2 octet ) : Adresse Effective

Le symbole « > » est une directive assembleur qui force l’adressage étendu. Il existe
deux types d’instructions dans ce mode d’adressage

Instructions sur trois octets

Le premier octet (code opératoire) est suivi de l’adresse 16 bits spécifiant


l’emplacement de l’opérande (8 ou 16 bits).

Le code opératoire (sur 1 octet)


L'opérande (2 octet ): Adresse Effective

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

Le premier octet est seulement nécessaire pour les instructions qui


opèrent sur les pointeurs S et Y et sur les instructions de comparaison
CMPU, CMPD.

Ex :LDY $2CB5 ou LDY > $2CB5  chargement du registre Y Avec le


contenu de $2CB5

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é

II. Mode adressage immédiat 1. sur deux octets 1. LDA #$A0


2. sur trois octets 2. ADDD #$2009
3. sur quatre octets 3. LDY #$10B4
III. Mode adressage Direct 1.LDA $40 ou
1. sur deux octets LDA <$40
adresse = $2040 : (DP)=$20
2. LDY $50
2. sur trois octets
Adresse=$3050/51 (DP=30)
IV. Mode adressage étendu 1. sur trois octets 1. LDB $2145

2. sur quatre octets 2. CMPU $2009

V. Mode adressage étendu indirect

VI. Mode adressage relatif court


VII. Mode adressage relatif long

VIII. Mode adressage indexé


IX. Mode adressage indexé indirect
5. Mode d'adressage étendu indirect

Ce mode d’adressage est identique au mode d’adressage étendu mais il


possède en plus une indirection.
La notation assembleur " [ ]" force l'adressage étendu indirect.

 Le code opératoire (sur 2 ou 3 octets)


 L'opérande ( 2 octet ) : Adresse Effective

 Instructions sur quatre octets


Les deux premiers octets déterminent le code opératoire ; code
opératoire de l’adressage étendu simple suivi d’un post-octet
déterminant l’indirection. Les 3ème et 4ème octets représentent
l’adresse de transit.

86
Ex :LDA [$2000]  chargement de l’accumulateur avec le contenu dont
l’adresse se trouve en $2000 et $2001.

MPU Mémoire Post Octet

PC ADR ADR + 4 ADR


ADR+4
A6
9F ADR+1

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

Adressage étendu Indirect

Instructions sur quatre octets


87
Mode d’adressage

 Instructions sur cinq octets

Pour certaines instructions, il est nécessaire d’ajouter un pré-octet Cela est


nécessaire pour les instructions opérant sur les pointeurs S et Y ($10) et
pour les instructions de comparaison CMPU et CMPD ($11). Le reste de
la codification est identique au cas précédent.

Ex:LDY [$2004]  chargement du registre d’index Y avec le contenu dont


l’adresse se trouve en $2004 et $2005.

88
Ex:LDY [$2004]  chargement du registre d’index Y avec le contenu
dont l’adresse se trouve en $2004 et $2005.

MPU Pré Mémoire Post


Octet Octet
10 ADR
PC ADR ADR+5 ADR AE ADR+1
+5 9F ADR+2
A ADR+3
D 20
B
04 ADR+4
X

Y 1122
30 2004
S 00 2005

U $11 22
DP
E F H I N ZV C 11 3000
22 3001
CCR

Adressage étendu Indirect


Instructions sur cinq octets 89
Mode adressage Exemple
I. mode d'adressage inhérent 1. inhérent simple ABX ; NEG…
2. inhérent paramétré

II. Mode adressage immédiat 1. sur deux octets 1. LDA #$A0


2. sur trois octets 2. ADDD #$2009
3. sur quatre octets 3. LDY #$10B4
III. Mode adressage Direct 1.LDA $40 ou
1. sur deux octets
adresse = $2040 : (DP)=$20
2. LDY $50
2. sur trois octets
Adresse=$3050/51 (DP=30)
IV. Mode adressage étendu 1. sur trois octets 1. LDB $2145

2. sur quatre octets 2. CMPU $2009

V. Mode adressage étendu indirect 1. sur quatre octets LDA [$2009]

2. sur cinq octets LDY [$2009]

VI. Mode adressage relatif court


VII. Mode adressage relatif long

VIII. Mode adressage indexé


IX. Mode adressage indexé indirect
Mode d’adressage

6. Mode d'adressage relatif court

Ce mode d'adressage est réservé pour les instructions de branchement

Ex: Arret EQU $3000 BPL Arret

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

Ce mode est identique au précédent, il est toujours réservé aux


branchements. Les instructions sont codées sur quatre octets, les deux
premiers déterminent le code opération, les 3è et 4è octets donnent la valeur
signée du déplacement.
Le déplacement est codé sur 16 bits.

Exemple : ARRET EQU $4000


LBPL ARRET

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é

II. Mode adressage immédiat 1. sur deux octets 1. LDA #$A0


2. sur trois octets 2. ADDD #$2009
3. sur quatre octets 3. LDY #$10B4
III. Mode adressage Direct 1.LDA $40 ou
1. sur deux octets
adresse = $2040 : (DP)=$20
2. LDY $50
2. sur trois octets
Adresse=$3050/51 (DP=30)
IV. Mode adressage étendu 1. sur trois octets 1. LDB $2145

2. sur quatre octets 2. CMPU $2009

V. Mode adressage étendu indirect 1. sur quatre octets LDA [$2009]

2. sur cinq octets LDY [$2009]

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é

Le mode d’adressage indexé présente l’avantage de pouvoir travailler en


indirection. Dans ce cas on accède à l’adresse effective en transitant par
une adresse intermédiaire
Registre

ADRESSE EFFECTIVE = BASE+ DEPLACEMENT

La puissance d’un mode d’adressage indexé est déterminée par l’éventail


des bases dont on dispose et par toutes les possibilités que l’on a.

la base peut être soit


 un des deux registres d’index (Xou Y) ( ce qui est normale),
 mais aussi un des deux pointeurs de pile (U ou S)
 Ou ce qui est très intéressant, le compteur programme PC lui-même
(l’adressage est alors, un cas particulier de l’adressage relatif).

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

Enfin, l’adressage indexé offre des possibilités d’auto-incrémentation ou


décrémentation de 1 ou de 2.

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)

1 0/1 1 1 0 0 AE= , PC  7 bits

1 0/1 1 1 0 1 AE= , PC  15 bits

Les bits 5 et 6 du post octet permettent de définir la base :


BASE R b6 b5
Index X 0 0
Index Y 0 1
Pointeur U 1 0
Pointeur S 1 1

Compteur Programme  Indifférent, la sélection de la base PC se fait à laide 66


des bits 2 et 3 (1,1)
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)

1 0/1 1 1 0 0 AE= , PC  7 bits

1 0/1 1 1 0 1 AE= , PC  15 bits

le bit 7 définit le rôle du bit4 :


• b7=0  b4 = bit de signe.
• b7=1  b4= choix du mode direct (b4=0) ou indirect (b4=1 );

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)

1 0/1 1 1 0 0 AE= , PC  7 bits

1 0/1 1 1 0 1 AE= , PC  15 bits

1 R 0/1 1 1 1 1 AE= , Adresse

Les bits 0 à 3 définissent le champ du mode d’adressage.


Nous allons voir toutes les combinaisons possibles.

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

1 0/1 1 1 0 0 AE= , PC  7 bits


Dépl PC
1 0/1 1 1 0 1 AE= , PC  15 bits

Les combinaisons possibles pour les modes d’adressage:


1 :Déplacement nul
2 :Auto Incrémentation/décrémentation
3 :Déplacement constant
4 :Déplacement accumulateur
101
5 :Base= compteur Programme PC
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 Increm/
1 R 0 0 0 1 0 AE= , - R 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 Dépl
1 0/1 1 1 0 0 AE= , PC  7 bits
PC
1 0/1 1 1 0 1 AE= , PC  15 bits

Les combinaisons possibles pour les modes d’adressage:


1 :Déplacement nul
2 :Auto Incrémentation/décrémentation
3 :Déplacement constant
4 :Déplacement accumulateur
102
5 :Base= compteur Programme PC
8.1 Mode d'adressage indexé. Déplacement nul.

Dans ce mode, le registre pointeur sélectionné contient l’adresse


effective des données devant être utilisées par l’instruction. Ce mode est le
mode indexé le plus rapide. Il existe deux types d’instructions :

 Instructions sur deux octets :


Le code opératoire est suivi du post-octet précisant les options
choisies pour l’instruction en cours.

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

CCR Adressage indexé

Déplacement nul

Dans ce cas le post-octet est égale $84 :


• b7=1  b4=0 signifie que l’adressage est indexé direct
1 0 0 0 0 1 0 0

• b6.b5=0.0  l’index est X X Déplacement nul

• b3.b2.b1.b0=0.1.0.0  le déplacement est nul.


Adressage indexé direct
72
 Instructions sur trois octets

pour certains registres du microprocesseur il est nécessaire d’ajouter


un pré-octet, aux deux octets opératoires proprement dit. Cela mis à
part, ce mode est identique au précédent.

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

On peut obtenir des pré-décrémentations de un ou deux et des post-


incrémentations de un ou deux.
Ces possibilités permettent de gérer facilement une table. Le
registre pointeur sélectionné contient l’adresse effective des données
utilisées par l’instruction.

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

CCR Adressage indexé Post Octet


Auto-incrémentation/Décrémentation(2 octets)

Dans ce cas le post-octet est égale $80 :


• b7=1  b4=0 signifie que l’adressage est indexé direct
1 0 0 0 0 0 0 0

• b6.b5=0.0  l’index est X X post_incrémentation

• b3.b2.b1.b0=0.0.0.0  mode post_incrémentation.


Adressage indexé direct
77
NB: Le mode auto-incrémentation/décrémentation par un est utilisé pour gérer des tables de données
 Instructions sur trois octets :
Exemple :
LDY , --X  chargement de Y avec la valeur dont l’adresse de base est le contenu
de X – 2.
MPU Mémoire
Post-
octet
PC ADR ADR + 3
ADR+3
10 ADR

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

CCR Adressage indexé

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

Dans ce mode d’adressage, l’adresse effective de l’opérande est la somme


du déplacement (en complément à deux) et du contenu du registre
constituant la base.
Le registre de base n’est pas modifié. Il existe trois formes d’adressage
indexé à déplacement constant, suivant la valeur de cette constante.

Déplacement sur  4 bits

Ce déplacement codé sur 5 bits (en complément à deux) présente


l’avantage d’être contenu dans le post-octet d’indexation. Ce qui permet un
gain de place mémoire et une exécution plus rapide de cette instruction.
Les bits 0 à 4 du post-octet déterminent donc la valeur du déplacement qui
peut être de -16 octets en arrière (1 0000) et de + 15 octets en avant (0
1111). Dans ce cas le bit constamment à zéro initialise le bit 4 comme
bit de signe.

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é

Déplacement sur  4 bits

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

Ce déplacement codé sur 8 bits (en complément à deux) est contenu


dans un seul octet, placé à la suite du code opératoire proprement dit
et du post-octet. Les déplacements possibles sont donc compris
entre -128 et +127 octets.

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

CCR Adressage indexé

Déplacement sur  7 bits

Le post-octet prend la valeur C8 en hexa (1100 1000) : 1 1 0 0 1 0 0 0


•b7=1  b4=0 adressage indexé direct. U Déplacement ±7 bits
•b6.b5=1.0.  index U .
•b3.b2.b1.b0=1.0.0.0 le déplacement est codé sur 8 bits 83
en compléments à deux. Adressage indexé direct
 Déplacement sur  15 bits

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é

Déplacement sur  15 bits

Le post-octet prend la valeur 89 en hexa (1000 1001) : 1 0 0 0 1 0 0 1


•b7=1  b4=0 adressage indexé direct.
X Déplacement ±15 bits
•b6.b5=0.0.  index X .
•b3.b2.b1.b0=1.0.0.1 le déplacement est codé sur 16 bits
en compléments à deux. Adressage indexé direct 85
8.4 Mode d'adressage indexé. Déplacement accumulateur

Ce mode d’adressage est semblable au précédent à l’exception du


déplacement qui n’est plus codé sur des octets spécifiques mais
contenu dans les accumulateurs A,B ou D du microprocesseur..

L’adresse effective est donc la somme des registres pointeur et


accumulateur spécifiés dans le mnémonique de l’instruction

Déplacement sur  7 bits. Accumulateurs A ou B

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

CCR Adressage indexé

Déplacement sur  7 bits. Accu A ou B

Le post-octet prend la valeur 85 en hexa (1000 0101) :


1 0 0 0 0 1 0 1
• b7=1  b4=0 adressage indexé direct.
• b6.b5=0.0.  index X . X Déplacement =
contenu de B (Compl
• b3.b2.b1.b0=0.1.0.1 le déplacement est égale à2)
au contenu de l’Acc B (en complément à 2) 88
Adressage indexé direct
 Déplacement sur  15 bits. Accumulateur D
Exemple :
LEAY D, X  chargement dans l’index Y de l’adresse effective donnée par la somme D + X

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

Le post-octet prend la valeur 8B en hexa (1000 1011) :


1 0 0 0 1 0 1 1
•b7=1  b4=0 adressage indexé direct.
•b6.b5=0.0.  index X .
X Déplacement =
Contenu D (En compl
•b3.b2.b1.b0=1.0.1.1 le déplacement = contenu de 2)
l’Acc D=(A :B )en complément à 2) Adressage indexé direct 89
8.5 Mode d'adressage indexé. Base=compteur programme

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.

L’utilisation du compteur ordinal comme base


d’indexationimpose des restrictions sur les types de déplacements.

Seuls les déplacements constants codés sur 8


ou 16 bits (en complément à 2) peuvent être
utilisés.

11
9
 Déplacement sur  7 bits.

L’adresse effective est égale au compteur programme courant plus un


déplacement codé sur 8 bits. L’instruction est codée sur 3 octets (
code opératoire + post-octet+ déplacement).

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

Le post-octet prend la valeur 8C en hexa (1000 1100) :


1 0 0 0 1 1 0 0
•b7=1  b4=0 adressage indexé direct.
•b6.b5  indifferent
Indiférent Déplacement sur 8
bits ( en Compl à 2)
•b3.b2.b1.b0=1.1.0.0 le déplacement sur 8 bits (en
complément à 2) Adressage indexé direct
121
 Déplacement sur  15 bits.

L’adresse effective est égale au compteur courant plus un déplacement


codé sur deux octets. Ce mode d’adressage présente l’avantage de
permettre des déplacements sur tout l’espace mémoire du processeur

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

Le post-octet prend la valeur 8D en hexa (1000 1101) : 1 0 0 0 1 1 0 1


•b7=1  b4=0 adressage indexé direct. Indiférent Déplacement sur 16
•b6.b5  indifferent bits ( en Compl à 2)
•b3.b2.b1.b0=1.1.0.1 le déplacement sur 16 bits (en
95
complément à 2) Adressage indexé direct
 Étiquette localisée.

Dans ce cas, la syntaxe assembleur n’utilise pas directement un


déplacement mais une étiquette localisée située à  128 octets de
l’instruction suivante (déplacement sur 8 bits) ou n’importe où sur
l’espace mémoire du microprocesseur (déplacement sur 16 bits).

Comme précédemment l’adresse effective est égale au compteur


programme courant plus un déplacement sur codé 8 ou 16 bits.
L’instruction est codée sur trois ou quatre octets.

La syntaxe assembleur contient le mnémonique de l’instruction, le nom de


l’étiquette localisée plus la base.

L’assembleur calcule la valeur du déplacement en fonction de la position


de l’étiquette.
96
Exemple :
LEAX ETIQ, PC  chargement du registre d’index X avec l’adresse effective qui est donnée par la
position de l’étiquette par rapport au compteur programme courant.
Dans cet exemple on prend : ADR=$2000  xxxx=0011
ETIQ=$2015
MPU Mémoire
Post-
PC ADR octet
ADR+4 ADR + 4
30 ADR
A 8D ADR+1
D
B 00 ADR+2

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

Le post-octet prend la valeur 8D en hexa (1000 1101) : 1 0 0 0 1 1 0 1


•b7=1  b4=0 adressage indexé direct. Indiférent Déplacement sur 16
•b6.b5  indifferent bits ( en Compl à 2)
•b3.b2.b1.b0=1.1.0.1 le déplacement sur 16 bits (en
97
complément à 2) Adressage indexé direct
Mode adressage Exemple
VIII. Mode adressage indexé 1. Déplacement NUL :
a. Sur deux octets LDB ,X
a. Sur trois octets LDY ,U
2. Auto Incrémentation/décrémentation :
a. Sur deux octets LDA ,Y+
a. Sur trois octets LDY ,--X
3. Déplacement constant :
a. Sur ± 4 bits ADDB -14,X
a. Sur ± 7 bits LDA $30,X
a. Sur ± 15 bits LDB $8000,Y
4 .Déplacement accumulateur :
a. Déplacement sur  7 bits. Acc A ou B LDA B,X

a. Déplacement sur  15 bits. Acc D LEAY D,X


5. Base=Compteur Programme PC
a. Déplacement sur  7 bits. LDB $20,PC
a. Déplacement sur  15 bits. ADDA $2000,PC
a. Etiquette localisée LEAX ETIQ,PC
IX. Mode adressage indexé 1. Déplacement nul LDA [,X]
indirect 2. Auto Incrémentation/décrémentation ADDB [,U++]
3. Déplacement constant LDA [$2000,X]
4 .Déplacement accumulateur LDU [D,PC]
LDA [$F000,PC]
5. Base=Compteur Programme PC
LDA [TABLE,PC]
9. Mode d'adressage indexé indirect

Le mode d’adressage indexé présente l’avantage de pouvoir travailler en


indirection.
Dans ce cas on accède à l’adresse effective en transitant par une adresse
intermédiaire.

On peut donc écrire :

Adresse effective = contenu mémoire


dont l’adresse de base est la somme de l’index + le
déplacement.

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

Adressage indexé Indirect


Déplacement nul

Le post-octet prend la valeur 94 en hexa (1001 0100) :


• b7=1  b4=1 adressage indexé indirect. 1 0 0 1 0 1 0 0
• b6.b5 =0.0 index X X Déplacement nul
• b3.b2.b1.b0=0.1.0.0  déplacement nul 100
Adressage indexé indirect
9.2 Mode d'adressage indexé indirect. Auto-incrémentation/décrémentation

Le mode indexé travaille seulement en auto-incrémentation/décrémentation


par deux, ce qui est normal car ce mode permet de gérer des adresses

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

Adressage indexé Indirect


Auto-incrémentation/décrémentation

Le post-octet prend la valeur D1 en hexa (1101 0001) : 1 1 0 1 0 0 0 1


• b7=1  b4=1 adressage indexé indirect.
U Post auto_incrémentation
• b6.b5 =1.0 index U
de 2
• b3.b2.b1.b0=0.0.0.1  post auto-incrémentation de 2 102
Adressage indexé indirect
9.3 Mode d'adressage indexé indirect. Déplacement constant

Les déplacements constants sont codés sur 8 ou 16 bits (en complément à


deux). L’indirection n’est pas possible pour un déplacement codé sur 5
bits.

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

Adressage indexé Indirect


Déplacement constant

Le post-octet prend la valeur 99 en hexa (1001 1001) : 1 0 0 1 1 0 0 1


• b7=1  b4=1 adressage indexé indirect.
X Dépl constant sur ±15 bits
• b6.b5 =0.0 index X
• b3.b2.b1.b0=1.0.0.1  déplacement constant sur  15 bits 104
Adressage indexé indirect
9.4 Mode d'adressage indexé indirect. Déplacement accumulateur

Comme dans l’adressage indexé simple, le déplacement est contenu dans


les accumulateurs A, B ou D( en complément à deux)

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

Adressage indexé Indirect


Déplacement accumulateur

Le post-octet prend la valeur BB en hexa (1011 1011) :


•b7=1  b4=1 adressage indexé indirect. 1 0 1 1 1 0 1 1

•b6.b5 =0.1 index Y Y Dépl accumulateur D En


•b3.b2.b1.b0=1.0.1.1  déplacement accumulateur D compl à 2

(en complément à deux) 106


Adressage indexé indirect
9.5 Mode d'adressage indexé indirect. Base= compteur programme

Si la base est le compteur programme lui-même, les déplacements sont


codés sur 8 ou 16 bits en complément à deux, l’indirection est possible
dans ces deux cas.

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

Adressage indexé Indirect


Base= compteur programme

Le post-octet prend la valeur 9D en hexa (1001 1101) :


• b7=1  b4=1 adressage indexé indirect. 1 0 0 1 1 1 0 1
• b6.b5 =indifferent indiférent Dépl codé sur ± 15 bits
• b3.b2.b1.b0=1.1.0.1  déplacement codé sur  15 bits.
108
Adressage indexé indirect
Comme pour l’adressage indexé direct, on peut utiliser dans ce
mode non pas un déplacement mais une étiquette localisée, pour
ce qui est de la syntaxe assembleur.

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

Adressage indexé Indirect


PC & (étiquette localisée)

Le post-octet prend la valeur 9D en hexa (1001 1101) :


• b7=1  b4=1 adressage indexé indirect. 1 0 0 1 1 1 0 1

• b6.b5 =indifferent indiférent Dépl codé sur ± 15 bits


• b3.b2.b1.b0=1.1.0.1  déplacement codé sur  15 bits.
110
Adressage indexé indirect
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

Pré- auto Post_auto


décrémentation décrémentation
 7 bits  15 Acc A Acc B Acc D
Déplacement Nul 4 bits
bits de un : de deux : de un : de deux :
« ,-  » « ,-- » « , + » « ,-- ++»

Index X           
Index Y           
Pointeur S           
Pointeur U           
PC X X   X X X X X X X
Tableau : combinaisons des adressages indexé

 : indexé avec indirection possible


 : indexé avec indirection impossible
X : pas d’adressage 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

Pré- auto Post_auto


décrémentation décrémentation
 7 bits  15 Acc A Acc B Acc D
Déplacement Nul 4 bits
de un : de deux : de un : de deux :
bits
« ,-  » « ,-- » « , + » « ,-- ++»

Index X           
Index Y           
Pointeur S           
Pointeur U           
PC X X   X X X X X X X
Tableau : combinaisons des adressages indexé

 : indexé avec indirection possible


 : indexé avec indirection impossible
X : pas d’adressage indexé
140
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 : PC

Pré- auto Post_auto


décrémentation décrémentation
 7 bits  15 Acc A Acc B Acc D
Déplacement Nul 4 bits
bits de un : de deux : de un : de deux :
« ,-  » « ,-- » « , + » « ,-- ++»

Index X           
Index Y           
Pointeur S           
Pointeur U           
PC X X   X X X X X X X
Tableau : combinaisons des adressages indexé

 : indexé avec indirection possible


 : indexé avec indirection impossible
X : pas d’adressage indexé
113
Chapitre 3

Classification des
instructions
142
Classification des instructions

Les instructions du 6809 sont classées par groupe (5) :

I. Instructions de traitement des données

II. Instructions de transfert

III. Instructions de test et de branchements

IV. Instruction opérant sur les pointeurs

V. Traitement des interruptions

143
Classification des instructions

I. Instructions de traitement des données

Les instructions de traitement des données se répartissent en Quatre


catégories:

1. Les instructions arithmétiques

2. Les instructions de rotation et décalage

3. Les instructions logiques

4. Les instructions d'incrémentation-décrémentation,


mise à 0, complémentation

144
I. Instructions de traitement des données

1. Les instructions arithmétiques

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

2. Les instructions de rotation et décalage

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

N.B: Ces instructions opèrent sur des déplacements de 1 bit seulement

146
I. Instructions de traitement des données

3 .les instructions logiques

Ces instructions portent toutes sur des données de 8 bits

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

4 Instructions d’incrémentation-décrémentation, mise à 0, complémentation

Ces instructions (Sauf NOP) agissent sur une seule opérande.

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

On peut classer les instructions de transfert des données en TROIS catégories :

1.Instructions opérant sur les registres internes et la mémoire


2.Instructions de transfert opérant sur les pointeurs
3.Instructions opérant seulement sur les registres internes du
microprocesseur

1. Instructions opérant sur les registres internes et la mémoire


Ce type d’instructions est très employé. Les transferts mémoire, registre interne du
microprocesseur se font su 8 (A, B) ou sur 16 bits(D, X, Y, S , U). Seuls les registres
PC et DP ne sont pas accessibles directement.
Instruction Fonction
LD Chargement des registres internes du MPU
ST Mise en mémoire des registres internes du MPU

149
II Instructions de transfert des données

On peut classer les instructions de transfert des données en TROIS catégories :

1. Instructions opérant sur les registres internes et la mémoire


2. Instructions de transfert opérant sur les pointeurs
3. Instructions opérant seulement sur les registres internes du microprocesseur

2. Instructions de transfert opérant sur les pointeurs


Pour accéder aux piles du 6809, il existe deux instructions « d’empilage » et de
« dépilage ». Ces instructions transfèrent n’importe quel registre interne du
microprocesseur.

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

On peut classer les instructions de transfert des données en TROIS catégories :

1.Instructions opérant sur les registres internes et la mémoire


2.Instructions de transfert opérant sur les pointeurs
3.Instructions opérant seulement sur les registres internes du
microprocesseur

3.Instructions opérant seulement sur les registres internes du


microprocesseur Ces instructions permettent tous les transferts possibles entre
les registres internes du microprocesseur.
Instruction Fonction
EXG Echange du contenu de deux registres
TRF Transfert de registre à registre

151
III Instructions de tests et branchements

Ces instructions peuvent se répartir en trois catégories distinctes :

1.Instructions de test et de comparaison

2.Instructions de test et de branchement ;

3.Instructions de saut et branchement

1. Instructions de test et de comparaison

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

3. Instructions de saut et branchement

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

Le processeur calcule une adresse effective en fonction du mode d’adressage spécifique(toujours


indexé) puis charge cette valeur dans le pointeur (X, Y, S ou U).

Instruction Fonction
LEA Chargement d’un registre pointeur avec une adresse effective

V. Traitement des interruptions

Il existe sur le 6809, trois interruptions logicielles et trois interruptions matérielles.

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

Merci de votre attention

156

Vous aimerez peut-être aussi