Vous êtes sur la page 1sur 7

Esnard Aurlien

ENSERB Informatique 1re anne

Cours de Microprocesseur

Cours de Microprocesseur
Prsentation du 68000 de Motorola
Le microprocesseur que nous tudions est le 68000 de Motorola. Bien que dsuet aujourdhui,
larchitecture de ce composant et sa programmation reste une rfrence dans ltude des microprocesseurs.
Le 68000 est un composant lectronique de 64 broches, qui possde un bus de donnes sur 16 bis et un
bus dadressage sur 23 bits, ce qui dtermine une rgion mmoire maximum de 8 Mega-octets1. La frquence de
lhorloge est de 10 Mega-hertz, ce qui correspond un cycle dhorloge de 100 ns. Notons que la plus petite
opration ncessite 4 cycles dhorloge.

R / W : sens du transfert

+Vcc

bus de donnes bidirectionnel 16 bits : D0D15

bus dadresse unidirectionnel 23 bits : A1A23


UDS, LDS : extension dadresse

68000

AS : validation dadresse
DTACK
halt, reset, berr : exceptions

horloge frquence 10 MHz

IPL0, IPL1, IPL2 : 7 niveaux dinterruptions

Ltat du processeur est caractris par les fonctions codes FC0, FC1, FC2. Par ailleurs, on distinguera le mode
utilisateur et superviseur.
Agencement de la mmoire

Types de donnes
bits
bytes
words
long words

8 bits
16 bits
32 bits

.B
.W
.L

Registres internes

8 registres de donnes, 32 bits : D0 D7


Ces registres peuvent tre manipuls soit comme des bytes, soit comme des word, soit comme des long.

220 bits = 1 Mega-octet

1/7

Esnard Aurlien

ENSERB Informatique 1re anne

Cours de Microprocesseur

8 registres dadresses2, 32 bits : A0 A7 et A7 bis


On peut manipuler des adresses longues (long) ou des adresses courtes (word). Notons que les adresses
relles du 68000 sont cods sur 24 bits, par consquent les 8 derniers bits dune adresse longue ne sont pas
significatifs !
Notons galement le rle particulier des deux registres dadresse A7 et A7 bis, encore appel USP (user stack
pointer) et SSP (supervisor stack pointer). SP ou A7 contient ladresse du pointeur de pile relatif au mode
courant, cest--dire utilisateur ou superviseur.

PC ou program counter
Il contient ladresse de la prochaine instruction excuter.

SR ou status register, et CCR ou condition code register


Registre 16 bits : SR au format word (16 bits) ou CCR au format byte (8 bits)
Cest le registre dtat, qui comporte des bits indicateurs ou flags.
T

I2

I1

I0

Bits systmes:
- T : mode trace
- S : mode superviseur
- I2, I1, I0 : masque d'interruptions
Bits utilisateurs (CCR):
- X, N, Z, V, C : indicateurs arithmtiques qui peuvent avoir des sens diffrents selon les oprations
Z
N
C
X
V

zero
negative
carry
extend
pverflows

zro
bit de poids fort ou de signe
retenue
retenue non signe
overflow sign

Pour un move, seul N et Z sont affects mais pas C et V. Pour une opration arithmtique N, Z, C, V sont
affects.

Prsentation du jeu dinstruction


On distingue des instructions de trois sortes : les transferts de donnes (ex. : move3), les oprations arithmtiques
(ex. : add), et les tests / ruptures de squence (ex. : beq).
Un programme est une suite de code machine reprsentant des instructions (selon un codage bien dfini), et
plac en mmoire. Les instructions peuvent avoir des longueurs variables (de un plusieurs mots4). De ce fait,
les adresses de dbut dinstruction sont toujours paires.
Codage des instructions

Move
syntaxes :

MOVE.B
MOVE.W
MOVE.L

source , destination
source , destination
source , destination

physiquement, 9 registres, mais toujours 8 accessibles


mnmonique de la norme Motorola
4
1 mot = 16 bits
3

2/7

Esnard Aurlien

ENSERB Informatique 1re anne

Cours de Microprocesseur

Linstruction MOVE transfert la source vers la destination, en crasant le contenu de cette dernire. Par dfaut, le
format de linstruction MOVE est .W.
Modes dadressage

adressage absolue
Ladresse effective est une constante, le plus souvent crite en hexadcimal comme par exemple $1000.
MOVE.W

$1000 ,$2000

direct des registres : Dx ou Ax


On opre directement sur les registres soit en lecture, soit en criture.
MOVE.B
MOVE.W
MOVE.L
MOVE.L

D0 ,$2000
A0 ,A1
$2000,D0
A1,$2000

immdiat : #constante
La source est la valeur dune constante immdiatement cite dans le code machine. Par dfaut, les
constantes sont dcimales. Les constantes hexadcimales doivent tre prcdes du symbole $ et les
constantes binaires du symbole %.
MOVE.L
MOVE.B

#$12345678,D0
#%11110000,D0

Dans cette dernire instructions, les 24 derniers bits du registres ne sont pas affects.

indirect : (Ax)
Ladresse effective est le contenue du registre dadresse Ax.
MOVE.L
MOVE.W

#$2000,A1
(A1),D0

; MOVE.W

$2000 ,D0

On ne passe pas ladresse directement, mais on donne une rfrence cette adresse.

indirect post-incrment : (Ax)+


Ladresse effective est le contenu de ladresse Ax ; aprs excution de linstruction utilisant ce mode
dadressage, Ax est incrment de 1,2 ou 4 selon le format de linstruction .b, .w, ou .l.
MOVE.L
MOVE.B
MOVE.W

#$2000,A1
(A1)+ ,D1
(A1)+ ,D1

; A1 A1 + 1
; A1 A1 + 2

On rappelle que les adresses doivent toujours tre paires ; attention, donc cette instruction :
MOVE.B

(A1)+,D1

indirect pr-dcrment : - (Ax)


Ladresse effective est le contenu de ladresse Ax dcrmente de 1,2 ou 4 selon le format de linstruction
.b, .w, ou .l.
MOVE.L

#$2000,A1

3/7

Esnard Aurlien

Cours de Microprocesseur

MOVE.W

ENSERB Informatique 1re anne

; A1 A1 - 2

-(A1),D1

Ces deux derniers modes dadressage sont utiles pour le parcours des tableaux dans un sens ou dans lautre.

indirect avec dplacement : d16 (Ax)


A la diffrence du mode dadressage indirect post-incrment ou pr-dcrment, ladressage indirect avec
dplacement ne modifie pas ladresse de base Ax. Ladresse effective est la somme de (Ac) et de d16, un
dplacement signe sur 16 bits compris entre -17784 et +17783.
MOVE.L
MOVE.L

#$2000,A1
3(A1),D0

; AE $2000 + 3

indirect index avec dplacement : d8 (Ax , X)


Ladresse effective est calcule partir de ladresse de base Ax ajout dun dplacement sign sur 8 bits et de
la valeur de lindex X (un registre de donne, un registre dadresse ou le PC). Ladresse de base nest pas
modifi par ce mode dadressage.
MOVE.L
MOVE.L
MOVE.W
MOVE.W

#$2000,A1
#2,D5
0(A1,D5),D0
-1(A1,D5),D1

; AE $2000 + 2 + 0
; AE $2000 + 2 - 1

Donnes mmoires

DS : data store
Rservation d'un espace mmoire.
tiquette

DS.W

Cette instruction rserve 4 2 octets, auquel on pourra faire rfrence avec tiquette.
On rappelle que #tiquette renvoie l'adresse de l'tiquette, tandis que tiquette dsigne son contenu. Ainsi on
aura les deux exemples suivants:
MOVE.L
MOVE.W

#tiquette,A0
tiquette,D0

Il existe toutefois une exception cette rgle pour l'instruction LEA (load effective address) qui charge
l'adresse d'une tiquette immdiatement, comme suit :
LEA.L

tiquette,A0

DC : define constant
Dfinition d'une constante au format byte, word, ou long.
tiquette

DC.W

1000

Instructions de branchement et de branchement conditionnel

JMP : jump
syntaxe :
JMP

JMP AE , avec AE ladresse effective en mode relatif, absolu, ou indirect.


$1000

4/7

Esnard Aurlien

Cours de Microprocesseur

ENSERB Informatique 1re anne

BRA : branch always


syntaxes :

BRA AE , avec AE ladresse effective en mode indirect.


BRA tiquette , avec tiquette qui dsigne une adresse symbolique.

dbut

BRA

dbut

les instructions du type : BCC


syntaxe :

BCC tiquette , avec CC le code dune condition et tiquette une adresse symbolique.

test de V
test de C
test de Z
test de N

V=0
V=1
C=0
C=1
Z=0
Z=1
N=0
N=1

BVC
BVS
BCC
BCS
BEQ
BNE
BPL
BMI

overflow clear
overflow set
carry clear
carry set
not equal
equal
plus
minus

BF
BT
BGE
BGT
BHI
BLE
BLS
BLT

never true
always true
greater or equal
greater than
high
less or equal
low or same
less than

=
>0
<0

On dispose encore de tests plus volus :

NOP
BRA

TST
Cette instruction positionne les indicateurs.
TST.W
BEQ

$2000

Les branchements conditionnels ncessitent un positionnement pralable des flags, ce qui peut tre ralis
automatiquement par certaines instructions. Ex. : ADD, SUB

CMP
L'instruction de comparaison positionne les flags relativement la soustraction de la destination par la
source.
D0,D1
tiquette

CMP
BPL

; branchement si d1 - d0 > 0

les instructions du type : DBCC


Syntaxe :

DBCC

Dx,tiquette

Attention! Le compteur Dx est limit 16 bits pour cette instruction.

5/7

Esnard Aurlien

Cours de Microprocesseur

oui

ENSERB Informatique 1re anne

non

CC

Dcrmentation de Dx

oui

Dx = -1

non

branchement
tiquette

Instruction suivante

Test, dcrmentation et branchement : On sort en passant l'instruction suivante si le compteur se termine


ou si la condition cc est vraie, sinon on effectue le branchement sur l'tiquette.
Cette instruction est particulirement adapte pour raliser des boucles utilisant un compteur. On donne
l'exemple suivant du test des 4 premiers bits du PADR. On sort si un bit est zro, ou si aucun n'est zro.
MOVE.W
repeter BTST.B
DBEQ
CMP.W
BEQ

#3,D1
D1,PADR
D1,repeter
#-1,D1
; test pour savoir comment on est sortit
compteur_puise

Assembleur
On distingue lassembleur et le cross-assembleur. Lassembleur opre directement sur la machine (sur le 68000),
tandis que le cross-assembleur opre sur une autre machine. Nous utiliserons un cross-assembleur, en composant
nos programmes sur les TX, ce qui a lavantage dtre plus souple.
Description du kit
Le kit se compose d'une carte CPU 68010 (10 MgHz) et de la carte manip. comprenant 8 interrupteurs + 8
diodes, 8 afficheurs 7 segments, un clavier hexadcimal, un CAN. En outre, on dispose d'une RAM de
8 128k , et d'une ROM de 8 32k associ au moniteur et permettant d'effectuer des oprations de debugage.
On dispose galement de l'interface // 68230 assurant la liaison avec la carte manip. et ralisant la fonction timer,
d'une interface srie 68564 assurant la liaison avec le TX, et de l'horloge temps rel RTC.
Utilisation du kit
Ouvrir un shell. Commencer par se reconnecter sur le serveur matho et lancer le moniteur au moyen de la
commande tkit &.
A partir d'un diteur, on compose des fichiers assembleur (extension .s) et un fichier de commande (extension
.cmd) dirigeant l'dition de lien.
Pour la compilation, on commence par gnrer les fichiers objets (extension .o) partir des fichiers assembleur
grce la commande : asm68k fichier -l > fichier.l.

6/7

Esnard Aurlien

Cours de Microprocesseur

ENSERB Informatique 1re anne

Puis on effectue l'dition de lien partir du fichier de commande main.cmd par exemple: lnk68k -F S -c
main.cmd -m > main.m.
Si tout se passe bien cett dernire opration fournit le fichier main.x qui est un excutable au format Motorola.
On le charge simplement dans la mmoire du kit au moyen de la commande lkit main.x.
L'excution s'effectue par la commande GO starting_adress sous le moniteur.
Assembleur ligne

instructions
-

pas pas
-

HE : help
DU 1000 1030 : visualiser la zone mmoire entre $1000 et $1030 (dump)
FI 1000 1030 41: remplissage de la zone mmoire avec 41(fill)
TS : time set
DT : display time
OP 1000 : lecture, criture (sous-fonction : = , -, et Q)
USP : user status pointer
SSP : supervisor status pointer
SR : status register
PC = 1000 : modification directe des registres
AS 1000 : assembleur en ligne (sous-fonction : et Q)
DI 1000 1030 : dsassemble le code machine partir de l'adresse $1000 jusqu' $1030

GO 1000 : excution du programme partir de l'adresse $1000


ST : pas pas (step)
RE : affiche tous les registres
DB : display all break points
CB : clear all break points
B0 = $1000 : cration d'un point d'arrt l'adresse $1000
B0 : efface le point d'arrt B0

plantage

Le reset ne rinitialise jamais la mmoire ! Il permet tout au plus d'arrter le programme en cours. Dans le cas
d'une boucle infinie, on peut reprendre la main, au moyen de la commande C-C, puis MCR>ABO.
Programme dassemblage
Les sous-programmes
exemple de la tempo

Carte manip. PIT 68230


Prsentation du PIT 68230
schma
Led

Afficheurs 7 segments

Clavier

Exceptions & Interruptions

7/7