Telechargé par demnatidata

Elements correction TD3 2005

publicité
Eléments de correction du TD3
INGE3/Prépa Master 2005
TD N°3 – Assembleur Avancé
Exercice n°1 : Stocker la valeur $E7 (sur un octet) dans la mémoire à partir de l’adresse
$2500 ; longueur de la table 32 octets.
ORG
DC.L
DC.L
ORG
DS.L
ORG
LEA
MOVE.L
Boucle MOVE.B
SUB
BNE
Fini
BRA
Start
$0
$8000
Start
$2500
32
* Stack pointer value after a reset
* Program counter value after a reset
$1000
$2500,A0
#32,D0
#$E7,(A0)+
#1,D0
Boucle
Fini
Exercice n°2 : Recherche de l’octet $FA dans la table commençant à l’adresse $F0000 de 32
octets.
9 Si l’octet est trouvé, on enregistre $FF à l’adresse $2500 et son adresse en $2510
9 Sinon on enregistre 0 en $2500.
ORG
DC.L
DC.L
$0
$8000
Start
ORG
DS.B
ORG
DS.L
ORG
DC.B
DC.B
DC.B
DC.B
$2500
1
$2510
1
$0F0000
* Adresse de la table
$5a,$b2,$3f,$e4,$5a,$b2,$3f,$e4
$2b,$c2,$7c,$d4,$5a,$b2,$3f,$e4
$fa,$bb,$8a,$e1,$5a,$b2,$3f,$e4
$2b,$c2,$7c,$d4,$5a,$b2,$3f,$e4
ORG
Start
CLR.B
LEA
MOVE.L
Encore MOVE.B
CMP.B
DBEQ
BNE
MOVE.B
SUB.L
MOVE.L
Fin
BRA
http://francomme.fr.fm
* Stack pointer value after a reset
* Program counter value after a reset
$1000
$2500
$F0000,A0
#$1F,D0
(A0)+,D1
#$FA,D1
D0,Encore
fin
#$ff,$2500
#1,A0
A0,$2510
Fin
1/3
Eléments de correction du TD3
INGE3/Prépa Master 2005
Exercice n°3 : Comparaison de deux tables de données débutant en mémoire aux adresses
$2500 et $2510.
Quand deux octets différents sont trouvés, on range leur adresse respective en mémoire aux
adresses $2520 et $2530.
Start
Suite
Fin
ORG
DC.L
DC.L
ORG
DC.B
ORG
DC.B
ORG
DS.L
ORG
DS.L
$0
$8000
* Stack pointer value after a reset
Start
* Program counter value after a reset
$2500
$aa,$bb,$cc,$25,$5b,$7f,$45,$9f,$6d,$40,$3b
$2510
$aa,$bb,$cc,$25,$5b,$7f,$45,$9f,$6d,$41,$3b
$2520
1
$2530
1
ORG
LEA
LEA
CMPM.B
BEQ
SUB.L
SUB.L
MOVE.L
MOVE.L
BRA
$1000
$2500,A0
$2510,A1
(A0)+,(A1)+
Suite
#1,A0
#1,A1
A0,$2520
A1,$2530
Fin
http://francomme.fr.fm
2/3
Eléments de correction du TD3
INGE3/Prépa Master 2005
Exercice n°4 : Effectuer la somme de 10 octets stockés en mémoire à partir de l’adresse
$2400 et stocker le résultat sur 16 bits en $2410
ORG
DC.L
DC.L
$0
$8000
Start
ORG
DC.B
DC.B
ORG
DS.W
$2400
01,02,03,04,05
06,128,64,64,1
$2410
1
ORG
Start
CLR.L
CLR.L
MOVE.L
LEA
Encore MOVE.B
ADD.W
DBRA
MOVE.W
Fin
BRA
* Stack pointer value after a reset
* Program counter value after a reset
$1000
D0
D1
#9,D2
$2400,A0
(A0)+,D1
D1,D0
D2,Encore
D0,$2410
Fin
N’oubliez pas de créer des labels dans toux ces
programmes afin de rendre la lecture plus explicite.
http://francomme.fr.fm
3/3
Téléchargement