Institut National des Statistiques et d’Economie Appliquée
Assembleur
Module : Architecture des ordinateurs
Cours 1ère année S1
2019 - 2020
PLAN
Présentation du processeur : Motorola 6809
Assembleur : Motorola 6809
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 2 S1 : Architecture des Ordinateurs
2016 - 2017
1
PLAN
Présentation du processeur : Motorola 6809
Assembleur : Motorola 6809
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 3 S1 : Architecture des Ordinateurs
2016 - 2017
MOTOROLA 6809
Le 6800 est un microprocesseur 8 bits produit par Motorola et
sorti peu de temps après l’Intel 8080.
Il a 78 instructions. Il est le premier microprocesseur avec un
registre d’index.
Il se présente habituellement sous forme d'un boîtier 40 broches
et contient 7000 transistors.
Il a plusieurs descendants : 6809, beaucoup de microcontrôleurs à
partir de l'architecture du 6800 : 6805, les 6807, le 68HC11 et le
68HC12.
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 4 S1 : Architecture des Ordinateurs
2016 - 2017
2
MOTOROLA 6809
Le motorola 6809 comporte :
Un bus Data sur 8 bits
Un bus d'adresse sur 16 bits permettant un adressage mémoire de
64 KiloBits.
Deux accumulateurs de 8 bits "A" et "B" transformables en 1
accumulateur de 16 bits "D"
Deux registres d'index de 16 bits "X" et "Y"
Deux registres pointeur de pile "U" et "S"
Un pointeur de page "DP" de 8 bits servant à l'adressage direct de la
mémoire
Un registre d'état "CC" sur 8 bits
Le compteur de programme sur 16 bits "PC" (CO) pointant toujours
sur l'adresse que le microprocesseur doit exécuter.
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 5 S1 : Architecture des Ordinateurs
2016 - 2017
MOTOROLA 6809 : LE BROCHAGE
Les pins du processeur
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 6 S1 : Architecture des Ordinateurs
2016 - 2017
3
MOTOROLA 6809 : LE BROCHAGE
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 7 S1 : Architecture des Ordinateurs
2016 - 2017
MOTOROLA 6809 : LE BROCHAGE
Le microprocesseur comporte 40 broches et il est alimenté en 5V
uniquement.
Il possède 3 bus indépendants :
Bus de données sur 8 bits (D0 à D7).
Bus d'adresse sur 16 bits (A0 à A15).
Bus de contrôle de 10 bits.
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 8 S1 : Architecture des Ordinateurs
2016 - 2017
4
MOTOROLA 6809 : LE BROCHAGE – Exemple de commande
Le signal lecture-écriture R/W (read/write) détermine le
sens du transfert des données.
Lorsque R/W = 1, le 6809 fait une lecture.
Lorsque R/W = 0, le 6809 fait une écriture sur le bus
de données.
Les lignes d'état du bus BA (Bus Available) et BS (Bus
State) renseignent les périphériques du 6809 sur la
disponibilité des bus de données et d'adresse.
BA = BS = 0 : les bus de données et d'adresse sont
disponibles
BA = 0, BS = 1 : le 6809 vient de recevoir une
interruption.
BA = 1, BS = 0 : le 6809 vient de rencontrer dans le
programme l’instruction SYNC.
BA = BS = 1 : Interruption par le signal HALT sur 6809
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 9 S1 : Architecture des Ordinateurs
2016 - 2017
MOTOROLA 6809 : LE BROCHAGE
La signification complète des différentes broches est
détaillée dans les fichiers pdf du CD du TP
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 10 S1 : Architecture des Ordinateurs
2016 - 2017
5
MOTOROLA 6809 : LES REGISTRES
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 11 S1 : Architecture des Ordinateurs
2016 - 2017
MOTOROLA 6809 : LES REGISTRES DE BASE
Le 6809 possède plusieurs registres utilisés pour la manipulation et le
traitement des données :
2 accumulateurs de 8 bits A et B transformables en 1 accumulateur de
16 bits, D.
Ils sont utilisés pour les instructions arithmétiques, logiques et de
chargement de données 8 bits (ou 16 bits) en mémoire. Ils sont pour
cela entièrement identiques.
L'accumulateur D est en fait la concaténation de A et B, le registre A
représentant les poids forts (bits 8 à 15) et B les poids faibles (bits 0 à
7).
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 12 S1 : Architecture des Ordinateurs
2016 - 2017
6
MOTOROLA 6809 : LES REGISTRES D’INDEX
2 registres d'index X et Y, sur 16 bits. Ils permettent d'adresser tout
l'espace mémoire avec en plus la capacité d'être pré-décrémenté ou
post-incrémenté pour faciliter le traitement de variables en tables.
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 13 S1 : Architecture des Ordinateurs
2016 - 2017
MOTOROLA 6809 : LES REGISTRES DE PILE
2 registres pointeurs de pile U et S.
U (User) est utilisé uniquement par le programmeur.
S (System) par le système pour les opérations de sauvegarde en cas
d'interruption ou de saut à un sous-programme (Adresse de retour).
La pile est un emplacement ou le microprocesseur sauvegarde le contenu
de ses registres internes pendant un certain temps.
Elles opèrent en mode dernier entré-premier sorti (LIFO : Last In - First
Out).
Le pointeur de pile pointe vers la dernière entrée effective de la pile.
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 14 S1 : Architecture des Ordinateurs
2016 - 2017
7
MOTOROLA 6809 : LE REGISTRE DE PAGE
Un registre de "page mémoire" DP (Direct Page), sur 8 bits, est utilisé
pour adresser des pages en mémoire.
Une page est un bloc de 256 bits. Aussi les emplacements mémoire 0 à
255 forment la page 0 de la mémoire. Le 6809 possède un bus d'adresse
de 16 bits, cela donne 256 pages.
Le registre DP permet une exécution plus rapide des programmes. Il est
automatiquement remis à 00 par un RESET.
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 15 S1 : Architecture des Ordinateurs
2016 - 2017
MOTOROLA 6809 : LE COMPTEUR PROGRAMME PC
LE REGISTRE CO
Un compteur programme PC ( Program Counter), sur 16 bits, pointe
l'adresse mémoire à laquelle le 6809 doit exécuter une instruction.
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 16 S1 : Architecture des Ordinateurs
2016 - 2017
8
MOTOROLA 6809 : LES REGISTRES CC
Un registre "codes conditions" CC, affichant en permanence l'état du
6809 résultant d’une instruction. Le contenu du registre d'état est
essentiellement conditionné par l’UAL.
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 17 S1 : Architecture des Ordinateurs
2016 - 2017
MOTOROLA 6809 : LES REGISTRES
Deux accumulateurs A et B
Deux registres indexe X,Y
Deux registres de pile : U,S
Un compteur ordinal PC
Un registre d’état CC et un
DP (8bits)
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 18 S1 : Architecture des Ordinateurs
2016 - 2017
9
MOTOROLA 6809 : INTERFACES
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 19 S1 : Architecture des Ordinateurs
2016 - 2017
Présentation du processeur : Motorola 6809
Assembleur : Motorola 6809
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 20 S1 : Architecture des Ordinateurs
2016 - 2017
10
Assembleur : Motorola 6809
Introduction
Structure d’une instruction en assembleur
Les principales instructions
Les modes d’adressage en assembleur
Les boucles en assembleur
Un premier exemple
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 21 S1 : Architecture des Ordinateurs
2016 - 2017
Assembleur Motorola 6809 : INTRODUCTION
Le programmeur a le choix entre différents langages (assembleur,
Ada, Java, C, etc.). La machine ne comprend que le langage machine
(i.e., instructions binaires) !
L’assembleur (i.e., langage d’assemblage) est le premier langage
non binaire accessible au programmeur
Code mnémoniques et symboles
Permet d’exploiter au maximum les ressources de la machine
Dépend de la machine : Chaque fabricant voire chaque processeur a
son propre Assembleur
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 22 S1 : Architecture des Ordinateurs
2016 - 2017
11
Assembleur Motorola 6809 : INTRODUCTION
Utilisés par les spécialistes ⇒ optimisation
Pour valoriser l’architecture spécifique de la machine
Diagnostic d’erreurs (i.e., examen du contenu de la mémoire)
L’assembleur est une variante symbolique du langage machine ⇒
même jeu d’instructions
Propre à chaque type de machine
Permet d’accéder aux ressources de la machine (i.e., registres)
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 23 S1 : Architecture des Ordinateurs
2016 - 2017
Assembleur Motorola 6809 : INTRODUCTION
Langage C Assembleur M6809 Langage Machine : Circuits M6809
var1=var2+1 LDA var2 1011 0110 0010 0000 0000 0000
ADDA # 1 1011 1011 0000 0001
Printf ("Résultat=%d",var1) STA var1 1011 0110 0010 0000 0000 0001
JSR impression 1011 0011 0000 0000 0000 0000
(impression identifie
un sous programme)
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 24 S1 : Architecture des Ordinateurs
2016 - 2017
12
Assembleur Motorola 6809 : STRUCTURE D’UNE INSTRUCTION
Une instruction est composée de deux parties distinctes et
consécutives :
Un opérateur (obligatoire) ;
Un ou plusieurs opérandes (facultatif).
Opérateur Opérandes
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 25 S1 : Architecture des Ordinateurs
2016 - 2017
Assembleur Motorola 6809 : PRINCIPALES INSTRUCTIONS
Chargement de registre : LDA,LDB
Exemple : LDA $0043 => charger l’accumulateur A par le contenu de
l’adresse mémoire $0043. Le symbole $ indique que c’est en
hexadécimal.
Chargement de la mémoire : STA,STB
Exemple : STA $0043 => charger l’adresse mémoire $0043 par le
contenu de l’accumulateur A
Echanger le contenu des registres: EXG R1,R2
Exemple : EXG A,B => Echanger le contenu des deux accumulateurs A et
B
Transférer le contenu d’un registre : TFR R1,R2
Exemple : TFR A,B => Transfère le contenu de l’accumulateur A vers
l’accumulateur B.
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 26 S1 : Architecture des Ordinateurs
2016 - 2017
13
Assembleur Motorola 6809 : PRINCIPALES INSTRUCTIONS
Opération d’Addition: ADDA, ADDB
ADDA $0034 => Additionner le contenu de l’accumulateur A avec le
contenu de la case mémoire d’adresse $0034.
Opération de soustraction : SUBA, SUBB
Exemple : SUBA $0043 => soustraire le contenu de l’accumulateur A du
contenu de la case mémoire d’adresse $0034
Comparaison: CMPA, CMPB
Exemple : CMPA $0043 => Comparer le contenu de l’accumulateur A
avec le contenu de l’adresse mémoire
Opération de Multiplication : MUL
Exemple : MUL => Multiplie le contenu de A et B. le résultat est mis
dans D.
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 27 S1 : Architecture des Ordinateurs
2016 - 2017
Assembleur Motorola 6809 : PRINCIPALES INSTRUCTIONS
LDX, LDY => charger les registres X ou Y par le contenu de l’adresse
mémoire mentionnée
STX/STY => Charger le contenu de l’adresse mémoire mentionnée
dans les registres X ou Y
ABX => Ajouter le contenu de l’accumulateur B à X
CMPX, CMPY => Comparer X ou Y avec le contenu de la mémoire
Voir la liste exhaustive dans les fichiers pdf
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 28 S1 : Architecture des Ordinateurs
2016 - 2017
14
Assembleur Motorola 6809 : MODES D’ADRESSAGE
Adressage inhérent : Le code opératoire contient toute l’information
nécessaire à l’exécution de l’instruction.
– CLRA => Efface le contenu de l'accumulateur A.
– ABX => Ajoute le contenu de l’accumulateur B à X
Adressage immédiat: L'opérande (1 ou 2 octets) manipulé se trouve
directement après l'opérateur (symbole #) et n'est pas spécifié par
l'intermédiaire d'une adresse
– LDA #$12 => L'accumulateur est chargé avec la donnée
correspondant à 12 en hexadécimal.
– ADDB #%10001001 => Addition de la valeur binaire 10001001 à B
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 29 S1 : Architecture des Ordinateurs
2016 - 2017
Assembleur Motorola 6809 : MODES D’ADRESSAGE
Adressage Direct : Il permet en collaboration avec le registre DP de
charger un accumulateur avec le contenu de n’importe quelle
adresse mémoire.
Ex : Avec DP = 00
LDA < $00 => charge A avec le contenu de l’adresse $0000
CMPX < $35 =>compare X avec le contenu des adresses $0035 et
$0036
Ex : Avec DP = 24
LDA < $00 => charge A avec le contenu de l’adresse $2400
CMPX < $35 =>compare X avec le contenu des adresses $2435 et
$2436
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 30 S1 : Architecture des Ordinateurs
2016 - 2017
15
Assembleur Motorola 6809 : MODES D’ADRESSAGE
Adressage étendu : Il permet d’atteindre toute la mémoire mais avec
un opérande 2 octets (le symbole # est absent).
– LDA $0035 => L'accumulateur A reçoit le contenu de l'adresse
35.
– STA $0035 => Le contenu de A est chargé à l'adresse $35.
– ADDA $0035 => Le contenu de $35 est ajouté à celui de A et le
résultat est mis dans A.
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 31 S1 : Architecture des Ordinateurs
2016 - 2017
Assembleur Motorola 6809 : MODES D’ADRESSAGE
Adressage indexé : Ce mode se rapproche quelque peu de l'adressage
étendu. Mais, il utilise un registre d’index (X ou Y) de 16 bits qui
spécifie une base à laquelle on ajoute un déplacement signé de 5, 8 ou
16 bits. Tout dépend donc du contenu de cet index.
– LDX #$0010 => le registre X reçoit la valeur hexadécimale 10
(adressage immédiat).
– LDA, X => charge A avec le contenu de l’adresse pointée par la
valeur de X.
– LDA, X+ => Charge A avec le contenu de l’adresse pointée par X,
mais incrémente le contenu de X après la fin de l’instruction (Par
analogie : LDA, -X).
– LDA $05,X => L'accumulateur est chargé avec une valeur située à
l'adresse égale à la somme du déplacement indiqué (soit $5) et du
contenu de X (soit $10) => LDA $15
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 32 S1 : Architecture des Ordinateurs
2016 - 2017
16
Assembleur Motorola 6809 : PRINCIPALES INSTRUCTIONS - Branchement
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 33 S1 : Architecture des Ordinateurs
2016 - 2017
Assembleur Motorola 6809 : PRINCIPALES INSTRUCTIONS
BEQ : Branchement si égal à zéro
BNE : Branchement si différent de zéro
BMI : Branchement si négatif
BPL : Branchement si positif
BCS : Branchement si retenue
BCC : Branchement si pas de retenue
BVS : Branchement si dépassement de capacité
BRA : Branchement toujours
Nombres signés: Nombres non signés:
BGT : >0 ; BGE: >=0 BHI : >0 ; BHS: >=0
BLT : <0 ; BLE: <=0 BLO: <0 ; BLS: <=0
……
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 34 S1 : Architecture des Ordinateurs
2016 - 2017
17
Assembleur Motorola 6809 : BOUCLES
• Pour faciliter l'écriture du programme dans un tel cas, on ne spécifie
pas explicitement l'adresse à laquelle le PC doit se rendre mais une
étiquette.
• Exemple : LDB $AA
Retour:
DECB
BNE Retour
• Dans cet exemple, la première ligne charge B avec le contenu de
l'adresse $AA, puis on décrémente le contenu de B à la troisième
ligne et la quatrième ligne signifie que si ce contenu ne devient pas
égal à zéro, alors le μP doit revenir à la ligne indiquée par l’étiquette
: Retour
• Remarque : Une étiquette peut être n’importe quelle chaîne de
caractère commençant par un caractère de l’alphabet
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 35 S1 : Architecture des Ordinateurs
2016 - 2017
Questions et Exercices
Architecture des ordinateurs - Assembleur
[Link] 2015-2016 36 S1 : Architecture des Ordinateurs
2016 - 2017
18