Pl NR

From Atari Wiki
Revision as of 17:37, 16 December 2023 by Olivier.jan (talk | contribs)
Jump to navigation Jump to search


                       ------------------------------
                              CHAPITRE nr° 2:
         
                       * PREMIERS PAS EN ASSEMBLEUR *
           
                       ------------------------------



              *** UTILISATION LOGICIELLE DE L'ASSEMBLEUR ***
              ----------------------------------------------

 -   Comme  nous l'avons vu dans le chapitre précédent, programmer en
     assembleur n'est possible qu'avec : un EDITEUR, un ASSEMBLEUR et
     un LINKER.

 1) l'EDITEUR:    .C'est l'EDITEUR qui permet la saisie de votre listing:
    ----------
                   Vous  écrirez  votre  programme grâce aux fonctions de
                   l'éditeur. L'éditeur sauvera et chargera vos listings.

                   Les fichiers sauvés sont des fichiers ASCII (tout com-
                   me les fichiers de ce livre digital) et peuvent être
                   modifiés à volonté avec l'éditeur.

                   Un tel fichier est nomm‚ CODE SOURCE.

                   Les fonctions de l'éditeur varient avec l'utilitaire
                   (DEVPAC,METACOMCO,PROFIMAT...) et simplifient l'entrée
                   du texte (listing).

                  .Un fichier issu d'un éditeur ne peut pas être exécuté!

                   Il faudra d'abord l'ASSEMBLER puis le LINKER.


 2) l'ASSEMBLEUR .l'ASSEMBLAGE constitue la deuxième étape:
    ------------
                  Les codes ASCII (texte) du listing sonts traduits par
                  l'Assembleur et sont convertis (codés) en BINAIRE (le
                  binaire est reconnu directement par l'ordinateur,con-
                  trairement au texte ASCII)

                  Le fichier (listing) une fois traité (Assembl‚) est
                  sauvé sur la disquette  sous le format d'un fichier
                  en BINAIRE appel‚ CODE OBJET.

3) le LINKER     .l'EDITION DE LIENS est la dernière étape:
   ---------
                  Le CODE OBJET est chargé et le LINKER intègrera les
                  MACROS INSTRUCTIONS qui constituent la bibliothèque
                  si le fichier SOURCE le demandait. -->

                                    -------------
Je m'explique:
--------------
  .En assembleur vous pouvez creér des MACRO-INSTRUCTIONS
   (voir chapitre précédent).

  .Une MACRO n'est rien d'autre qu'une nouvelle instruction (paramétrable)
   qui sera incluse par le LINKER chaque fois qu'il rencontrera son nom
   dans le CODE OBJET.

Un exp:
-------
  .Vous créez une MACRO qui affiche 'SALUT' sur l'écran:

   Cette MACRO délimite en réalité un PROGRAMME dont la fonction
   est d'afficher 'SALUT' sur l'écran et vous la nommez 'ECRIS':

             début de la Macro

   ECRIS     .
             .
             .                      le listing qui permet d'afficher
             .                      'SALUT' sur l'écran
             .

             Fin de la Macro  
  
   Chaque fois que le LINKER rencontrera 'ECRIS' (le nom de la MACRO) ,
   dans le CODE OBJET, il reécrira la portion de programme 'ECRIS' à la 
   place de la MACRO.

     .Une MACRO n'est donc pas un sous-programme, elle permet juste une
      une meilleur lisibilit‚ dans le listing.

     .Une macro sera reécrite entièrement à chaque appel: On perd donc
      un peu plus de MEMOIRE , mais c'est bien plus rapide qu'un sous-
      programme.

     .Les Macros permettent une meilleur lisibilit‚ du listing puisque
      Vous n'avez plus à taper la ROUTINE correspondant au nom de la
      Macro, le Linker s'en charge.

  .Vous pouvez donc vous créer une BIBLIOTHEQUE de MACROS ( c.à.d. des
   fichiers  définissant  des  MACROS ) pour les appeler quand vous en 
   aurrez besoin dans votre listing...

   Le LINKER s'occupe de charger les MACROS utilis‚es dans le listing
   (si le listing en contient...) et de les reécrires entièrement.

   Il suffira d'indiquer (au d‚but du listing) le nom du fichier qui
   contient les MACROS utilisées, ou de définir les MACROS utilisées
   au début du listing.
                            (NOUS VERRONS COMMENT EN DETAIL ...)

  .Nous,nous créerons des MACROS pour les fonctions du GEM,de l'XBIOS,
   du BIOS et du VDI ( Des MACROS qui se chargent d'appeler les fonc-
   tions désirées en passant les paramètres nécessaires pour plus de
   rapidité et de convivialité )

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

                .le LINKER créera aussi la PAGE DE BASE, qui contient
                 des renseignements sur le prg indispensables au sys-
                 tème d'exploitation pour pouvoir charger et executer
                 le prg LINKE.
                 Voilà pourquoi le LINKAGE est indispenssable mème si
                 le listing ne contient pas de Macros.
                 
                      (Je détaillerais quand je parlerais du GEMDOS)


                .Le fichier ainsi obtenu sera sauvé et pourra ètre 
                 executé.



 RESUME:
 ------
     * EDITEUR *              * ASSEMBLEUR *              * LINKER *

      |listing|    ------->    |code objet|   -------> |prg executable|





                    *** QUELQUES NOTIONS ELEMENTAIRES ***
                    -------------------------------------

Voilà quelques notions TRES IMPORTANTES:

1)  le BINAIRE: 
    -----------
 .         Habituellement, pour calculer, on utilise un système décimal,
  c.à.d. que ce système est compos‚ de 10 chiffres: 0,1,2,3,4,5,6,7,8,9
  :C'est une BASE de 10.

  Si on d‚sire exprimmer un ensemble dont la quantit‚ d‚passe 9: on aug-
  mente le chiffre d'une unit‚ et on obtient un nombre:10,11,12,13,14...

 .Le système BINAIRE (ou de BASE 2),est compos‚ de 2 chiffres: 0 et 1

   Ainsi, si on veut exprimmer un ensemble dont la quantit‚ d‚passe 1
   ( c.à.d. >1 en système d‚cimal !! ) on augmente d'une unit‚.

Donc:
Voilà comment on compte en BINAIRE:0,1,10,11,100,101,111,1000,1001,1011...

.On SUPPOSERA que toute composante de la m‚moire de l'ordi est repr‚sent‚e
 (ou cod‚e) en BINaire.

.On nomme le 0 et le 1 du système BINaire pr‚sent dans les composantes de
 la structure de l'ordi par BIT.

.Un BIT peut ètre nul (ou ‚teint):0    OU     activ‚ (ou encore allum‚):1
                                       --
.Le BIT est donc la plus petite structure modifiable et reconnaissable 
 par l'ordi.

.On d‚finit par OCTET un groupe de 8 BITS. (L'OCTET est aussi appel‚ BYTE 
 en Anglais, ne le confondez pas avec 'bit' !)

.On d‚finit par  MOT un groupe de 2 OCTETS (donc de 16 BITS)

.On d‚finit par LONG MOT un groupe de 2 MOTS (donc de 4 OCTETS ou 32 BITS)

.Ces regroupements sont arbitraires et conscernent des BITS cons‚cutifs
 (qui se suivent) en m‚moire.

 CONSEQUENCES: Les composantes internes de l'ordi. peuvent être exprim‚es
 ------------ en BITS,OCTETS,MOTS ou LONGS MOTS.

RESUME:
-------
-  Un BIT prend soit la valeur 1 (activ‚) soit la valeur 0 (‚teind)
      ---
-  Un OCTET est un groupe de 8 BITS cons‚cutifs en m‚moire
      -----
-  Un MOT est un groupe de 2 OCTETS cons‚cutifs en m‚moire
      ---
-  Un LONG MOT est un groupe de 2 MOTS cons‚cutifs en m‚moire
      --------
Pour sch‚matiser, on pourrait dire que la m‚moire de l'ordi. est compos‚e
d'une multitude de petites cases (BITS) pouvant prendre soit 1 soit 0 com-
me valeurs suivant les actions du Microprocesseur et pouvant ètres regrou-
p‚es (arbitrairement) sous la forme d'OCTETS, de MOTS ou de LONGS MOTS.

EXP:
---         {    0                                est un BIT
extraits de {    01011101                         est un OCTET, ou 8 BITS
  m‚moire   {    0101110111010110                 est un MOT,  ou 16 BITS
            {    01011101110101101000100100101101 est un LONG MOT,ou 32 B


2) L'HEXADECIMAL:
   -------------
 .l'HEXADECIMAL est un système de BASE 16,les 16 composantes de ce système
  sont:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

  Ainsi, pour exprimer un ensemble dont la quantit‚ d‚passe F (soit 16 en
  BASE de 10), on change d'unit‚: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,10,11,12,
  ,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F,20,21,22...

  Comme vous pouvez le constater, la v‚ritable utilit‚ de ce système est
  qu'un grand nombre est repr‚sent‚ par un minimum de chiffres.


 .Un OCTET est repr‚sent‚ en HEXA. par 2 chiffres 

 .Un MOT est repr‚sent‚ en HEXA. par 4 chiffres

 .Un LONG MOT est repr‚sent‚ en HEXA. par 8 chiffres 


 3) NOTATIONS:
    ----------
-      Dans un listing en ASS. ,les chiffres cod‚s  en BINaire sont 
  repr‚sent‚s avec le pr‚fixe ' % ', ceux cod‚s en HEXAd‚cimal avec
  le pr‚fixe ' $ '.

  ( L'utilisation de la BASE de 10 n'a pas besoin d'ètre indiqu‚e )

  Après le Linkage, tous les chiffres seront automatiquement cod‚s en
  Hexad‚cimal.

EXP:           %01001011   est un chiffre cod‚ en BINAIRE (et un OCTET)
----           $1F0A       est un chiffre cod‚ en HEXA.   (et un MOT)
                101001     est un chiffre cod‚ en DECIMAL !


 4) REMARQUES:
    ----------
 -  Le BIT le plus à gauche d'un OCTET,d'un MOT,d'un LONG MOT est appell‚
    M.S.B ( Most Significant Bit ) ou Bit de plus fort poids.

 -  C'est ce bit qui permet de signer ( positif / n‚gatif ) un nombre.
    Il est activ‚ pour un nombre n‚gatif.

 -  Il n'est utilis‚ que pour signer un nombre !

  EXP:  $FFFFFFFF est un L-M qui vaut -1 en d‚cimal
  ----  %1111111111111111 est un MOT qui vaut -1 en d‚cimal
        %11111110 est un OCTET qui vaut -2 en d‚cimal et
        %00000010 en est un qui vaut 2:Pour inverser le signe de l'OCTET,
         on a donc 'prolong‚' le 1 le plus à gauche jusqu'au MSB.

  :Exemples très th‚oriques, pas de panique,ce n'est pas vraiment utile
   en pratique (et même franchement inutile, je vous rassure...) car il
   existe des instructions qui font toutes sortes d'op‚rations sur les
   BITS,OCTETS,MOTS et L-M... (et personne ne vous oblige à travailler en
   système Binaire!)

  - D'après nos d‚finitions: (le MSB n'est utilis‚ que pour signer le bit,
                              l'octet,le mot ou le long-mot)

             donc:            *         -2^7  ó OCTET < 2^7
                                        -128  ó OCTET < 128

                              *        -2^15  ó  MOT  < 2^15
                                       -32768 ó  MOT  < 32768

                              *        -2^31  ó  L-M  < 2^31
                                  -2147483648 ó  L-M  < 2147483648

  ça par contre, c'est à retenir: Les d‚bordements (OCTET trop grand...)
  provoquent des erreurs.

 5) RECAPITULATION:
     ---------------
 .Une composante de la structure de l'ordi. : REGISTRE,VARIABLE... (termes
  expliqu‚s bientot) peut prendre la forme de BIT,OCTET,MOT ou LONG MOT.

  En th‚orie... Nous ‚tudierons les exceptions:Le choix est plus limit‚ en
                r‚alit‚.


    CONSEQUENCES:   .Une VARIABLE d‚finie en tant que MOT ne pourra donc
    -------------    pas avoir une valeur sup‚rieure à 32768. (par exp.)

              NB:    Cette variable ne pourra qu'ètre un Long Mot (Si sa
              ---    valeur peut être contenue dans un L-M , sinon cela
                     provoquerait une erreur puisque l'ordi ne reconnait
                     pas de composante dont la quantit‚ depasse le L-M.)
                     (en th‚orie...)

       REMARQUES:   .Une Variable pouvant ètre contenue dans un OCTET,
       ----------    donc dont la valeur est <128 peut aussi ètre con-
                     tenue dans un MOT ou un L-M.

                     Mais il faut faire attention à ce que la composante
                     (ici la variable) puisse ètre d‚finie sur un MOT ou
                     un L-M (Dans cet exemple pr‚cis, c'est possible)

                    .Il faudra donc pour chaque composante de la structure
                     interne de l'ordi. indiquer les diff‚rentes formes
                     qu'elle peut prendre (BIT,OCTET,MOT,L-M...).

                     Nous le feront avec pr‚cision.

  C'est pour cela qu'il faudra savoir les diff‚rentes formes que peut 
  prendre ce que nous utilisons pour programmer (Registres,variables...)
  et aussi par quoi sont d‚finit ces formes (BIT,OCTET...).
  Voilà pourquoi l'Assembleur est très stricte dans sa programmation.


6) IMPORTANT:
   ----------

Les ensembles tels que les OCTETS,MOTS,L-M sont compos‚s de BITS,ces BITS
sont num‚rot‚s ainsi (dans les OCTETS,MOT,L-M,REGISTRES,VARIABLES...):

                        De la DROITE vers la GAUCHE.

     31 30 .  .  .     .  .  . 15  .  .  .  9  8  7  6  5  4  3  2  1  0
    [*][ ][.][.][.][ ][ ][ ][ ][*][.][.][.][ ][ ][*][ ][ ][ ][ ][ ][ ][*]

 - Un OCTET est donc num‚rot‚ de la droite vers la gauche de 0 à 7

 - Un MOT , de 0 à 15

 - Un L-M , de 0 à 31

 - Le BIT 0 est le bit de PLUS FAIBLE POIDS (ou LSB:Least significant Bit)

 - Le BIT 7 (15 pour un MOT,31 pour un L-M) est le bit de POIDS le plus
   FORT (ou MSB)

   AINSI:
   ------                     <-----------  poids FORT

                     31<-- ...[][][][][][][][][][][][][]...  -->0

                               poids FAIBLE ---------->

   DONC: Un MOT est compos‚ de 2 OCTETS, un de poids FAIBLE (bits 0 à 7) et
   ----- un de poids FORT: (bits 8 à 15)

         Un L-M est compos‚ de 2 MOTS, un de poids FAIBLE (bits 0 à 15) et
         un de poids FORT (bits 16 à 31)

                           CETTE NOTION EST FONDAMENTALE 
                           -----------------------------


                              *** LA MEMOIRE ***
                              ------------------

 - On admettra que la m‚moire est une suite de nombres cod‚s en BINaire.

    :Nous savons maintenant que ces nombres peuvent ètres regroupp‚s en
     OCTETS,MOTS,L-M.

 -      La programmation en assembleur permet de changer le contenu 
        de la m‚moire.

.La m‚moire est chang‚e quand l'ordinateur effectue une tàche (un calcul,
 une recherche quelconque...).
 Dans ce cas, l'ordi. s'occupe  d'ordonner sa m‚moire , c'est en fonction
 de cet ordre que telle ou telle action se produit,l'utilisateur n'inter-
 vient donc pas: C'est ce qui se passe à chaque instant, un ordinateur 
 n'est donc jamais au repos (il verifie si on change de disquette,efface
 l'ecran cinquante fois par seconde).

. La m‚moire de l'ordi. peut aussi être chang‚e par l'utilisateur,c'est le
 but de la programmation.La cons‚quence en est un ‚tat pr‚vu (programm‚)
 de la m‚moire,donc telle ou telle action est effectu‚e.
 Ceci est possible en utilisant des instructions propres au langage uti-
 lis‚ ou en modifiant directement une portion de la m‚moire.Cette derni-
 ère op‚ration s'effectue très facilement en ASSembleur et avec une pr‚-
 cision de l'ordre du BIT.
 On peut donc D‚placer un OCTET,un MOT, un L-M (qu'on aura pu d‚finir)
 dans la m‚moire.(là o— c'est possible...)

 Pour se rep‚rer dans la vaste m‚moire de notre ordi. , on a d‚coup‚ la
 m‚moire et on a nomm‚ chaque portion de la m‚moire par une ADRESSE (com-
 me pour des Adresses dans une rue...)

 Th‚oriquement, il serait possible de mettre un BIT,OCTET,MOT ou L-M à
 n'importe quelle ADRESSE, mais en r‚alit‚ ceci n'est pas possible.

     - L'utilisateur n'a accès qu'à une partie de la m‚moire.
       (nous verrons laquelle)

     - Il faut tenir compte de la parit‚ et de l'imparit‚ des ADRESSES:
       On ne peut pas mettre n'importe quoi à n'importe quelle adresse.

 EN EFFET: Si on SCHEMATISE la structure de la m‚moire, celle-ci ressemble 
 --------  à une bande de longueur limit‚e (d‚but et fin) et d'une LAR-
           GEUR de 16 BITS, dont les diff‚rentes parties sont num‚rot‚es 
           ADRESSEES) tout les 8 BITS. (à chaque OCTET)




                             etc...

              bits: 15        7        0
              ----- .|        |        |
                  x-2|--------|--------|
        |           x|10001011|--------|   OCTET :10001011 à l'adresse x
        |         x+2|--------|10001101|   OCTET :10001101 en x+3 octets
        |         x+4|--------|--------|
        |         x+6|00101100|10110011|   MOT  :0010110010110011
        |           .|--------|--------|         en x+6 octets
       \|/          .|--------|--------|
        '        x+12|11011111|01110100|   L-M  :110111110111010001011011-
     SENS des       .|01011011|01110100|         01110100
     adresses       .|--------|--------|         en x+12 octets
    CROISSANTES     .|--------|--------|
    -----------  x+20|--------|-------1|   BIT  :1  à l'adresse x+21 octets
        |           .|--------|--------|
        |           .|OCT FORT| FAIBLE |
       \|/          .|--------| ------ |
        '           15        7        0

                             ETC...

                          +-------+
                          |MEMOIRE| : ( Exemple d'organisation )
                          +-------+


- Observez bien cet exemple, il est très simple à comprendre et ce sch‚ma
  devra être dans votre tète à chaque fois que vous programmerez en ASS.

- Vous pouvez constater que:

             * La m‚moire est adressable au niveau de l'octet *
               ----------------------------------------------
      *    :Entre 2 adresses diff‚rentes X et X+1 ou X-1, il y a   *
      *     8 BITS ou un OCTET.                                    *

                     bits n° 7  6  5  4  3  2  1  0

            X-1  ---------->
                            [ ][ ][ ][ ][ ][ ][ ][ ]
            X    ---------->
                            [ ][ ][ ][ ][ ][ ][ ][ ]
            X+1  ---------->
                            [ ][ ][ ][ ][ ][ ][ ][ ]


       * La m‚moire peut ètre repr‚sent‚e comme un PUITS dans lequel on
         JETTE des donn‚es:BITS,OCTET,MOTS,L-M:

         La largeur de ce puit est d'un MOT (soit 16 Bits)
         La profondeur d‚pend de la taille de la m‚moire.

         Le but du jeu:  Jetter nos donn‚es dans le puit sans d‚former
                         les donn‚es.

   c.à.d: Si vous y jettez un MOT: 1010101110110110 (=2 octets,1 de
          poids fort (à droite) et un de poids faible (à gauche) ) à
          une adresse x paire.


                      1010101110110110
                             |
                            \|/

                    |--------|--------|
  ADRESSES PAIRES   |--------|--------|  ADRESSES IMPAIRES
  ---------------   |--------|--------|  -----------------
           bit nr° 15        7        0

                   
                       vous obtenez:

  ADRESSES PAIRES  x|10101011|10110110|  ADRESSES IMPAIRES
  ---------------x+2|--------|--------|  -----------------
                    |--------|--------|
           bit nr° 15        7        0

               - Le MOT a été posé à l'adresse x (PAIRE)

               . L'Oct de poids FORT est à l'adresse x (PAIRE)
               . L'Oct de poids FAIBLE à l'adresse x+1 (IMPAIRE)


            par contre, si vous jetez ce mot à une adresse impaire:



                               10101011
                      10110110
                              |
                             \|/

                     |--------|--------|
  ADRESSES PAIRES    |--------|--------|    ADRESSES IMPAIRES
  ---------------    |--------|--------|    -----------------
            bit nr° 15        7        0

                   
                   
                        vous obtenez:

                  x-3|--------|--------|
  ADRESSES PAIRES x-1|--------|10101011|x   ADRESSES IMPAIRES
  ---------------    |10110110|--------|x+2 -----------------
                     |--------|--------|
            bit nr° 15        7        0


               - Le MOT a ‚t‚ pos‚ à l'adresse x (IMPAIRE)

               . L'Oct de poids FORT est à une adresse IMPAIRE :x
               . L'Oct de poids FAIBLE à une adresse PAIRE     :x+1

            Dans ce cas, on ne respecte plus les règles de notre 'jeu'
            Si on devait jeter un autre MOT à l'adresse x-3 dans notre
            puits, son Oct FORT ne pourrait pas se maintenir et d‚grin-
            golerait en x-1!

            ATTENTION,en r‚alit‚ ceci ne se produirait pas, Je simplifie
            seulement mon explication...

     En fait, pour pouvoir d‚placer (poser) des MOTS dans la m‚moire, il
     faut veiller à ce que l'adresse de destination soit PAIRE!

            Pour notre exemple, il faut donc poser le MOT sous cette
            forme dans la m‚moire (dans notre 'puits')

                        +----------------+
                        |1010101110110110|
                        +----------------+
                                 |
                                \|/

                        |--------|--------|
  ADRESSES PAIRES      x|10101011|10110110|x+1   ADRESSES IMPAIRES
  ---------------       |--------|--------|      -----------------
               bit nr° 15        7        0

                  .L'Oct de poids FORT (10101011) est à l'adresse x
                   qui est PAIRE

                  .L'Oct de poids FAIBLE (10110110) est à l'adresse x+1
                   qui est IMPAIRE


            * Il en est de mème lorsqu'il s'agit d'un L-M:
              --------------------------------------------

       Voilà comment poser un L-M, là aussi il faut que l'adresse de
       destination soit PAIRE, pour  ‚viter les m‚mes  complications
       que dans notre exemple pr‚c‚dent.



                        +-----------------+
                        |1110001001100100-|
                        |1010110011010001 |
                        +-----------------+
                                 |
                                \|/

                        |--------|--------|
  ADRESSES PAIRES       |--------|--------|      ADRESSES IMPAIRES
  ---------------       |--------|--------|      -----------------
                       x|11100010|01100100|x+1
                     x+2|10101100|11010001|x+3
                        |--------|--------|
               bit nr° 15        7        0

                  .Le MOT de poids FORT (1110001001100100) est à
                   l'adresse x ,qui est PAIRE

                  .Le MOT de poids FAIBLE (1010110011010001) est à
                   l'adresse x+2 ,qui est PAIRE


            * Pour un OCTET ou un BIT
              -----------------------

                 - La parit‚ n'a plus d'importance!

      Ainsi, pour un Octet: on a:
             --------------

                      01000110
                          |
                         \|/

                     |--------|--------|
  ADRESSES PAIRES   x|01000110|--------|x+1   ADRESSES IMPAIRES
  ---------------    |--------|--------|      -----------------
            bit nr° 15        7        0


                     .L'Oct (01000110) est à une adresse x ,PAIRE

           OU:
           --
                              01000110
                                  |
                                 \|/

                     |--------|--------|
  ADRESSES PAIRES x-1|--------|01000110|x     ADRESSES IMPAIRES
  ---------------    |--------|--------|      -----------------
            bit nr° 15        7        0


                     .L'Oct (01000110) est à une adresse x ,IMPAIRE


             Pour un BIT: on a
             ------------


                         0
                         |
                        \|/

                     |--------|--------|
  ADRESSES PAIRES   x|-------0|--------|x+1   ADRESSES IMPAIRES
  ---------------    |--------|--------|      -----------------
            bit nr° 15        7        0


                     .Le BIT (0) est à une adresse x ,PAIRE

          OU:
          ---


                                  0
                                  |
                                 \|/

                     |--------|--------|
  ADRESSES PAIRES x-1| -------|-------0|x     ADRESSES IMPAIRES
  ---------------    |--------|--------|      -----------------
            bit nr° 15        7        0


                     .Le BIT (0) est à une adresse x ,IMPAIRE




                          *** RECAPITULATION ***
                          ----------------------

 * Un BIT peut ètre, soit à une adresse PAIRE, soit à une adresse IMPAIRE
      ---                               -----                     -------
 * Un OCTET peut ètre, soit à une adresse PAIRE, soit une adresse IMPAIRE
      -----                               -----                   -------
 * Un MOT est toujours situ‚ à une adresse PAIRE en m‚moire
      ---                                  -----
 * Un L-M est toujours situ‚ à une adresse PAIRE en m‚moire
      ---                                  -----
   ( Le non respect de cette règle entraine un 'plantage' de l'ordi ! )

 * STRUCTURE de la MEMOIRE:
                   --------


                            etc...
              bits: 15        7        0
              ----- .|        |        |
                  x-2|--------|--------|x-1
        |           x|00001011|--------|  OCTET :00001011 à l'adresse x
        |         x+2|--------|10110010|  OCTET :10110010 en x+3 octets
        |         x+4|--------|--------|         (impaire)
        |         x+6|10001011|10110110|  MOT  :1000101110110110
        |           .|--------|--------|        en x+6 octets (paire)
       \|/          .|--------|--------|
        '        x+12|01101100|00000000|  L-M  :011011000000000010111010-
     SENS des       .|10111010|01110111|        01110111
     adresses       .|--------|--------|        en x+12 octets (paire)
    CROISSANTES     .|--------|--------|
    -----------  x+20|--------|-------1|  BIT  :1  à l'adresse x+21 octets
        |           .|--------|--------|           (impaire)
        |           .|oct FORT| FAIBLE |
       \|/          .|--------| ------ |
        '           15        7        0
                     |       etc...    |
 Adresses PAIRES     |        |        |     Adresses IMPAIRES
 ---------------                             -----------------
                          +-------+
                          |MEMOIRE|
                          +-------+

              Exemple d'organisation de la m‚moire.
              -------------------------------------
                 (Octets,Mots,L-M,Bits fictifs)





                   *** ORGANISATION DE LA MEMOIRE ***
                   ----------------------------------

- On distingue: .L'espace programme, qui contient les instructions de vos
                 programmes cod‚es en BINaire.

                .L'espace donn‚es, qui contient les donn‚es du prg et les
                 zones de la m‚moire que vous avez initalis‚. (en BIN)

                .Ces 2 zones sont dans la m‚moire vive (RAM), on ne peut
                 pas ‚crire sur la m‚moire morte (ROM) car elle contient
                 tous les renseignements dont l'ordi a besoin pour fonc-
                 tionner correctement.
                 La RAM est la m‚moire disponible en ‚criture au progra-
                 mmeur (elle peut bien sur aussi être effac‚e.)

                 On dispose d'environ 512 Ko de m‚moire vive sur un 520ST
                 (un Kilo Octet=1024 Octets.) et d'1 M‚ga Octet soit 1024
                 Ko sur un 1040ST.   




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

- Vous voilà prêts à pr‚sent à commencer la programmation proprement dite:
  retenez bien tout ce qui a ‚t‚ dit ici (notez le quelquepart si vous le
  jugez utile), relisez encore une fois  si la tête vous tourne, car dans
  le prochain chapitre, les choses s‚rieuses commencent.





     PIECHOCKI Laurent
     8,impasse Bellevue                           Suite dans DEBUTS.DOC
     57980 TENTELING                                         ----------


Back to ASM_Tutorial