Sie sind auf Seite 1von 31

CHAPITRE 4

Microprocesseur 68000

4-1- Les bus


4-2- Registres internes
4-3- Modes d’adressage
4-4- Jeu d’instruction
4-5- Pile
4-6- Sous programme
4-7- Création d’une zone tampon

1
4-4
Jeu d’instructions

•Opération de transfert
•Opérations arithmétiques
•Opérations Logiques
•Opération de décalage
•Branchement
•Branchement avec décrémentation

2
Opération de transfert
Instruction Taille de l'opérande Opération

MOVE 8, 16, 32 [AEd]  [AEs]

MOVEQ 8 vers 32 bits [Dn]  donnée immédiate

MOVEA 16, 32 vers 32 bits [An]  [AEs]

MOVEM 16, 32 [AEd]  Dn, Rn

MOVEP 16, 32 Voir les manuels

LEA 32 [An]  AEs

PEA 32 [A7]  [A7] - 4


[M([A7])]  AEs.L
EXG 32 Xi  Xj

3
Opérations arithmétiques
Mnemonic Description Operation

ADD Add binary 


(destination)+(source)
destination
ADDA Add address 
(destination)+(source)
destination
ADDI Add immediate (destination)+immediate data 
destination
ADDQ Add quick (destination)+immediate data
destination
ADDX Add extended (destination)+(source)+X 
destination
ABCD Add decimal 
(destination)10+(source)10+X
with extend destination
SUB 
Subtract binary (destination)-(source)
destination
SUBA Subtract 
(destination)-(source)
address destination
SUBI Subtract 
(destination)-immediate data
Immediate destination
4
Opérations arithmétiques
Mnemonic Description Operation

SUBQ Subtract quick (destination)-immediate data destination

SUBX Subtract with extend (destination)-(source)-X destination

MLUS Signed multiply (destination)*(source) destination

MULU Unsigned multiply (destination)*(source) destination

DIVS Signed divide (destination)/(source) destination

DIVU Unsigned divide (destination)/(source) destination

EXT Sign extend (destination) sign extended  destination

NEG Negate 0 - (destination)  destination

NEGX Negate with extend 0 - (destination) – X  destination

5
Opérations logiques
M nem onic Description Operation

EOR Exclusive OR (destination)⊕(source) (destination)


logical
EORI Exclusive OR (destination)⊕immediate data
immediate (destination)
NOT Logical ~(destination) (destination)
complement
OR Or logical (destination) OR (source)
(destination)
ORI Or immediate (destination) OR immediate data
(destination)
AND And logical (destination) AND (source)
(destination)
ANDI And immediate (destination) AND immediate data
(destination)
BCLR Test a bit and clear ~(<bit number>) OF destination  Z
0  ~(<bit number>) OF destination
BSET Test a bit and set ~(<bit number>) OF destination  Z
1  ~(<bit number>) OF destination
6
Opérations de décalage

7
Branchement sans condition

Mnemonic Description Operation

BRA Branch always PC + Displacement  PC

JMP Jump Destination  PC

Déplacement se fait sur 16 bits.

Modes d'adressage pour l’instruction JMP


(An), d16(An), d8(An, Xn.s), adr, d16(PC), d8(PC, Xn.s)

8
Branchement conditionnel
Mnémonique Texte Branchement si Pour les nombres
BCC Branch Carry Clear C=0
BCS Branch Carry Set C=1
BEQ Branch Equal Z=0 (non) signé
BNE Branch Not Equal Z=1 signés
BGE Branch Greater or Equal N=V signés
BGT Branch Greater Than N=V ET Z=0 signés
BHI Branch HIgher than C=0 ET Z=0 non signés
BLE Branch Less or Equal Z=1 OU NV signés
BLS Branch Lower or Same C=1 OU Z=1 non signés
BLT Branch Less Than N=~V signés
BMI Branch Minus N=1 signés
BPL Branch Plus N=0 signés
BVC Branch V Clear V=0
BVS Branch V Set V=1
BRA BRanch Always Sans condition
9
Branchement avec décrémentation

Mnémonique Texte Branch if nombres


DBCC Decrease and Branch Carry Clear C=0
DBCS Decrease and Branch Carry Set C=1
DBEQ Decrease and Branch EQual Z=0 (non) signé
DBNE Decrease and Branch Not Equal Z=1 signés
DBGE Decrease and Branch Greater or Equal N=V signés
DBGT Decrease and Branch Greater Than N=V ET Z=0 signés
DBHI Decrease and Branch HIgher than C=0 ET Z=0 non signés
DBLE Decrease and Branch Less or Equal Z=1 OU NV signés
DBLS Decrease and Branch Lower or Same C=1 OU Z=1 non signés
DBLT Decrease and Branch Less Than N=~V signés
DBMI Decrease and Branch MInus N=1 signés
DBPL Decrease and Branch PLus N=0 signés
DBVC Decrease and Branch V Clear V=0
DBVS Decrease and Branch V Set V=1
DBRA Decrease and BRanch Always -
DBF(DBRA) Decrease and BRanch never terminate -
DBT Decrease and BRanch always terminate -
10
PILE (Empilement 16 bits) 4-5

D0 $12345678

A7 $FFFF02 $FFFF00

MOVE.W D0,-(A7)

xx Pointeur 56
xx Pointeur de pile (A7) 78
de pile (A7)

Pile LIFO (Last in First out)

11
PILE (Dépilement 16 bits) 4-5

D0 $xxxxxxxx $xxxx5678

A7 $FFFF00 $FFFF02

MOVE.W (A7)+,D0

56 Pointeur 56
78 de pile (A7) 78
Pointeur
de pile (A7)

12
PILE (Empilement 32 bits) 4-5

D0 $12345678

A7 $FFFF04 $FFFF00

MOVE.L D0,-(A7)

xx Pointeur 12
xx de pile (A7) 34
xx 56
xx 78
Pointeur
de pile (A7)

13
PILE (Dépilement 32 bits) 4-5

D0 $xxxxxxxx $12345678

A7 $FFFF00 $FFFF04

MOVE.L (A7)+,D0

12 Pointeur 12
34 de pile (A7) 34
56 56
78 78
Pointeur
de pile (A7)

14
PILE (Empilement multiple) 4-5

D0 $12345678 D1 $23456789 D3 $3456789A

A7 $FFFF06 $FFFF00

MOVEM.W D0/D1/D2,-(A7)
xx MOVEM.W D0-D2,-(A7)
xx
xx Pointeur 78
xx de pile (A7) 9A
xx 67
xx 89
xx 56
xx Pointeur 78
de pile (A7)
15
Sous-programme 4-6

BSR
instr1
instr2
PC --> -(A7)
BSR puiss
instr3 PC <-- PC+d

puiss instr1
instr2 PC <-- (A7)+
RTS

Remarquer l’utilisation de la pile pour sauvegarder


l’adresse de retours
16
Sous-programme 4-6

JSR
instr1
instr2
PC --> -(A7)
BSR puiss
instr3 PC <-- puiss

puiss instr1
instr2 PC <-- (A7)+
RTS

17
Exemple 4-6

ORG $1000
1000 2E7C 000F FF00 MOVEA #$00FFF00,A7
1006 223C 1234 5678 MOVE.L #$12345678,D1
100C 303C 0038 MOVE.W #56,D0
1010 4EB9 0000 1018 JSR carre
1016 4E40 TRAP #0
1018 2F01 carre MOVE.L D1,-(A7)
101A 3200 MOVE.W D0,D1
101C C1C1 MULS D1,D0
101E 221F MOVE.L (A7)+,D1
1020 4E75 RTS

18
Exemple (suite) 4-6

ORG $1000
1000 2E7C 000F FF00 MOVEA #000FFF00,A7
1006 223C 1234 5678 MOVE.L #$12345678,D1
100C 303C 0038 MOVE.W #56,D0
1010 4EB9 0000 1018 JSR carre
1016 4E40 TRAP #0

D1 12 34 56 78 FFEF9
FFEFA
D0 00 00 00 38 FFEFB
FFEFC 00 PILE
A7 FFEFD 00
00 0F FF 00 FFEFE 10
A7
FFEFF 16
00 0F FE FC FFF00

PC 00 00 1018 19
Exemple (suite) 4-6

1018 2F01 Carre MOVE.L D1,-(A7)


101A 3200 MOVE.W D0,D1
101C C1C1 MULS D1,D0
101E 221F MOVE.L (A7)+,D1
1020 4E75 RTS

FFEF8 12
D1 12 34 56 78 12 34 00 38 FFEF9 34
FFEFA 56
A7 00 0F FE FC 00 0F FE F8 FFEFB 78
FFEFC 00 PILE
FFEFD 00
D0 00 00 00 38 00 00 0C 40 FFEFE 10
FFEFF 16
A7 00 0F FE F8 FFF00

20
Exemple (suite) 4-6

1018 2F01 Carre MOVE.L D1,-(A7)


101A 3200 MOVE.W D0,D1
101C C1C1 MULS D1,D0
101E 221F MOVE.L (A7)+,D1
1020 4E75 RTS

FFEF8 12
D1 12 34 56 78 12 34 56 78 FFEF9 34
FFEFA 56
A7 00 0F FE FC 00 0F FE F8 FFEFB 78
FFEFC 00 PILE
FFEFD 00
D0 00 00 00 38 00 00 0C 40 FFEFE 10
FFEFF 16
A7 00 0F FE FC FFF00

PC 00 00 10 20 21
Exemple (suite) 4-6
1018 2F01 Carre MOVE.L D1,-(A7)
101A 3200 MOVE.W D0,D1
101C C1C1 MULS D1,D0
101E 221F MOVE.L (A7)+,D1
1020 4E75 RTS

D1 12 34 56 78 12 34 56 78 FFEF8 12
FFEF9 34
A7 00 0F FE FC 00 0F FE F8 FFEFA 56
FFEFB 78
D0 00 00 00 38 00 00 0C 40 FFEFC 00 PILE
FFEFD 00
FFEFE 10
A7 00 0F FE FC 00 0F FF 00 FFEFF 16
FFF00
PC 00 00 10 20 00 00 10 16

•Il faut absolument la parité entre les empilements et les dépilements


22
Création d’une zone tampon 4-7

FFDFE
FFDFF
FFE00
PILE
Pointeur
de Pile
.
. PILE Zone tampon
. libre de taille
$100

FFF00 FFF00
Pointeur
de Pile

23
Création d’une zone tampon 4-7

FFDFE
A7 000F FF00
FFDFF
FFE00 A6 0000 CAFE

LINK A6,-#$100
.
. PILE
.

FFF00
Pointeur
de Pile

24
Création d’une zone tampon 4-7

FFDFE
A7 000F FF00
FFDFF
FFE00 A6 0000 CAFE
.
.
. LINK A6,#-$100
FFEFC 00 PILE
00 A6 000F FEFC
Pointeur
de Pile CA
FE
FFF00

25
Création d’une zone tampon 4-7

FFDFA
A7 000F FF00
FFDFB
FFDFC A6 0000 CAFE
Pointeur $100 Octets
.
de Pile
. Libres
. LINK A6,#-$100
FFEFC 00 PILE
A6 00 A6 000F FEFC
CA A7 000F DFC (=FFEFC-100)
FE
FFF00

26
Récupération de la zone tampon

A6 000F FEFC
FFDFA
FFDFB
A7 00FF DFC
FFDFC
Pointeur $100 Octets
.
de Pile A7
.
UNLK A6
de la zone
.

FFEFC 00 PILE A7 000F FEFC


A6 00
CA
FE
FFF00

27
Récupération de la zone tampon

A6 000F FEFC
FFDFA
FFDFB
A7 00FF DFC
FFDFC
.
.
UNLK A6
.

FFEFC 00 PILE A7 000F FEFC


Pointeur 00
de Pile A7 CA
FE
FFF00

28
Récupération de la zone tampon

A6 000F FEFC
FFDFA
FFDFB
A7 00FF DFC
FFDFC
.
.
UNLK A6
.

FFEFC 00 PILE A7 000F FEFC


00
CA
FE A6 0000 CAFE
FFF00
Pointeur
de Pile A7
A7 000F FF00

29
Application, passage des paramètres 4-7

Deux piles différentes


Exemple : un sous programme qui calcule la somme
des éléments dans un tableau.
On lui envoie l’adresse du tableau et le nombre des éléments.
LINK A6,#-$20 créer un espace de $20 octets
LEA TABLE(PC),A0
MOVE.L A0,-(A6) empiler l’adresse
MOVE.W #TAILLE,-(A6) empiler la taille
JSR Somme
...
...

Somme MOVEM.L ...,-(A7) sauvegarder les reg qui vont changer


MOVE.W (A6)+,D0 récupérer la taille
MOVEA.L (A6)+,A1 récupérer l’adresse du tableau
...
MOVEM.L (A7)+,...
RTS 30
Application, zone de travail 4-7

Moyennant LINK, on peut créer une zone de mémoire


temporaire pour les sous programmes

Exemple:
Subrtn LINK A6,#-12 Create a 12-byte workspace
.
MOVE D3,-8(A6) Accès aux éléments de mémoire via A6
.
.
UNLK A6 récupération de la zone
RTS Retourner au prog principal

31

Das könnte Ihnen auch gefallen