Pl EXOS 1.DOC/fr: Difference between revisions

From Atari Wiki
Jump to navigation Jump to search
m (Added category)
No edit summary
Line 491: Line 491:
 
</pre>
 
</pre>
 
Back to [[ASM_Tutorial]]
 
Back to [[ASM_Tutorial]]
[[Category:Programming]]
+
[[Category: ASSEMBLEUR 68000 sur ATARI ST Part 1 ]]

Revision as of 16:12, 12 October 2011




                         -------------------------
                               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