MICROPROCESSEUR ET LANGAGE ASSEMBLEUR 68000
P.J.P. Lycée Dorian : 21/09/2004 @ 23:25 TD n°2 : Premiers Pas en assembleur page 1 / 3
TD N°2 – PREMIERS PAS EN ASSEMBLEUR
Objectif : Comprendre le fonctionnement du microprocesseur 68000, les instructions assembleur, les modes
d’adressages.
PREMIÈRE PARTIE.
Q 1. Commentez le déroulement des instructions suivantes en complétant les champs
libres correspondant au contenu des registres de données ou d’adresse, au contenu
de l’espace mémoire et à l’état des indicateurs N, Z, V, C du registre d’état.
*Instructions
ORG $0
DC.L $7FFF * Stack pointer value after a reset
DC.L START * Program counter value after a reset
ORG $5000
START nop Registre Espace mémoire indicateurs d’état
NZVC
movea #$9000,a1 a1=
movea.L #$9000,a2 a2=
move.L #$87654321,d1 d1=
add.w #$F111,d1 d1=
move d1,$01B000 ($01B000)=
move.L #$87654321,d1 d1=
move #$F111,d2 d2=
move d2,$01B000 ($01B000)=
add d1,$01B000 ($01B000)=
move.L #$5AB23FE4,d1 d1=
neg.B d1 d1=
move.L #$5AB23FE4,d1 d1=
neg.W d1 d1=
move.L #$5AB23FE4,d1 d1=
neg.L d1 d1=
move.L #$5AB23FE4,d1 d1=
move.L d1,$01B000 ($01B000)=
neg.B $01B000 ($01B000)=
move.L #$5AB23FE4,d1 d1=
move.L d1,$01B000 ($01B000)=
neg.W $01B000 ($01B000)=
move.L #$5AB23FE4,d1 d1=
move.L d1,$01B000 ($01B000)=
neg.L $01B000 ($01B000)=
MICROPROCESSEUR ET LANGAGE ASSEMBLEUR 68000
P.J.P. Lycée Dorian : 21/09/2004 @ 23:25 TD n°2 : Premiers Pas en assembleur page 2 / 3
Q 2. Indiquez le contenu des registres ou de la mémoire de façon à expliquer
l'exécution des instructions ci-dessous.
Registre de données Contenu mémoire
move.L #$34C10002,d1 d1=
move.L d1,$01B000 ($01B000)=
move.L #$FFFFFFFF,d1 d1=
move.L d1,$01B004 ($01B004)=
move.W $01B002,d0 d0=
muls $01B000,d0 d0=
move.L d0,$01B004 ($01B004)=
DEUXIÈME PARTIE.
Q 3. Indiquez la validité des instructions ci-dessous, le contenu de l’espace mémoire et
l’état des registres associés à ces instructions.
Conditions initiales : a0=$01B004 et ($01B0000)=$2C34, ($01B0002)=$FE36, ($01B004)=$59DC
ORG $0
DC.L $7FFF * Stack pointer value after a reset
DC.L START * Program counter value after a reset
ORG $5000
START nop
Instruction valide registre ($01B000)
movea.L #$01B002,a0 OUI a0=$0001B002 XXXXXXXXXXXX move.W
#$FE36,(a0)OUI a0=$0001B002 XX XX FE 36 XX XX move.W
#$2C34,-2(a0) OUI a0=$0001B002 2C 34 FE 36 XX XX move.W
#$59DC,2(a0) OUI a0=$0001B002 2C 34 FE 36 59 DC
neg.w a0
movea.L #$01B004,a0 OUI a0=
neg.B -(a0) a0=
neg.W -(a0) a0=
movea.L #$01B004,a0 OUI a0=
neg.W -(a0) a0=
movea.L #$01B004,a0 OUI a0=
neg.B -(a0) a0=
movea.L #$01B004,a0 OUI a0=
neg.W -1(a0) a0=
MICROPROCESSEUR ET LANGAGE ASSEMBLEUR 68000
P.J.P. Lycée Dorian : 21/09/2004 @ 23:25 TD n°2 : Premiers Pas en assembleur page 3 / 3
Q 4. Indiquez la validité de l’instruction et l'adresse effective de la donnée sachant que
a0=$01B000 et d2=$00000010.
Instruction valide Adresse effective
neg.L $8000 OUI $8000
neg $7001
neg.W $4(a0) $01B000 + $4 => $01B004
neg.W $f60(a0)
neg.B 10(a0,d2)
neg.W $2D0(a0,d2)
Q 5. Pour chacune des instructions suivantes du 68000, donnez :
Ø le type d'adressage (source, destination)
Ø le résultat
Ø l'état des drapeaux après l'exécution
Ø les anomalies éventuelles
Instructions conditions initiales
move.W #$9000,a1
move.L #$9000,a2
lea $8000,a5
move.W #$7000,a4
move.B d0,(a0) d0 = $87654321
a0 = $01B000
move d0,(a0)+ idem
move.L d0,(a0)+ idem
move.B (a0),$100(a0) a0 = $01B000
($01B000) = 00
move.B (a0),3(a0,d0) idem
d0 = $02
clr $100(a0,d0) idem
clr 3(a0,d0) idem
asl.B #3,d0 d0 = $12345678
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !