Vous êtes sur la page 1sur 7

Esnard Aurlien

Cours de Microprocesseur

ENSERB Informatique 1re anne

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.

+Vcc

R / W : sens du transfert bus de donnes bidirectionnel 16 bits : D0D15

bus dadresse unidirectionnel 23 bits : A1A23 UDS, LDS : extension dadresse AS : validation dadresse DTACK horloge frquence 10 MHz halt, reset, berr : exceptions IPL0, IPL1, IPL2 : 7 niveaux dinterruptions

68000

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 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.

8 bits 16 bits 32 bits

.B .W .L

220 bits = 1 Mega-octet

1/7

Esnard Aurlien

Cours de Microprocesseur

ENSERB Informatique 1re anne

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 S 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

2 3

physiquement, 9 registres, mais toujours 8 accessibles mnmonique de la norme Motorola 4 1 mot = 16 bits

2/7

Esnard Aurlien

Cours de Microprocesseur

ENSERB Informatique 1re anne

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 ; A1 ! A1 - 2

ENSERB Informatique 1re anne

MOVE.W

-(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 4

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 DC : define constant Dfinition d'une constante au format byte, word, ou long. tiquette DC.W 1000 tiquette,A0

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. BRA

dbut

dbut

les instructions du type : BCC syntaxe : BCC tiquette , avec CC le code dune condition et tiquette une adresse symbolique. 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

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

= >0 <0

On dispose encore de tests plus volus : BF BT BGE BGT BHI BLE BLS BLT TST Cette instruction positionne les indicateurs. TST.W BEQ $2000 never true always true greater or equal greater than high less or equal low or same less than NOP BRA

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. CMP BPL D0,D1 tiquette

; 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

ENSERB Informatique 1re anne

oui

CC

non

Dcrmentation de Dx

oui

Dx = -1

non

Instruction suivante

branchement tiquette

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

pas pas 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