Solution TD 3
EXO1:
INSTRUCTION MODE ADRESSAGE ET CODE EXPLICATION DU INSTRUCTION
MACHINE
1-LDB #$02 ADRESSAGE IMMEDIAT Charger l’accumulateur A avec
OP: $C602 la valeur $02
2-LDY $4000 ADRESSAGE ETENDU Charger le registre Y avec la
OP : $10BE4000 valeur qui se trouve dans
l’adresse $4000 ET $4001
3-LDX # $1000 ADRESSAGE IMMEDIAT Charger le registre X avec la
OP : $8E 1000 valeur $1000
4-CMPA # $08 ADRESSAGE IMMEDIAT Faite une comparaison entre le
OP : $8180 contenu de l’accumulateur A et
la valeur $80
5-ADDD $2000 ADRESSAGE ETENDU Additionner le contenu de
OP : $F32000 l’accumulateur D avec la valeur
qui se trouve dans l’adresse
$2000 et $2001
6-ROLA ADRESSAGE HENERENT OU Rotation à gauche du contenu
IMPLICITE de l’accumulateur A
OP : $49
7-SUBA > $2000 ADRESSAGE ETENDU Soustraction du contenu de A
OP : $B02000 avec le contenu de la case
$2000
8-LDA [$8010] ADRESSAGE ETENDU Charger l’accumulateur A avec
INDIRECT la valeur qui se trouve dans
OP : $B6F98010 l’adresse donner par l’adresse
$8010 et $8011
9-LBPL etiq ADRESSAGE RELATIF LONG Branchement si positif
OP : $102A
10-INC < $44 ADRESSAGE DIRECT Incrémenter la case mémoire
OP : $0C44 $DP44
EXO2:
INSTUCTION CODE MACHINE EXPLICATION DU INSTRUCTION
1-LDA .X $A684 Charger l’accumulateur A avec
le contenu de l’adresse donne
par X+0
2-LDA. X++ $A681 Charger l’accumulateur A avec
le contenu de l’adresse donne
par X et incrémenter X par 2
3-LDA B .X $A685 Charger l’accumulateur A avec
le contenu de l’adresse X+B
4-LDA [.X] $A694 Charger l’accumulateur A avec
le contenu de l’adresse donner
par l’adresse X et X+1
5- LDY, - - X $10AE83 Charger le registre Y avec la
valeur qui se trouve dans
l’adresse X et X+1 et
décrémenter X par - 2
6- LDY $65, U $10AEC865 Charger le registre Y avec la
valeur qui se trouve dans
l’adresse U+$65 et U+$66
7- LDA $8040, X $A6898040 Charger A avec le contenu de
l’adresse X+$8040
8-LDA $45, S $A6E845 Charger A avec le contenu de
l’adresse S+$45
9-ADDB -3, Y $EB3D Additionner le contenu de B
avec la valeur qui se trouve
dans l’adresse Y-3
10-ADDA [, U++] $ABD1 Additionner le contenu de
l’accumulateur A avec le
contenu de l’adresse donner
par l’adresse U et U+1 ET
incrémenter U par 2
11-LEAY D, X $318B Charger le registre Y avec la
valeur X+D
12-LDU [D, Y] $EEBB Charger le registre U avec la
valeur qui se trouve dans
l’adresse donner par l’adresse
Y+D et Y+D+1
EXO3 :
1- Les directives ORG : Début : du programme END : fin du programme
2-
Adresses Code objet OP Mnémoniques
$FC00 $86NB LDA # $NB
$FC02 $8401 ANDA # $01
$FC04 $2707 BEQ ETIQ1
$FC06 $C6NB LDB # $NB
$FC08 $F700O2 STB $0002
$FC0B $2005 BRA ETIQ2
$FCOD $C6NB LDB #$NB
$FC0F $F70001 STB $0001
$FC12 $3F END
3-Ce programme teste l’octet $NB S’il est pair il le stocke à l’adresse mémoire $0001 dans le cas
contraire il le stocke à l’adresse $0002
Le calcul du déplacement :
$FC0D - $FC06 =$07 $FC12-$FC0D= $05
EXO4 :
1-Remplissage du tableau :
Adresse Code objet Mnémoniques Nombre de cycles
$FC00 $CC0110 LDD # $0110 3
$FC03 $4A DECA 2
$FC04 $26FD BNE ETIQ1 2
$FC06 $5A DECB 2
$FC07 $26FD BNE ETIQ2 3
$FC09 $3F END -
Calcule du déplacement : $FC03- $FC06=$FD $FC06 - $FC09=$FD
2-Le temps nécessaire à l’exécution de ce programme :
Temps nécessaire = Nombre de cycle /fréquence
Nombre de cycle =3+2+3+2*16+3*16=88
Tc=88/2*106 =44µs
D=0000 0001 0001 0000
DECB: $10 $0F $E $D $C $B $A ………………………. $00 décrémenter 16 fois
3-Ce programme faite la remise a zéro du l’accumulateur D