Introduction aux Microprocesseurs
Les langages de programmation
La programmation dun microprocesseur
Jeux
J
di
dinstructions
t
ti
d
du 6809
Dure dexcution dun programme
Les champs dun
d un programme en langage assembleur
Modes dadressage du 6809
9 Mode d'adressage immdiat
9 Mode
M d d'adressage
d' d
tendu
t d (extended)
( t d d)
9 Mode d'adressage inhrent
9 Mode d'adressage direct
9 Mode d
dadressage
adressage indirect
9 Mode d'adressage index
9 L'unit arithmtique et logique
Pointeur de pile
9 Instructions manipulant les piles
9 Mouvement du pointeur de la pile
9 Contenu de la pile
9 Ordres
Od
d'empilement
d'
il
t ett de
d dpilement.
d il
t
1
II.1. Les langages de programmation
Il existe plusieurs langages de programmation; toutefois, le langage machine est le seul
compris par les microprocesseurs et est incontestablement le plus rapide excuter.
N.B.
R
Rq
L langage
Le
l
assembleur
bl
permett d
dutiliser
tili des
d mnmoniques
i
pour remplacer
l
les
l
codes machines difficiles interprter.
Les langages volus bnficient de librairies de fonctions rendant la programmation
plus simple dvelopper.
NOM
EXEMPLE DE
PROGRAMME
LANGAGE
MACHINE
En binaire:
10100101
01100000
01100101
01100001
10000101
01100010
En hexadcimal:
A5
60
65
61
85
62
LANGAGE
ASSEMBLEUR
LDA $60
ADC $61
STA $62
PROGRAMME DE
TRADUCTION
EN MACHINE
REMARQUES
Hexadecimal Loader
- le seul langage compris par le CPU
- accepte les codes hexadcimaux
- le programme en langage machine est appel
- les traduit en binaire
- les place en ordre dans la
mmoire
programme objet
- le programme Hexadecimal Loader fait en
gnral partie dd'un
un programme appel
MONITEUR. ses fonctions: examiner et
modifier le contenu des mmoires et des
registres; il permet l'excution partielle ou
totale du programme
ASSEMBLEUR
- accepte les mnmoniques
- les traduit en binaire
- les place gnralement dans un
- le programme crit sous forme mnmonique est
appel programme Source
p tiquette,
q
, mnmonique
q
- il contient les champs:
(instruction avec oprande) et commentaire.
fichier
LANGAGE DE
HAUT NIVEAU
- Basic
-C
- Pascal
- ...
En BASIC:
PRINT Allo N=PEEK(96)
POKE 98,N END
INTERPRETEUR
- traduit et excute le programme
ligne par ligne.
COMPILATEUR:
- langage orient vers les procdures plutt que
des instructions donnes au CPU
- prog. source indpendant du CPU ou de
l'ordinateur.
- traduit tout le programme en
machine avant de l'excuter.
II.2. La programmation dun microprocesseur
Un programme est une suite logique dd'instructions
instructions dont ll'objectif
objectif est de produire
un comportement dsir de la machine.
est le programme
R Tous les microprocesseurs comprennent un seul type de programme; cc'est
Rq
machine appel aussi programme binaire ou objet.
Voici un programme objet excutable par un MC6809:
code binaire
fonction
instruction
1000 0110
0101 1010
1011 0111
0000 0001
0000 0000
0011 1111
opcode
oprande
opcode
oprande
oprande
opcode
1re instruction
2me instruction
3me instruction
Reprsentation du programme en mnmonique. Pour plus de clart, l'opcode et
l'oprande ont t runis sur la mme ligne.
Code machine
Opcode
Oprande
86 5A
B7 01 00
LDA
STA
SWI
#$5A
$0100
1re instruction
2me instruction
3me instruction
II.3. Jeux dinstructions du 6809
L carte
La
t de
d codification
difi ti prsente
t lensemble
l
bl des
d instructions
i t ti
utilisables
tili bl par le
l 6809.
6809
Immediat
Instruction
Forms Op
LD
LDA
LDB
Addressing Modes
Direct Indexed Extended Inherent
# Op
# Op
# Op
# Op
# Description H N Z V C
86 2 2 96 4 2 A6 4+ 2+ B6 5 3
C6 2 2 D6 4 2 E6 4+ 2+ F6 5 3
5 3 2 1 0
M -> A
M -> B
0
0
Chaque colonne est numrote et correspond ce qui suit.
suit
Col. #1
Col #2
Col.
Contient les instructions possibles pour le microprocesseur.
Dtermine si ll'instruction
instruction opre avec la mmoire ou avec un registre;
dans ce cas avec quel registre.
Col. #3, 4, 5, 6 et 7 Ces 5 colonnes reprsentent les 5 types de base des modes
dd'adressages
adressages du microprocesseur:
Immediat
Direct
Indexed
Extended
Inhrent
(oprande: une valeur)
(oprande: une adresse de 8 bits)
(oprande: un registre pointeur)
(oprande: une adresse de 16 bits)
(il n'y a pas d'oprande)
5
Chacune de ces colonnes est subdivise en 3 autres colonnes:
Op
(code dd'opration
opration de ll'instruction)
instruction)
~
(nombre de cycles de l'instruction)
#
(nombre d'octets de l'instruction)
Col.
C
l #8
Col. #9
C'estt une explication
C'
li ti courte
t de
d ce que fait
f it l'instruction.
l'i t ti
Cette section (5 colonnes) indique comment les drapeaux H, N, Z, V et C
vont ragir l'excution de l'instruction. Vous trouverez la lgende des
symboles utiliss dans ces colonnes
symboles,
colonnes, sur la carte de codification la suite
des instructions.
II.3. Dure dexcution dun programme
p g
La dure dexcution dune instruction se calcule en tenant compte du nombre de cycles
de linstruction, multipli par la priode du cycle machine du microprocesseur.
N.B. La frquence dhorloge dterminant la dure du cycle machine est gale la
frquence du crystal divise par quatre.
Exemple
si la frquence du crystal du microprocesseur 6809 vaut 4 Mhz, alors la frquence dhorloge (E ou Q) vaut:
Frq. de E = Frq. du crystal / 4 = 1 Mhz
La dure dun cycle machine est gale la priode de lhorloge (E ou Q) et vaut:
Priode de E = 1 / Frq.
Frq de E = 1s
6
Pour une instruction durant 5 cycles, le temps dexcution est donc 5 fois le temps dun
cycle machine,
machine ccest--dire
est dire 5 s
II.3.1. Boucle de dlai
CODE
MACHINE
86 05
4A
26 FD
39
ETIQUETTE
ENCORE
OPCODE
OPRANDE
LDA
DECA
BNE
RTS
#5
ENCORE
NBR. DE
CYCLES
2
2
3
5
Cet exemple montre un sous-programme permettant de crer un dlai dont la dure
d d de
dpend
d la
l valeur
l
place
l dans
d
le
l registre
it A
On peut voir, par lanalyse du programme, que seules les instructions DECA et BNE
vont se rpter 5 fois
Le calcul du nombre de cycles total
pour le programme est:
nombre de cycles = 2 + 5 * (2 + 3) + 5 = 32 cycles
Avec un crystal 4 Mhz, un cycle vaut 1s et la dure du sous-programme est:
dure = 32 cycles * 1s = 32 s
II.4. Les champs dun programme en langage assembleur
ADRESSE
HEXA
CODE
MACHINE
TIQUETTE
MNMONIQUE
Opration
Oprande
ORG
0200
$0200
adresse du prog.
$A5
dclaration de la variable DONNEE
A5
DONNEE
PORTB
EQU
$6002
d l i de
dclaration
d la
l constante PORTB
0201
B6 02 00
DEBUT
LDA
DONNEE
lire la donne et la placer dans le reg. A
0204
B7 60 02
STA
PORTB
dposer le code du reg. A sur le port de sortie
0207
7E 02 01
JMP
DEBUT
le programme boucle sur lui-mme
0200
DB
COMMENTAIRES
END
directive fin de programme pour llassembleur
assembleur
La progression des adresses dpend de la longueur en octets de l'instruction.
ADRESSE:
Ce sont les codes sous la forme hexadcimale correspondant l'instruction.
Ce sont des mots reprsentatifs qui servent de rfrences. Elles remplacent des
adresses ou des constantes.
CODE MACHINE:
TIQUETTE:
MNMONIQUE:
C'est l'instruction complte incluant l'opration et l'oprande.
OPERATION:
C'est l'instruction de base.
OPERANDE:
C'est la donne de l'instruction. Elle peut reprsenter une valeur,
une adresse ou un registre. Certaines instructions n'utilisent
n utilisent pas d
doprande.
oprande.
COMMENTAIRE:
Champ optionnel mais trs utile pour la comprhension du programme.
II.5. Modes dadressage du 6809
Ds que l'on
l on commence programmer,
programmer il est extrmement important de comprendre les
modes d'adressage si l'on veut profiter de toute la puissance du 6809.
II.5.1. Mode d'adressage immdiat
Dans ce mode d'adressage, la donne utiliser est dans l'oprande.
L'adressage immdiat est identifi par le symbole #.
Exemples
LDX #$6000
ORA #$80
; place
p
la valeur $6000 dans le registre
g
X
; fait un ou logique entre le reg.A et la valeur $80. Rsultat dans A
II.5.2. Mode d'adressage tendu (extended)
Le mode d'adressage tendu utilise l'adresse effective de la donne comme
oprande plutt que la donne elle-mme.
N.B.
Ce mode est utilis pour lire ou crire une donne dans la mmoire ou sur une
entre/sortie.
Exemples
LDA $6000
ANDA $00FF
STA PORTB
; place la valeur contenu l'adresse $6000 dans le reg. A
; fait un et logique entre la valeur contenue l'adresse
$00FF et le reg.A et dpose le rsultat dans le reg. A
; dpose le contenu du reg. A l'adresse correspondante
l'tiquette PORTB
II 5 3 Mode d'adressage
II.5.3.
d adressage inhrent
Ce mode d'adressage se caractrise par le fait qu'il n'utilise pas d'oprandes.
c..d
d
A
Aucun
appell une case mmoire
i nest
t ncessaire
i pour effectuer
ff t
la
l fonction
f ti
demande.
Le CPU sait qque le traitement s'effectue directement sur le(s)
( ) registre(s).
g
()
Exemples
CLRA ;
LSLB
;
RTS
;
SWI
remise zro du reg. A
fait un dcalage logique gauche avec le contenu du reg.B
reg B
excute le retour au prog. principal pour terminer un sous-prog.
(adr. de retour --> reg. PC)
interruption logicielle (appelle un programme dd'interruption)
interruption)
souvent utilis par les prog. moniteurs comme point d'arrt
10
II.5.4. Mode d'adressage direct
L mode
Le
d direct
di t estt trs
t similaire
i il i au mode
d tendu.
t d L'oprande
L' d reprsente
t aussii une adresse,
d
comme le mode tendu; sauf que seul l'octet le moins significatif est dfini.
Rq
Cet octet manquant est remplac par le registre de page direct nomm DP.
DP Pour
former l'adresse effective, le CPU va combiner le registre DP avec l'oprande.
E
Exemples
l
LDA $02 ;
si le reg. DP vaut $60, le reg. A sera charg avec le contenu de
l'adresse effective $6002
II.5.4. Mode dadressage indirect
L'adressage indirect permet de recueillir l'adresse effective dans le contenu de celle
spcifie par l'oprande; on travaille donc avec l'adresse de l'adresse de la donne.
Exemples
LDA [$1000]
STB[,Y]
; les contenus des adresses $1000 et $1001 deviennent l'adresse
effective
ff i de
d la
l donne
d
charger
h
dans
d
le
l registre
i
A
; la valeur du reg. B est dpose l'adresse effective; celle-ci est
forme par le contenu de deux cases mmoires conscutives pointes par
le registre d'index
d index Y; ll'adresse
adresse du pointeur on trouve ll'octet
octet msb de ll'adr.
adr.
eff. tandis qu' l'adresse suivante on trouve l'octet lsb de l'adr. eff.
11
II.5.4. Mode d'adressage index
L mode
Le
d index
i d estt utilis
tili principalement
i i l
t pour la
l manipulation
i l ti de
d tableaux
t bl
ou de
d blocs
bl
mmoire.
p utiliser comme registre
g
d'index les registres
g
X et Y.
N B Avec le MC6809,, on peut
N.B.
Notez que la dimension de ces registres est de 16 bits.
Rq
Le mode index se sert dun ppointeur (g
(gnralement X et Y,, ppossiblement U,S
, et
PC) qui contient l'adresse effective de la donne traiter.
Exemples
STA,X
;
LEAX 1,X ;
LDB 5,Y
,
;
dpose le contenu du reg. A l'adresse contenu dans X
incrmente le pointeur d'index X
le reg.
g B est charg
g avec le contenu de l'adresse effective
qqui
est gale la somme du reg. Y et de l'offset 5. (AE = Y+5 )
12
II.6. Pointeur de pile
L pile
La
il estt une zone de
d stockage
t k
situe
it dans
d
la
l mmoire
i RAM servantt mmoriser
i
temporairement des informations.
N.B.
Rq.
La grance de la pile est ralise par un pointeur de pile,
pile celui-ci ayant pour fonction de
pointer la prochaine case mmoire utilise par la pile durant l'excution d'une
instruction d'empilement.
Dans le 6809, il existe 2 pointeurs de pile:
U -> pointeur de pile de l'usager
y
S -> ppointeur de ppile du systme
II.6.1. Instructions manipulant les piles
On peut installer une pile n'importe o dans la mmoire volatile RAM par les instruction
LDS , LDU , TFR ou EXG. Par exemple, LDS #$0080 dfinit une pile systme l'adresse
$0080.
13
La pile S est gre par un ensemble d'instructions du type:
PSHS qui pousse les donnes dans la pile S.
(ex: PSHS A,X)
PULS qui retire les donnes de la pile S.
(ex: PULS A,X)
JSR ou BSR qqui poussent
p
la valeur du compteur
p
de programme
p g
((PC)) dans la pile
p S
pour sauvegarder l'adresse de retour d'une sous-routine.
RTS qui retire l'adresse de retour d'une sous-routine de la pile S.
N.B.
Rq.
La pile U n'est jamais utilise par le systme lors d'un appel une sous-routine.
Cette fonction est rserve la pile S.
part cette diffrence, les deux pointeurs de pile fonctionnent de la mme faon
que les registres LIFO (last in first out). La donne pousse en dernier doit tre
retire
ti en premier.
i
II.6.2. Mouvement du pointeur de la pile
L'exemple dmontre le mouvement du pointeur de pile S lorsque qu'un appel une
sous-routine survient.
Programme:
ADRESSE
1000
1002
1003
ETIQUETTE
DEBUT
JOB1
MNEMONIQUE
BSR JOB1
SWI
RTS
14
II.6.3. Contenu de la pile:
On voit ici le contenu de la pile avant llappel
appel de la sous routine
routine, pendant la sous routine et
aprs lappel de la sous routine.
ADRESSE
S
S-1
S2
S-2
S-3
AVANT
XX<-- S
XX
XX
XX
PENDANT
XX
02
10 <-- S
XX
APRES
XX <-- S
02
10
XX
II.6.4. Ordres d'empilement
p
et de dpilement
p
L'instruction PSHS et PULS permet de sauver ou de rcuprer un ou plusieurs registres
dans la pile.
E
Exemples
l
Rq.
PSHS A,B,X,Y,U sauve les registres
PULS A,B,X,Y,U rcupre les registres
Le pointeur de pile se dplace vers les adresses basses pour une instruction push et
vers les adresses hautes pour un pull
15