Le simulateur 68000

Auteur: Y. Autret


Télécharger le simulateur

 

Retour à la page d'accueil

Ecrit en JAVA, le simulateur 68000 s'installe très facilement. Il suffit de télécharger le fichier sim68.jar et de l'exécuter (double-clic sous Windows, java -jar sim68.jar sous Unix).

Ce simulateur a été développé uniquement pour l'enseignement des principes du langage d'assemblage. Il permet d'utiliser les principales instructions et les principaux modes d'adressage. Lors d'une session il visualise en permanence, les instructions, les registres, la mémoire et la pile.

Utilisation du simulateur

Exemples de programmes (à mettre dans des fichiers terminés par .s)

 

 

 

BOUCLE:

; somme de N premiers entiers

MOVE.L #0,D0

MOVE.L #3,D1

ADD.L D1,D0

SUB.L #1,D1

BNE BOUCLE

RTS

 

 

 

CH:

VAL:

TAB:

; utilisation des données

DATA

DC.B "ESSAI"

DC.L 3

DS.W 2

CODE

LEA CH,A2

MOVE.B #'W',(A2)

MOVE.L VAL,D5

MOVE.W #$11,TAB

RTS

 

Caractéristiques générales du simulateur

Liste des instructions traitées par le simulateur

 

DATA

Directive indiquant le début d'une zone de données

 

CODE

Directive indiquant le début d'une zone de code

 

DC <valeur>

Réservation et initialisation d'un mot mémoire (octet, mot ou mot-long)

 

DC.B "CHAINE"

Réservation et initialisation d'une chaîne de caractères majuscules

 

DS <nombre>

Réservation d'un ensemble de mots mémoire (octets, mots ou mots-longs)

 

MOVE <ea>,<ea>

Adresse source

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

000

Numéro

 

d(An,Xi)

~110

Numéro

An

001

Numéro

 

Abs.W

~111

000

(An)

010

Numéro

 

Abs.L

111

001

(An)+

011

Numéro

 

d(PC)

~111

010

-(An)

100

Numéro

 

d(PC,Xi)

~111

011

d(An)

101

Numéro

 

Imm

111

100

 

MOVE <ea>,<ea>

Adresse destination

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

000

Numéro

 

d(An,Xi)

~110

Numéro

An

001

Numéro

 

Abs.W

~111

000

(An)

010

Numéro

 

Abs.L

111

001

(An)+

011

Numéro

 

d(PC)

-

-

-(An)

100

Numéro

 

d(PC,Xi)

-

-

d(An)

101

Numéro

 

Imm

-

-

 

LEA <ea>,An (utiliser LEA etiquette,An)

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

-

-

 

d(An,Xi)

~110

Numéro

An

-

-

 

Abs.W

~111

000

(An)

~010

Numéro

 

Abs.L

~111

001

(An)+

-

-

 

d(PC)

~111

010

-(An)

-

-

 

d(PC,Xi)

~111

011

d(An)

~101

Numéro

 

Imm

-

-

 

ADD/SUB <ea>,Dn

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

000

Numéro

 

d(An,Xi)

~110

Numéro

An

001

Numéro

 

Abs.W

~111

000

(An)

010

Numéro

 

Abs.L

111

001

(An)+

011

Numéro

 

d(PC)

~111

010

-(An)

100

Numéro

 

d(PC,Xi)

~111

011

d(An)

101

Numéro

 

Imm

111

100

 

ADD/SUB Dn,<ea>

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

-

-

 

d(An,Xi)

~110

Numéro

An

-

-

 

Abs.W

~111

000

(An)

010

Numéro

 

Abs.L

111

001

(An)+

011

Numéro

 

d(PC)

-

-

-(An)

100

Numéro

 

d(PC,Xi)

-

-

d(An)

101

Numéro

 

Imm

-

-

 

ADD <ea>,An

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

000

Numéro

 

d(An,Xi)

~110

Numéro

An

001

Numéro

 

Abs.W

~111

000

(An)

010

Numéro

 

Abs.L

111

001

(An)+

011

Numéro

 

d(PC)

~111

010

-(An)

100

Numéro

 

d(PC,Xi)

~111

011

d(An)

101

Numéro

 

Imm

111

100

 

ADD/SUB #data,<ea>

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

000

Numéro

 

d(An,Xi)

~110

Numéro

An

-

-

 

Abs.W

~111

000

(An)

010

Numéro

 

Abs.L

111

001

(An)+

011

Numéro

 

d(PC)

-

-

-(An)

100

Numéro

 

d(PC,Xi)

-

-

d(An)

101

Numéro

 

Imm

-

-

 

MULS/DIV <ea>,Dn (mode .W uniquement)

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

000

Numéro

 

d(An,Xi)

~110

Numéro

An

-

-

 

Abs.W

~111

000

(An)

010

Numéro

 

Abs.L

111

001

(An)+

011

Numéro

 

d(PC)

~111

010

-(An)

100

Numéro

 

d(PC,Xi)

~111

011

d(An)

101

Numéro

 

Imm

111

100

 

AND/OR <ea>,Dn

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

000

Numéro

 

d(An,Xi)

~110

Numéro

An

-

-

 

Abs.W

~111

000

(An)

010

Numéro

 

Abs.L

111

001

(An)+

011

Numéro

 

d(PC)

~111

010

-(An)

100

Numéro

 

d(PC,Xi)

~111

011

d(An)

101

Numéro

 

Imm

111

100

 

AND/OR Dn,<ea>

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

-

-

 

d(An,Xi)

~110

Numéro

An

-

-

 

Abs.W

~111

000

(An)

010

Numéro

 

Abs.L

111

001

(An)+

011

Numéro

 

d(PC)

-

-

-(An)

100

Numéro

 

d(PC,Xi)

-

-

d(An)

101

Numéro

 

Imm

-

-

 

AND/OR #data,<ea>

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

000

Numéro

 

d(An,Xi)

~110

Numéro

An

-

-

 

Abs.W

~111

000

(An)

010

Numéro

 

Abs.L

111

001

(An)+

011

Numéro

 

d(PC)

-

-

-(An)

100

Numéro

 

d(PC,Xi)

-

-

d(An)

101

Numéro

 

Imm

-

-


EOR Dn,<ea>

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

000

Numéro

 

d(An,Xi)

~110

Numéro

An

-

-

 

Abs.W

~111

000

(An)

010

Numéro

 

Abs.L

111

001

(An)+

011

Numéro

 

d(PC)

-

-

-(An)

100

Numéro

 

d(PC,Xi)

-

-

d(An)

101

Numéro

 

Imm

-

-

 

EOR #data,<ea>

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

000

Numéro

 

d(An,Xi)

~110

Numéro

An

-

-

 

Abs.W

~111

000

(An)

010

Numéro

 

Abs.L

111

001

(An)+

011

Numéro

 

d(PC)

-

-

-(An)

100

Numéro

 

d(PC,Xi)

-

-

d(An)

101

Numéro

 

Imm

-

-

 

ASL/ASR/LSL/LSR Dx,Dy

 

ASL/ASR/LSL/LSR #data,Dy (voir pb data=8)

 

CMP <ea>,Dn

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

000

Numéro

 

d(An,Xi)

~110

Numéro

An

001

Numéro

 

Abs.W

~111

000

(An)

010

Numéro

 

Abs.L

111

001

(An)+

011

Numéro

 

d(PC)

~111

010

-(An)

100

Numéro

 

d(PC,Xi)

~111

011

d(An)

101

Numéro

 

Imm

111

100

 

CMP <ea>,An

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

000

Numéro

 

d(An,Xi)

~110

Numéro

An

001

Numéro

 

Abs.W

~111

000

(An)

010

Numéro

 

Abs.L

111

001

(An)+

011

Numéro

 

d(PC)

~111

010

-(An)

100

Numéro

 

d(PC,Xi)

~111

011

d(An)

101

Numéro

 

Imm

111

100

 

 

CMP #data,<ea>

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

000

Numéro

 

d(An,Xi)

~110

Numéro

An

-

-

 

Abs.W

~111

000

(An)

010

Numéro

 

Abs.L

111

001

(An)+

011

Numéro

 

d(PC)

-

-

-(An)

100

Numéro

 

d(PC,Xi)

-

-

d(An)

101

Numéro

 

Imm

-

-

 

BRA/BEQ/BNE/BGT/BGE/BLT/BLE

 

JSR (utiliser JSR etiquette)

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

-

-

 

d(An,Xi)

~110

Numéro

An

-

-

 

Abs.W

~111

000

(An)

~010

Numéro

 

Abs.L

~111

001

(An)+

-

-

 

d(PC)

~111

010

-(An)

-

-

 

d(PC,Xi)

~111

011

d(An)

~101

Numéro

 

Imm

-

-

 

RTS

 

 LINK A6,#data

UNLK A6

 

JMP

Mode d'adressage

Mode

Registre

 

Mode d'adressage

Mode

Registre

Dn

-

-

 

d(An,Xi)

~110

Numéro

An

-

-

 

Abs.W

~111

000

(An)

010

Numéro

 

Abs.L

~111

001

(An)+

-

-

 

d(PC)

~111

010

-(An)

-

-

 

d(PC,Xi)

~111

011

d(An)

~101

Numéro

 

Imm

-

-

 

Exemple de programme: (l'exécution commence à la première instruction de la zone code)

Fichier test.s

data

x:

dc.l

21

; initialisation d'un mot de 32 bits

str:

dc.b

"chaine"

; initialisation d'une chaîne

tab:

ds.w

4

; réservation de 4 mots de 16 bits

y:

dc.w

$1234

code

move.l

x,d0

add.l

#2,d0

lea

Str,a0

move.b

#'x',(a0)

lea

tab,a1

move.w

#$abcd,(a1)

rts