Vous êtes sur la page 1sur 15

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