Pl COURS.DOC/fr

From Atari Wiki
Jump to navigation Jump to search

... suite sur les modes d'adressage


7) L'adressage RELATIF AU PC AVEC DEPLACEMENT:    (sh‚matis‚  d(pc) )
   -------------------------------------------

  Il s'‚crit:
  -----------    +---------------------------------------+
                 | Instruction         d(pc),destination |
                 +---------------------------------------+

  Et se lit:
  ----------
  On ajoute la valeur du d‚placement sign‚ 'd' cod‚ sur un MOT au PC ( de
  l'instruction considérée !) , on prend la donn‚e ainsi point‚e et on la
  pose dans ( à ) l'op‚rande destination.

   d(pc)= d+pc

  Exemple:  J'utilise l'instruction 'JMP destination' , qui opŠre un saut
  --------  du prg à l'adresse 'destination' en chargeant la valeur du PC
            avec la valeur de 'destination'.
            (JMP comme JuMP=saut en Anglais)

    si j'‚cris:                        JMP  10(pc)

    Avant l'ex‚cution de l'instruction JMP, le PC pointe sur l'adresse de
    cette instruction (JMP  10(pc) )

Ecrire JMP  10(pc), provoque un saut de 10 Octets aprŠs l'adresse point‚e
par le PC qui pointe cette instruction (soit JMP 10(pc) ), si à l'adresse
PC+10 on a un Label ( 'A' ) par exemple, l'instruction JMP  10(pc) provo-
que un saut (en ajoutant 10 à PC) à ce Label.
(Il peut bien sur y avoir d'autres instructions ou autre chose, tout 
d‚pend de votre listing...)


     exemple:
     --------

                  Labels      instructions du prg

                               .
                               .
  ici, PC=$AF00        X      JMP  10(pc)        ,il y a saut en PC+10
                               .
                               .
                               .
  ici, PC=$AF10        A       ............      ,on continue en $AF10
                               .
                               .


Il faut donc tenir compte de la taille de l'instruction JMP d(pc) pour le
d‚placement car le PC pr‚c‚dant l'instruction consid‚r‚e intervient.
En effet, la taille des instructions en m‚moire varie selon le mode d'ad-
ressage utilis‚, à la fin de ce chapitre sur les modes d'adressage, je do-
nnerais la taille et la repr‚sentation des modes d'adressage en m‚moire.
Donc le d‚placement r‚el, c'est le d‚placement r‚el + la taille de l'ins-
truction et de ses op‚randes.



8) L'adressage RELATIF AU PC AVEC INDEX ET DEPLACEMENT: ( d(pc,rn) )
   ----------------------------------------------------

  Il s'‚crit:
  -----------    +---------------------------------------+
                 | Instruction      d(pc,rn),destination |
                 +---------------------------------------+

  Et se lit:
  ----------
 On ajoute la valeur du d‚placement sign‚ 'd' cod‚ sur un MOT et celle du
 registre 'rn' au PC (de l'instruction consid‚r‚e !) , on prend la donn‚e
 ainsi point‚e et on la pose dans ( à ) l'op‚rande destination

 d(pc,rn)= d+an+pc   OU   d(pc,rn)= d+dn,pc


   Ce mode d'adressage est donc identique au pr‚c‚dent, sauf qu'ici on
   ajoute le d‚placement et le contenu du registre 'rn' au PC qui pr‚cŠde
   l'instruction consid‚r‚e.

   Si 'rn' est un MOT (.W) , le MOT de poids faible du registre 'rn'
   intervient lors de l'op‚ration.

   Si 'rn' est un L-M  (.L) , le registre index 'rn' est utils‚ en entier.



9) L'adressage ABSOLU LONG:   (sh‚matis‚ BBBB )
   ------------------------

   Il s'‚crit:
   -----------
                +-----------------------------------+
                | Instruction        source,Adresse |
                +-----------------------------------+
                                OU
                                --
                +-----------------------------------+
                | Instruction   Adresse,destination |
                +-----------------------------------+


   Et se lit:
   ----------
   On pose l'op‚rande source dans ( à ) l'adresse indiqu‚e par l'op‚rande
   destination.
                                OU
                                --


   Exemple:              MOVE   labas,d0
   --------              .
                         .
                         .
                         DATA

                labas    DC.W   12            en 'labas' on trouve un
                                              MOT=12


     le registre de donn‚e d0 contiendra 12.


   autre exp:            MOVE     D0,$AFFB48   si $AFFB48 est dans un
   ----------                                  segment DATA ( d‚tails
                                               bientot )

   On pose le not de poids faible de d0 à l'adresse $AFFB48



10) L'adressage ABSOLU COURT:   (sh‚matis‚ BB )
    -------------------------

   Il s'‚crit:
   -----------
                +-----------------------------------+
                | Instruction        source,Adresse |
                +-----------------------------------+
                                OU
                                --
                +-----------------------------------+
                | Instruction   Adresse,destination |
                +-----------------------------------+


   Et se lit:
   ----------
   On pose l'op‚rande source dans ( à ) l'adresse indiqu‚e par l'op‚rande
   destination.
                                OU
                                --
   On prend la donn‚e point‚e par l'op‚rande 'Adresse' et on la pose dans
   ( à ) l'op‚rande destination.

   Mode d'adressage identique au mode pr‚c‚dent, mais ici la valeur de 
   l'adresse doit pouvoir Štre contenue dans un MOT.





     REPRESENTATION INTERNE DES MODES D'ADRESSAGE ET MOTS D'EXTENSION:
     -----------------------------------------------------------------

   A chaque mode d'adressage sont rattach‚s 0,1 ou 2 MOTS D'EXTENSION,
   ceci peut avoir une importance pour la repr‚sentation (taille) des
   diff‚rents modes d'adressage en m‚moire: 
   (cf le mode d(pc) ou d(pc,rn) )


           +-------------------------+---------------------+
           |         MODES           |    NOMBRE DE MOTS   |
           |      D'ADRESSAGE        |      D'EXTENSION    |
           +-------------------------+---------------------+
           |         BBBB            |          2          |
           +-------------------------+---------------------+
           |          BB             |          1          |
           +-------------------------+---------------------+
           |        #...             |   1 si .B ou .W     |
           |                         |      2 si  .L       |
           +-------------------------+---------------------+
           |         (an)            |          0          |
           +-------------------------+---------------------+
           |         (an)+           |          0          |
           +-------------------------+---------------------+
           |        -(an)            |          0          |
           +-------------------------+---------------------+
           |        d(an)            |          1          |
           +-------------------------+---------------------+
           |        d(an,rn)         |          1          |
           +-------------------------+---------------------+
           |        d(pc)            |          1          |
           +-------------------------+---------------------+
           |        d(pc,rn)         |          1          |
           +-------------------------+---------------------+

 -   Notez que la taille des op‚randes (si il y en a) intervient aussi
     dans la repr‚sentation des instructions en m‚moire.

     En g‚n‚ral, on compte 1 MOT pour l'instruction + les mots d'exten-
     sion et la taille des op‚randes.

   exemples:
   ---------
   ainsi:  MOVE.W  #14,D0 sera repr‚sent‚ par 1 mot (instruction) + 1 mot
   (pour le mot 14) + 1 mot (pour Le mot de poids faible de d0) + 1 mot 
   (pour l'adressage imm‚diat avec la taille .W qui admet un mot d'exten-
   sion) = 4 mots en m‚moire.

   autre exemple: JMP $AFFA02 sera repr‚sent‚ par 3 Mots en m‚moire ( mode
   d'adressage absolu long qui admet 2 mots d'extension + 1 mot pour JMP )




- Voilà pour les modes d'adressage, mais avant de passer aux exercices, je
  vous explique encore les diff‚rentes directives d'assemblage que vous
  trouverez dans les listings.


                      *** DIRECTIVES D'ASSEMBLAGE ***
                      -------------------------------

  Vous connaissez d‚jà :

  - TEXT   :Permet de reinitialiser le PC, se place au d‚but du listing.

  - EQU    :Associe une valeur num‚rique à une adresse. (Un Label)

  voilà quelques autres directives:

  - END    :Elle indique à l'assembleur que ce qui suit cette directive
            ne doit plus Štre assembl‚ (donc ignor‚).
            Attention, elle ne provoque pas la 'fin' du programme.

  - DATA   :Cette directive d‚limite un SEGMENT DATA, le PC est reini-
            tialis‚ de la mŠme maniŠre qu'avec 'text'.

            Dans le SEGMENT DATA, on d‚finit des donn‚es (ou datas)

            On peut alors utiliser les directives DC.B, DC.W ou DC.L :

    DC.B   :Permet de placer en m‚moire des constantes (donn‚es) sous
            forme d'octets.
            On peut par exemple associer une constante à une adresse ,
            les donn‚es doivent Štres s‚par‚es par des virgules.

            exp:  LABEL     DC.B  0,1,6,3,11,46,$4F,%10110010
            ----
            ici, à l'adresse LABEL, on trouve un OCTET (.B) qui vaut 0,
            à l'adresse LABEL+1 on trouve un OCTET (.B) qui vaut 1  ...
            en LABEL+6 on trouve un OCTET (.B) qui vaut $4F  etc...

    DC.W   :identique à DC.B sauf qu'ici, on range des Mots en m‚moire.

    DC.L   :identique à DC.W ou DC.B sauf qu'ici, on range des L-M en
            m‚moire.


  - BSS    :Cette directive reinitialise aussi PC.
            Elle d‚limite un SEGMENT BSS.

            Dans un segment BSS, on se r‚serve de la place en m‚moire,
            sous forme d'OCTETS,MOTS ou L-M.

            En effet, on ne peut pas placer une donn‚e en m‚moire si on
            n'a pas reserv‚ cette portion de la m‚moire !!!
            (sauf cas particuliers que nous ‚tudierons)

            On utilise alors la diretive 'DS.suffixe  quantit‚' pour
            se r‚server de la place en m‚moire sans l'initialiser.


     DS.B  :r‚serve une certaine quantit‚ d'Octets en m‚moire.

            exp:  LABEL     DS.B   120     :à l'adresse LABEL, se trouve
            ----  une suite de 120 Octets qui nous sont r‚serv‚s.On peut
                  alors y d‚poser des donn‚es.


     DS.W  :r‚serve une certaine quantit‚ de Mots en m‚moire.

     DS.L  :r‚serve une certaine quantit‚ de L-M en m‚moire.




 - Voilà, allez faire les exos (fichier EXOS_1.DOC), il y en a bien une
   tonne, mais aprŠs ça il n'y aura plus de problˆmes (j'espŠre!!) avec
   les modes d'adressage.

 - Vous reviendrez ensuite à la suite des cours dans le fichier:

   INSTRUC.DOC
   -----------


                            ------------------
  

                    
 
  PIECHOCKI Laurent                              exos:  EXOS_1.DOC
  8,impasse Bellevue                                    ----------
  57980 TENTELING                               cours:  INSTRUC.DOC
                                                        -----------



Back to ASM_Tutorial