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