Pl EXOS 1.DOC
Jump to navigation
Jump to search
-------------------------
EXERCICES I
-------------------------
- Les solutions aux exercices propos‚s dans ce fichier sont pr‚sents
dans le fichier : CORRIG_1.DOC
------------
Il vous suffit de noter le nr° de l'exercice dont vous voulez savoir
la solution.
------------------
nr° 1:
------
Trouvez l'erreur (facile...)
text
ab move.b #345,d0
add.b #1,d0
jmp ab
end
nr° 2:
------
Que contiendra le registre de donn‚e d3 ?
text
move.l #12,d3
add.l #4,d3
add.l d3,d3
move.l var,d2
add.l d2,d3
data ;segment data
var dc.l 458
end
nr° 3:
------
Que contiendra le registre d5 ?
text
move ici,d4
add #5,d4
move d4,la
add ici,la
move la,d5
data
ici dc.w 10
bss
la ds.w 1
end
nr°4:
-----
Trouvez la valeur de a4 Ã la fin du prg en sachant que le label 'ad' est
situ‚ à une adresse ‚gale à $ff0 et qu'il pointe (dc.l) le nombre 45
Trouver la valeur de d5:
text
move.l #ad,a4
move.l ad,d5
data
ad dc.l 45 ; on suppose qu'ici PC=$ff0
end
nr°5:
-----
Trouver la valeur de d5 et de a5 Ã la suite de ce prg.
text
move #15,d5
move.l #zz,a5
move.w zz,d5
data
zz dc.w 0
end
- Je vais maintenant utiliser l'instruction d'op‚ration de controle
'DBF' qui permet l'execution d'une boucle et dont la syntaxe est:
'DBF Dn,boucle'. Cette instruction utilise un registre de donn‚e
Dn et un Label destination. A chaque appel, Dn est d‚cr‚ment‚ d'1
unit‚, si Dn vaut -1, le prg continue aprŠs l'instruction qui suit
'DBF' sinon l'instruction oppŠre un saut à l'adresse Destination.
exemple:
--------
text
move.b #1,d3 ;d3=1 au d‚part
move.w #99,d0 ;nb de boucles -1 (car on va jusqu'Ã -1 !)
tgv add.b #1,d3 ;on ajoute 1 Ã d3 jusqu'Ã ce que d0=-1, soit
dbf d0,tgv ;100 fois de suite
move.b d3,var ;puis on met d3.b (=101) dans var
;NB: d0 vaut -1 ...
bss
var ds.b 1
end
nr°6:
-----
Trouvez la valeur contenue à l'adresse out, la valeur de d0 et d5 Ã
la fin de ce programme.
text
move #247,d0
move #3,d5
bbb add #8,d0
move d0,out
dbf d5,bbb
bss
out ds.b 2
end
nr°7:
-----
Trouver la valeur BINAIRE du registre de donn‚e d1 à la fin de ce prg .
NB:5438=%0001010100111110
text
move #5391,d0
add #47,d0
move d0,dix
move.b in,d1
bss
dix ds.b 1
in ds.w 47
data
nul dc.w 5438
end
nr°8:
-----
que va-t-il se passer en 'gag' ?
text
move.l #gag,a2
gag move.b #100,d1
jmp (a2)
end
nr°9:
-----
Quelle sera la valeur de d3 aprÅ s ce prg ?
text
move.b #12,lab
move.b #14,lac
move.b #15,lad
move.l #lab,a3
move.b #1,d1
fff move.b (a3)+,d3
dbf d1,fff
add.b (a3),-(a3)
move.b -(a3),d3
add.b (a3),d3
bss
lab ds.w 1
lac ds.b 1
lad ds.w 5
end
nr°10:
------
Quelles seront les valeurs de d0,d1,d2,d3,a0 aprÅ s ce prg ?
text
move.b #10,a
move.b #11,b
move.b #12,c
move.b #13,d
move.b #98,e
move.l #deb,a0
move.b (a0)+,d0
move.b (a0)+,d1
move.b (a0)+,d2
move.b (a0),d3
move.b -(a0),d4
bss
deb ds.b 1
a ds.b 1
b ds.b 1
c ds.b 1
d ds.b 1
e ds.b 1
f ds.l 4
end
nr°11:
------
Trouvez la valeur de a4 et d0,d1 aprÅ s ce prg.
text
move.b #3,d0
move.l #pil,a4
rrr move.b -(a4),d1
add.b #4,d1
dbf d0,rrr
data
dc.b 1,2,3,4,5,6,7,8,9
pil dc.w 245
end
nr°12:
------
Trouver ce qu'il y a en 'out' et la valeur de d2.
text
a equ 3
b equ 5
move.b a,d2
add.b b,d2
move.l #g,a5
move.b d2,(a5)
move.b d2,-(a5)
move.b (a5)+,d2
move.b (a5),d2
bss
out ds.b 1
g ds.b 4
end
nr°13:
------
Trouvez la valeur de d1,d2,d3,d4 et a0.
text
move.l #out,a0
move.w #2,d3
move.w (a0),d1
move.w -4(a0),d2
move.w -4(a0,d3),d3
move.w -(a0),d4
data
dc.l 1
dc.w 12
dc.w 2356
out dc.b 15
end
nr°14:
------
Quelles sont les diff‚rentes valeurs prises par a0 au cours de ce prg ?
Quelle est la valeur finale contenue en 'res' ?
text
move.l #a,a5
move.l #2,d2
ttt move.b #1,(a5)+
dbf d2,ttt
move.b #5,(a5)
move.l #vec,a1
move.b #3,d0
move.b #0,d2
cde move.l 0(a1,d2),a0
add.l #4,d2
move.b (a0),res
dbf d0,cde
data
vec dc.l a,b,c,d
bss
a ds.b 1
b ds.b 1
c ds.b 1
d ds.b 1
res ds.b 1
end
nr°15:
------
Trouvez la valeur point‚e par ret, à la fin de ce prg.
text
move.l #5,a
move.l #a,a0
move.l (a0)+,d2
move.l d2,ret
bss
a ds.l 2
ret ds.l 1
end
n°16:
-----
Trouvez la valeur de d0 et a0 aprÅ s ce prg.
text
move.b #3,d1
move.b #a,a0
mno move.b 1(a0,d1),d0
add.b #14,d0
add.b a,d0
dbf d1,mno
data
a dc.b 0,5,6,7,8,9
end
nr°17:
------
Trouvez la valeur de d3 aprÅ s ce prg.
text
move.l #a,a0
move.b #5,(a0)+
move.b #6,(a0)+
move.b -(a0),d2
move.l #a,a0
move.b 1(a0),d3
add.b d2,d3
bss
a ds.w 1
ds.b 1
end
nr°18:
------
Trouvez ce qui se passe en 'stp', que contient 'res' ?
text
move.w #5,d3
add.b #6,d2
add.b d2,d3
move.l #ad,a0
stp jmp 10(a0)
ad move.l #5,res
move.b d3,res
bss
res ds.b 1
end
nr°19:
------
Maintenant quelques petites questions à r‚ponses rapides:
a) Si j'‚cris 'MOVE.W #0,d0', que se passera-t-il au niveau du CCR ?
Et si j'‚cris ensuite 'ADD.W #-2,d0' ?
b) Peut-on placer un OCTET Ã une adresse impaire ?
c) Par combien de chiffres est cod‚ un L-M en HEXADECIMAL ?
d) Peut-on se servir du PC pour y ranger un chiffre comme avec un registre
de donn‚e ou d'adresse ? (Je vous rappelle que c'est un registre).
Si oui comment ?
e) La directive 'END' met fin au programme et permet le retour au DESKTOP,
Vrai ou Faux ? Argumentez.
f) Une macro instruction est un sous-programme appell‚ par le Linker Ã
chaque fois qu'il rencontre son nom dans le code objet.
Vrai ou Faux ? Expliquez.
g) On peut utiliser n'importe quel mode d'adressage pour les op‚randes des
instructions du 68000.
Vrai ou Faux ?
-----------------
Quand vous en aurez fini avec ces exercices, regardez bien les corrig‚s
dans le fichier CORRIG_1.DOC puis revenez aux cours.
Bonne chance! ------------
PIECHOCKI Laurent
8,impasse Bellevue
57980 TENTELING
Back to ASM_Tutorial