<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.temlib.org/AtariForumWiki/index.php?action=history&amp;feed=atom&amp;title=COURS_3.TXT</id>
	<title>COURS 3.TXT - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.temlib.org/AtariForumWiki/index.php?action=history&amp;feed=atom&amp;title=COURS_3.TXT"/>
	<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=COURS_3.TXT&amp;action=history"/>
	<updated>2026-05-13T17:39:07Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.2</generator>
	<entry>
		<id>https://www.temlib.org/AtariForumWiki/index.php?title=COURS_3.TXT&amp;diff=11527&amp;oldid=prev</id>
		<title>&gt;Zorro 2: Created page with &quot;&lt;pre&gt;    ******************************************************************    *                                                                *    *               COURS D'ASSEM...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=COURS_3.TXT&amp;diff=11527&amp;oldid=prev"/>
		<updated>2016-12-22T14:33:34Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;pre&amp;gt;    ******************************************************************    *                                                                *    *               COURS D&amp;#039;ASSEM...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
   ******************************************************************&lt;br /&gt;
   *                                                                *&lt;br /&gt;
   *               COURS D'ASSEMBLEUR 68000 SUR ATARI ST            *&lt;br /&gt;
   *                                                                *&lt;br /&gt;
   *                   par Le F‚roce Lapin (from 44E)               *&lt;br /&gt;
   *                                                                *&lt;br /&gt;
   *                           Cours num‚ro 3                       *&lt;br /&gt;
   *                                                                *&lt;br /&gt;
   ******************************************************************&lt;br /&gt;
&lt;br /&gt;
   Si  vous  avez correctement ‚tudi‚ les deux premiŠres le‡ons, vous&lt;br /&gt;
   devez  normalement  avoir  un peu plus d'ordre qu'au d‚part, et le&lt;br /&gt;
   binaire  et  l'hexad‚cimal  ne  doivent  plus avoir de secret pour&lt;br /&gt;
   vous.&lt;br /&gt;
&lt;br /&gt;
   Avant  de  commencer  je dois vous rappeler quelque chose d'essen-&lt;br /&gt;
   tiel: Il  est  tentant de r‚fl‚chir en chiffre alors que bien sou-&lt;br /&gt;
   vent  il  serait  pr‚f‚rable  de  se  souvenir qu'un chiffre n'est&lt;br /&gt;
   qu'une  suite de bits. Ainsi imaginons un jeu dans lequel vous de-&lt;br /&gt;
   vez  coder  des donn‚es relatives … des personnages. En lisant ces&lt;br /&gt;
   donn‚es  vous  saurez  de quel personnage il s'agit, et combien il&lt;br /&gt;
   lui  reste  de  point de vie. Admettons qu'il y ait 4 personnages.&lt;br /&gt;
   Combien  faut-il  de bits pour compter de 0 … 3 (c'est-…-dire pour&lt;br /&gt;
   avoir  4 possibilit‚s) seulement 2 bits.   Mes personnages peuvent&lt;br /&gt;
   avoir, au  maximum, 63 points  de  vie (de 0 … 63 car … 0 ils sont&lt;br /&gt;
   morts), il  me faut donc 6 bits pour coder cette vitalit‚. Je peux&lt;br /&gt;
   donc avoir sur un seul byte (octet) 2 choses totalement diff‚rent-&lt;br /&gt;
   es: avec  les bits 0 et 1 (le bit de droite c'est le bit 0, le bit&lt;br /&gt;
   le  plus  …  gauche pour un byte est donc le 7) je code le type de&lt;br /&gt;
   mon personnage, et avec les bits 2 … 7 sa vitalit‚.&lt;br /&gt;
&lt;br /&gt;
   Ainsi  le chiffre 210 en lui mˆme ne veut rien dire. C'est le fait&lt;br /&gt;
   de  le mettre en binaire: 11010010 et de penser en regroupement de&lt;br /&gt;
   bits  qui  va le rendre plus clair. S‚parons les 2 bits de droite:&lt;br /&gt;
   10 ce qui fait 3 en d‚cimal, je suis donc en pr‚sence d'un person-&lt;br /&gt;
   nage de type 3.&lt;br /&gt;
&lt;br /&gt;
   Pr‚levons  maintenant  les  6 bits  de  gauche: 110100 et  conver-&lt;br /&gt;
   tissons.&lt;br /&gt;
&lt;br /&gt;
   Nous  obtenons 52. Nous sommes donc en pr‚sence d'un personnage de&lt;br /&gt;
   type 3, avec 52 points de vitalit‚.&lt;br /&gt;
&lt;br /&gt;
     Ceci  devant  maintenant  ˆtre  clair, passons … une explication&lt;br /&gt;
   succinte concernant la m‚moire, avant d'aborder notre premier pro-&lt;br /&gt;
   gramme.&lt;br /&gt;
&lt;br /&gt;
   STRUCTURE DE LA MEMOIRE&lt;br /&gt;
&lt;br /&gt;
   La  m‚moire, c'est  un  tube, trŠs  fin et trŠs long. Il nous faut&lt;br /&gt;
   distinguer 2 choses:&lt;br /&gt;
&lt;br /&gt;
   1) Ce qu'il y a dans le tube.&lt;br /&gt;
   2) La distance par rapport au d‚but du tube.&lt;br /&gt;
&lt;br /&gt;
   ATTENTION, cette  notion  doit ˆtre parfaitement comprise car elle&lt;br /&gt;
   est perp‚tuellement source d'erreur.&lt;br /&gt;
   Grƒce  …  la  distance, nous  pourrons retrouver facilement ce que&lt;br /&gt;
   nous avons mis dans le tube. Cette distance est appel‚ 'adresse'.&lt;br /&gt;
&lt;br /&gt;
   Le tube a un diamŠtre de 1 byte (octet). Lorsque je vais parler de&lt;br /&gt;
   l'adresse  $6F00 (28416 en  d‚cimal), c'est  un emplacement. A cet&lt;br /&gt;
   emplacement je peux mettre un byte.  Si la donn‚e que je veux met-&lt;br /&gt;
   tre  tiens sur un word (donc 2 bytes car 1 word c'est bien 2 bytes&lt;br /&gt;
   accol‚s), cette  donn‚e  occupera  l'adresse  $6F00  et  l'adresse&lt;br /&gt;
   $6F01.&lt;br /&gt;
&lt;br /&gt;
   Imaginons  que  je  charge  une  image  (32000 octets) … partir de&lt;br /&gt;
   l'adresse $12C52. Je vais donc boucler 32000 fois pour d‚poser mon&lt;br /&gt;
   image, en augmentant … chaque fois mon adresse.&lt;br /&gt;
&lt;br /&gt;
   Imaginons  maintenant  que je veuille noter cette adresse. Je vais&lt;br /&gt;
   par exemple la noter … l'adresse $6F00.&lt;br /&gt;
&lt;br /&gt;
   Donc  si  je me promŠne le long du tube jusqu'… l'adresse $6F00 et&lt;br /&gt;
   que  je  regarde  … ce niveau l… dans le tube, j'y vois le chiffre&lt;br /&gt;
   $12C52 cod‚ sur un long mot (les adresses sont cod‚s sur des longs&lt;br /&gt;
   mots). Ce chiffre occupe donc 4 emplacements de tube correspondant&lt;br /&gt;
   …  $6F00, $6F01, $6F02 ,$6F03. Or, que  repr‚sente ce chiffre: Une&lt;br /&gt;
   adresse, celle de mon image!!!! J'espŠre que c'est bien clair...&lt;br /&gt;
&lt;br /&gt;
   Un  programme, c'est  donc  pour le 68000 une suite de lectures du&lt;br /&gt;
   contenu du tube. Il va y trouver des chiffres qu'il va interpr‚ter&lt;br /&gt;
   comme des ordres (revoir le cours 2). Grƒce … ces ordres, nous al-&lt;br /&gt;
   lons  lui  dire par exemple de continuer la lecture … un autre en-&lt;br /&gt;
   droit de ce tube, de revenir en arriŠre, de pr‚lever le contenu du&lt;br /&gt;
   tube  et d'aller le d‚poser autre part (toujours dans ce mˆme tube&lt;br /&gt;
   bien  s–r) etc... Pour savoir … quel endroit le 68000 est en train&lt;br /&gt;
   de  lire  les  ordres  qu'il ex‚cute, il y a un compteur. Comme ce&lt;br /&gt;
   compteur sert pour le programme, il est appel‚ Program Counter, en&lt;br /&gt;
   abr‚g‚ PC.&lt;br /&gt;
&lt;br /&gt;
   Le  68000 a un PC sur 24 bits, c'est-…-dire qu'il peut prendre des&lt;br /&gt;
   valeurs  comprises  entre 0 et 16777215. Comme chaque valeur du PC&lt;br /&gt;
   correspond … une adresse et qu'en face de cette adresse (donc dans&lt;br /&gt;
   le  tube) on  ne peut mettre qu'un octet, une machine ‚quip‚e d'un&lt;br /&gt;
   68000 peut  donc  travailler  avec 16777215 octets, ce qui fait 16&lt;br /&gt;
   M‚ga. A  titre  indicatif, le  80286 de  chez Intel qui ‚quipe les&lt;br /&gt;
   'gros' compatibles  PC, ne  comporte  qu'un  PC sur 20 bits ce qui&lt;br /&gt;
   restreint son espace … 1 m‚ga...&lt;br /&gt;
&lt;br /&gt;
   A noter que la m‚moire est destin‚e … recevoir des octets mais que&lt;br /&gt;
   ce  que  repr‚sente  ces  octets  (texte, programme, image...) n'a&lt;br /&gt;
   strictement aucune importance.&lt;br /&gt;
&lt;br /&gt;
   PREMIER PROGRAMME&lt;br /&gt;
   Nous  allons  tout  de  suite illustrer notre propos. Nous lan‡ons&lt;br /&gt;
   donc  GENST. Ceux  qui  ont  un ‚cran couleur devront le lancer en&lt;br /&gt;
   moyenne  r‚solution, c'est  pr‚f‚rable pour un meilleur confort de&lt;br /&gt;
   travail.&lt;br /&gt;
&lt;br /&gt;
   Mˆme  si  vous  avez  un 520, choisissez dans les 'pr‚f‚rences' de&lt;br /&gt;
   GENST (dans le menu 'Options') un chargement automatique de MONST&lt;br /&gt;
   (Load  MONST 'YES') mettez un Tab Setting de 11 et auto-indent sur&lt;br /&gt;
   YES.&lt;br /&gt;
&lt;br /&gt;
   Si  MONST  est  d‚j… charg‚ son option dans le menu 'program' doit&lt;br /&gt;
   ˆtre  disponible, sinon  elle  est en gris. Si c'est le cas, aprŠs&lt;br /&gt;
   avoir sauv‚ les pr‚f‚rences, quitter GENST et relancez le.&lt;br /&gt;
&lt;br /&gt;
   Maintenant, nous allons r‚aliser le programme suivant:&lt;br /&gt;
&lt;br /&gt;
       Met le chiffre $12345678 dans le registre D0&lt;br /&gt;
       Met le chiffre $00001012 dans le registre D1&lt;br /&gt;
       Additionne le registre D0 avec le registre D1&lt;br /&gt;
&lt;br /&gt;
   Tout  d'abord  il  faut  savoir  que ces ordres seront mis dans le&lt;br /&gt;
   tube, et qu'il nous faudra parfois rep‚rer ces endroits. Pour cela&lt;br /&gt;
   nous utiliserons des ‚tiquettes, que nous poserons … c“t‚ du tube.&lt;br /&gt;
   Ces ‚tiquettes (ou Label en Anglais) sont … inscrire tout … gauche&lt;br /&gt;
   dans notre listing alors que les instructions (ce qui est … mettre&lt;br /&gt;
   DANS  le  tube) seront  inscrites aprŠs un espace ou mieux pour la&lt;br /&gt;
   lisibilit‚, aprŠs une tabulation.&lt;br /&gt;
&lt;br /&gt;
   Ainsi notre programme devient:&lt;br /&gt;
          MOVE.L     #$12345678,D0&lt;br /&gt;
          MOVE.L     #$00001012,D1&lt;br /&gt;
          ADD.L      D0,D1&lt;br /&gt;
&lt;br /&gt;
   Remarquer  le  signe  # avant les chiffres. Le signe $ indique que&lt;br /&gt;
   ces  chiffres sont inscrits en hexad‚cimal. Le signe # indique que&lt;br /&gt;
   c'est la valeur $12345678 que nous voulons mettre dans D0.&lt;br /&gt;
&lt;br /&gt;
   Si  nous  avions  fait  MOVE.L   $12345678,D0,  c'est la valeur se&lt;br /&gt;
   trouvant … l'adresse $12345678 que nous aurions mis en D0.&lt;br /&gt;
&lt;br /&gt;
   Pourquoi  y a t-il .L aprŠs les MOVE et le ADD ? Nous verrons cela&lt;br /&gt;
   dans quelques minutes.&lt;br /&gt;
&lt;br /&gt;
   Pour le moment assemblons en maintenant appuy‚ [ALTERNATE] puis en&lt;br /&gt;
   appuyant sur A.&lt;br /&gt;
&lt;br /&gt;
   Normalement, tout  s'est bien pass‚ ou alors c'est que vous n'avez&lt;br /&gt;
   pas scrupuleusement recopi‚ ce 'programme'. &lt;br /&gt;
&lt;br /&gt;
   Maintenant,  d‚buggons   notre  programme,  en  maintenant  appuy‚&lt;br /&gt;
   [ALTERNATE] et en appuyant sur D.&lt;br /&gt;
&lt;br /&gt;
   Hop, nous nous retrouvons dans MONST qui, ‚tant appel‚ … partir de&lt;br /&gt;
   GENST, a automatiquement charg‚ notre programme.&lt;br /&gt;
&lt;br /&gt;
   Jetons tout d'abord un coup d'oeil … ce ramassis de chiffre...&lt;br /&gt;
&lt;br /&gt;
   En haut nous retrouvons nos registres de donn‚es D0 … D7 ainsi que&lt;br /&gt;
   nos  registres  d'adresses A0 … A7 avec en prime A7'. Sous les re-&lt;br /&gt;
   gistres  de donn‚es, nous voyons SR et en dessous PC. Nous pouvons&lt;br /&gt;
   remarquer  que  PC nous montre une adresse et la premiŠre ligne de&lt;br /&gt;
   notre programme. Le PC indique donc ce qui va ˆtre ex‚cut‚.&lt;br /&gt;
&lt;br /&gt;
   La  fenˆtre  du  dessous (num‚ro 2) montre notre programme. Sur la&lt;br /&gt;
   gauche  de  cette fenˆtre nous voyons les adresses. Symboliquement&lt;br /&gt;
   nous pouvons dire que la partie droite de cette fenˆtre montre nos&lt;br /&gt;
   instructions dans le tube et que les chiffres de gauche nous indi-&lt;br /&gt;
   que l'endroit, l'adresse par rapport au d‚but du tube.&lt;br /&gt;
&lt;br /&gt;
   La  fenˆtre de droite (la 3) donne en fait la mˆme chose que la 2,&lt;br /&gt;
   mais  avec  la vision du 68000. Nous avions vu dans le cours 2 que&lt;br /&gt;
   pour  la  machine  notre  suite  d'ordres  n'‚tait qu'une suite de&lt;br /&gt;
   chiffres.&lt;br /&gt;
&lt;br /&gt;
   Lorsque  nous  avons  assembl‚, l'assembleur a simplement converti&lt;br /&gt;
   ligne par ligne notre programme en chiffres.&lt;br /&gt;
&lt;br /&gt;
   Normalement dans la fenˆtre 2 vous devez voir notre programme avec&lt;br /&gt;
   en  face  de  la premiŠre instruction, une petite flŠche. Regardez&lt;br /&gt;
   l'adresse de cette instruction (c'est-…-dire le chiffre de gauche,&lt;br /&gt;
   qui indique a quel endroit dans le tube se trouve cet ordre). Avec&lt;br /&gt;
   un 1040 sous TOS 1.4, cela tourne autour de $61BF0.&lt;br /&gt;
&lt;br /&gt;
   NOTE: Le 68000 permet … un programme de se placer n'importe o—.&lt;br /&gt;
   Sur  certains  micro-processeurs  les programmes doivent imp‚rati-&lt;br /&gt;
   vement  tous  se placer au mˆme endroit. Pour nous ce n'est pas le&lt;br /&gt;
   cas, ce  qui  explique  que si mon programme est en $61BF0 il n'en&lt;br /&gt;
   est pas forcement de mˆme pour vous: c'est normal.&lt;br /&gt;
&lt;br /&gt;
   Regardez maintenant la fenˆtre 3 et cherchez-y la mˆme adresse que&lt;br /&gt;
   celle  que  vous  avez lue dans la fenˆtre 2 en face de notre pre-&lt;br /&gt;
   miŠre ligne de programme. Normalement si vous n'avez touch‚ … rien&lt;br /&gt;
   cette adresse doit normalement ˆtre la premiŠre.&lt;br /&gt;
&lt;br /&gt;
   Vous  devez  y voir 203C12345678. C'est ainsi que le micro-proces-&lt;br /&gt;
   seur re‡oit MOVE.L #$12345678,D0!!!&lt;br /&gt;
&lt;br /&gt;
   Retournons  sur la fenˆtre 2. Notons l'adresse de la seconde ligne&lt;br /&gt;
   de  notre  programme  et  soustrayons ce chiffre … l'adresse de la&lt;br /&gt;
   premiŠre ligne. Nous obtenons 6. Nous en d‚duisons donc que :&lt;br /&gt;
&lt;br /&gt;
   MOVE.L   #$12345678,D0  occupe 6 octets en m‚moire.&lt;br /&gt;
&lt;br /&gt;
   Faisons  maintenant  avancer  notre programme. Pour cela maintenez&lt;br /&gt;
   enfonc‚  [CONTROL]  et  appuyez une fois sur Z. La petite flŠche a&lt;br /&gt;
   saut‚  sur la seconde ligne, cette mˆme ligne est maintenant indi-&lt;br /&gt;
   qu‚e  par le PC et notre registre D0 contient maintenant la valeur&lt;br /&gt;
   $12345678. MONST  indique  tous  les chiffres en hexad‚cimal, vous&lt;br /&gt;
   commencez … comprendre l'int‚rˆt de la calculatrice...&lt;br /&gt;
&lt;br /&gt;
   Continuons  en refaisant Control+Z. C'est maintenant la ligne 3 de&lt;br /&gt;
   notre  programme  qui  est  indiqu‚e par le PC tandis que D1 s'est&lt;br /&gt;
   trouv‚ rempli par $00001012.&lt;br /&gt;
&lt;br /&gt;
   Continuons  avec Control+Z. L'addition entre D0 et D1 s'est effec-&lt;br /&gt;
   tu‚e. Comme  nous  l'avions  vu  dans le cours 2, les possibilit‚s&lt;br /&gt;
   sont  minimes  car  le  r‚sultat a ‚cras‚ l'ancienne valeur de D1.&lt;br /&gt;
   Pour  r‚aliser D0+D1=D2 il aurait d'abord fallu transf‚rer D1 dans&lt;br /&gt;
   D2 puis faire ADD.L  D0,D2.&lt;br /&gt;
&lt;br /&gt;
   Dans notre cas, D1 contient maintenant la valeur $1234668A.&lt;br /&gt;
&lt;br /&gt;
   Notre  programme  n'ayant  pas  v‚ritablement  de fin, quittons le&lt;br /&gt;
   artificiellement en tapant Control+C. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   SECOND PROGRAMME&lt;br /&gt;
&lt;br /&gt;
   Effacer le premier programme (alternate C) et tapez le suivant:&lt;br /&gt;
&lt;br /&gt;
          MOVE.L     #$12345678,D0&lt;br /&gt;
          MOVE.W     D0,D1&lt;br /&gt;
          MOVE.B     D1,D2&lt;br /&gt;
&lt;br /&gt;
   Nous  avons  vu  dans  Monst que D0-D7 ‚taient des registres assez&lt;br /&gt;
   grands. Nous avons r‚ussi … mettre $12345678 dans D0, ce qui donne&lt;br /&gt;
   quand  mˆme  305419896 en d‚cimal! En effet le 68000 est un micro-&lt;br /&gt;
   processeur  16/32 bits  ce  qui fait que ces registres ne sont pas&lt;br /&gt;
   cod‚s sur 16 bits mais sur 32.&lt;br /&gt;
&lt;br /&gt;
   32 bits, cela  fait  un  long  mot (Long Word). Dans notre premier&lt;br /&gt;
   programme, nous voulions que l'instruction MOVE agisse sur tout le&lt;br /&gt;
   registre  donc  sur  un  long mot, c'est pour cela que nous avions&lt;br /&gt;
   pr‚cis‚ .L aprŠs le move.&lt;br /&gt;
&lt;br /&gt;
   NOTE: Le vocabulaire est trŠs important et demande un petit effort&lt;br /&gt;
   au  d‚but. Ainsi  MOVE.L ne veut rien dire. Il convient de lire ce&lt;br /&gt;
   mn‚monique  (c'est  ainsi  que sont appel‚ les instructions assem-&lt;br /&gt;
   bleurs) MOVE  LONG. D'ailleurs  l'appellation  mn‚monique  (qui  a&lt;br /&gt;
   rapport  avec  la m‚moire, qui sert … aider la m‚moire) est … rap-&lt;br /&gt;
   procher  de  mn‚motechnique  (capable  d'aider  la m‚moire par des&lt;br /&gt;
   moyens  d'association  mentale  qui facilitent l'acquisition et la&lt;br /&gt;
   restitution des souvenirs /CF dictionnaire Le Robert). Autant donc&lt;br /&gt;
   lire  les  instructions en Anglais ce qui facilitera grandement la&lt;br /&gt;
   compr‚hension.&lt;br /&gt;
&lt;br /&gt;
   Puisque  notre  registre  D0 (comme les autres d'ailleurs) et cod‚&lt;br /&gt;
   sur  un  long  mot, il contient donc 2 words c“te-…-c“te. Pour les&lt;br /&gt;
   distinguer  nous appellerons celui de gauche word de poids fort et&lt;br /&gt;
   celui  de droite word de poids faible. Chacun de ces words est lui&lt;br /&gt;
   mˆme  compos‚  de  2 bytes, celui de gauche ‚tant de poids fort et&lt;br /&gt;
   celui  de  droite de poids faible. De poids faible car les change-&lt;br /&gt;
   ment qu'il peut apporter … la totalit‚ du nombre sont faible alors&lt;br /&gt;
   que les donn‚es de gauche (donc de poids fort) y apportent des va-&lt;br /&gt;
   riations importantes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   Assemblons notre programme et d‚buggons.&lt;br /&gt;
&lt;br /&gt;
   Ex‚cutons  la  premiŠre ligne. Le r‚sultat est le mˆme que pour le&lt;br /&gt;
   premier programme: le PC indique la seconde ligne, tandis que D0 …&lt;br /&gt;
   re‡u la valeur $12345678.&lt;br /&gt;
&lt;br /&gt;
   Maintenant ex‚cutons la seconde ligne. Que dit-elle ?&lt;br /&gt;
   MOVE.W   D0,D1&lt;br /&gt;
&lt;br /&gt;
   C'est-…-dire  d‚placer  le  contenu  de D0 pour le mettre dans D1.&lt;br /&gt;
   Mais  attention, le d‚placement doit se faire sur un word (pr‚cis‚&lt;br /&gt;
   par .W aprŠs le move. Cela se lit MOVE WORD). Or les op‚rations se&lt;br /&gt;
   font  toujours  sur  le  poids faible. Le MOVE va donc pr‚lever le&lt;br /&gt;
   word  de  poids  faible de D0 pour le mettre dans le word de poids&lt;br /&gt;
   faible de D1. Celui-ci va donc recevoir $5678. &lt;br /&gt;
&lt;br /&gt;
   Continuons  en  ex‚cutant  la  troisiŠme  ligne. Celle-ci demande:&lt;br /&gt;
   MOVE.B   D1,D2       (move byte d1 d2)&lt;br /&gt;
&lt;br /&gt;
   Donc transfert du byte de poids faible de D1 vers le byte de poids&lt;br /&gt;
   faible  de  D2. Regarder  bien les registres et les valeurs qu'ils&lt;br /&gt;
   re‡oivent!&lt;br /&gt;
&lt;br /&gt;
   Quittez maintenant le programme avec CONTROL+C&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   TROISIEME PROGRAMME&lt;br /&gt;
&lt;br /&gt;
          MOVE.L     #$12345678,D0&lt;br /&gt;
          MOVE.L     #$AAAAAAAA,D1&lt;br /&gt;
          MOVE.W     D0,D1&lt;br /&gt;
          SWAP       D0&lt;br /&gt;
          MOVE.W     D0,D2&lt;br /&gt;
&lt;br /&gt;
   On  efface  le  programme pr‚c‚dent, on tape celui-ci, on assemble&lt;br /&gt;
   puis on d‚bugue. L'ex‚cution de la premiŠre et de la seconde ligne&lt;br /&gt;
   ne doivent plus poser de problŠme.&lt;br /&gt;
&lt;br /&gt;
   Nous devons obtenir&lt;br /&gt;
   D0=12345678&lt;br /&gt;
   D1=AAAAAAAA&lt;br /&gt;
&lt;br /&gt;
   Ex‚cutons  maintenant la troisiŠme ligne. Il y a bien transfert du&lt;br /&gt;
   word  de  poids  faible  de D0 vers le word de poids faible de D1.&lt;br /&gt;
   Nous  constatons que le word de poids fort de D1 N'EST PAS AFFECTE&lt;br /&gt;
   par  ce  transfert, et qu'il reste tout … fait ind‚pendant du word&lt;br /&gt;
   de poids faible.&lt;br /&gt;
&lt;br /&gt;
   4Šme  ligne. Ce  mn‚monique 'SWAP' (To swap= ‚changer) va ‚changer&lt;br /&gt;
   les  16 bits de poids faible avec les 16 bits de poids fort. D0 va&lt;br /&gt;
   donc devenir 56781234.&lt;br /&gt;
&lt;br /&gt;
   DerniŠre  ligne. Transfert  du  word  de  poids  faible de D0 (qui&lt;br /&gt;
   maintenant  est 1234 et plus 5678) vers le word de poids faible de&lt;br /&gt;
   D2.&lt;br /&gt;
&lt;br /&gt;
   Nous  avons  vu que D0 contenait en fait 2 donn‚es et que ces don-&lt;br /&gt;
   n‚es ‚taient totalement ind‚pendantes. Ceci permet une grande sou-&lt;br /&gt;
   plesse  de travail mais demande aussi une grande rigueur car si au&lt;br /&gt;
   lieu  de  faire  MOVE.W  D0,D1 j'avais  juste  commis une faute de&lt;br /&gt;
   frappe en tapant MOVE.L  D0,D1 j'‚crasais le word de poids fort de&lt;br /&gt;
   D1 et  aprŠs  je  me serais ‚tonn‚ de trouver 1234 dans D1 … l'en-&lt;br /&gt;
   droit o— je devrais encore trouver AAAA.&lt;br /&gt;
&lt;br /&gt;
   Nous  voyons  tout  de  suite les ‚normes avantages de ce systŠme.&lt;br /&gt;
   Nous  n'avons  … notre disposition que 8 'poches' de donn‚es (D0 …&lt;br /&gt;
   D7) mais  si nous ne voulons garder que des words, nous pouvons en&lt;br /&gt;
   mettre  2 par  poche, c'est-…-dire  16 en  tout. De  mˆme si notre&lt;br /&gt;
   codage  ne se fait que sur des bytes, c'est 32 bytes que nous pou-&lt;br /&gt;
   vons  garder  (4 par poche). Cela peut paraŒtre assez ‚vident mais&lt;br /&gt;
   par  exemple sur l'ArchimŠde, ce n'est pas possible. Sur cette ma-&lt;br /&gt;
   chine, un registre contient un long word ou rien!&lt;br /&gt;
&lt;br /&gt;
   RESUM DE VOCABULAIRE&lt;br /&gt;
&lt;br /&gt;
   MOVE.L = move long&lt;br /&gt;
   MOVE.W = move word&lt;br /&gt;
   MOVE.B = move byte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   CONSEILS&lt;br /&gt;
   Prenez  votre  temps,  relisez  tranquillement  ce  cours  et  les&lt;br /&gt;
   pr‚c‚dents. Vous voyez ce n'est pas bien dur l'assembleur!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Back to [[ASM_Tutorial]]&lt;br /&gt;
[[Category: ASSEMBLEUR 68000 sur ATARI ST Part 1 ]]&lt;/div&gt;</summary>
		<author><name>&gt;Zorro 2</name></author>
	</entry>
</feed>