<?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_6.TXT</id>
	<title>COURS 6.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_6.TXT"/>
	<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=COURS_6.TXT&amp;action=history"/>
	<updated>2026-05-13T17:57:05Z</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_6.TXT&amp;diff=11530&amp;oldid=prev</id>
		<title>&gt;Zorro 2: Created page with &quot;&lt;pre&gt;    ******************************************************************    *                                                                *    *             COURS D'ASSEMBL...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=COURS_6.TXT&amp;diff=11530&amp;oldid=prev"/>
		<updated>2016-12-22T14:33:56Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;pre&amp;gt;    ******************************************************************    *                                                                *    *             COURS D&amp;#039;ASSEMBL...&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 6                         *&lt;br /&gt;
   *                                                                *&lt;br /&gt;
   ******************************************************************&lt;br /&gt;
&lt;br /&gt;
   LA  PILE    Nous  avons d‚j… utilis‚ la notion de 'tube' en ce qui&lt;br /&gt;
   concerne la m‚moire. Nous pouvons y stocker diff‚rentes choses, et&lt;br /&gt;
   si nous nous rappelons l'adresse, nous pouvons revenir plus tard …&lt;br /&gt;
   cet endroit pour y r‚cup‚rer ce que nous y avions d‚pos‚.&lt;br /&gt;
&lt;br /&gt;
   Essayez avec ce petit programme:&lt;br /&gt;
&lt;br /&gt;
          MOVE.L     #$12345678,D0&lt;br /&gt;
          MOVE.L     D0,$493E0&lt;br /&gt;
          MOVE.L     #0,D0&lt;br /&gt;
          MOVE.L     $493E0,D0&lt;br /&gt;
&lt;br /&gt;
   Assemblez  puis  passez  sous  MONST. Avancez en pas … pas. D0 est&lt;br /&gt;
   d'abord rempli avec $12345678, puis le contenu de D0 est transf‚r‚&lt;br /&gt;
   … l'adresse $493E0. Notez bien qu'il n'y a pas de # devant $493E0,&lt;br /&gt;
   afin d'indiquer qu'il s'agit bien d'une adresse. Cette ligne ‚tant&lt;br /&gt;
   ex‚cut‚e, activez  la fenˆtre 3 ([Alternate+3]) et placez le d‚but&lt;br /&gt;
   de  celle-ci sur l'adresse $493E0 ([Alternate+A] puis tapez 493E0)&lt;br /&gt;
   Vous  voyez  bien  12345678 …  cet endroit dans le 'tube'. Si j'ai&lt;br /&gt;
   choisit  cette  adresse c'est parce qu'elle se situe … 300 Kilo du&lt;br /&gt;
   d‚but  de la m‚moire. Elle est donc accessible mˆme sur un 520, et&lt;br /&gt;
   elle  est  suffisamment ‚loign‚e pour ne pas se trouver dans GENST&lt;br /&gt;
   ou MONST. En effet il n'y a qu'un 'tube' m‚moire! Nous sommes donc&lt;br /&gt;
   en  train d'‚crire dans la m‚moire alors qu'une partie de celle-ci&lt;br /&gt;
   est occup‚e par GENST et MONST! Ecrire … l'int‚rieur des zones oc-&lt;br /&gt;
   cup‚es  par  ces  programmes  est possible, ce qui entraŒnera trŠs&lt;br /&gt;
   certainement quelques plantages de ceux-ci!&lt;br /&gt;
&lt;br /&gt;
   Continuons  en  pas  … pas, nous mettons D0 … 0 puis le contenu de&lt;br /&gt;
   l'adresse $493E0 (sans #) est remis dans D0.&lt;br /&gt;
&lt;br /&gt;
   La  pile, c'est  une partie de ce tube, mais que nous allons g‚rer&lt;br /&gt;
   d'une  maniŠre  un peu diff‚rente. En effet, au lieu de placer les&lt;br /&gt;
   donn‚es dans le tube et de noter leurs adresses, nous allons cette&lt;br /&gt;
   fois-ci les empiler et pour les r‚cup‚rer, les d‚piler. L'avantage&lt;br /&gt;
   c'est  le  gain  de  temps  (pas  la peine de se demander … quelle&lt;br /&gt;
   adresse  on  a  stock‚  les donn‚es) et un gain de place (si c'est&lt;br /&gt;
   pour  stocker temporairement des donn‚es, inutile de conserver une&lt;br /&gt;
   portion de 'tube' juste pour ‡a).&lt;br /&gt;
&lt;br /&gt;
   Par  contre  l'inconv‚nient  c'est que la gestion doit ˆtre rigou-&lt;br /&gt;
   reuse. Imaginons  que  j'empile  un premier chiffre puis 10 autres&lt;br /&gt;
   par  dessus. Ensuite  je  d‚pile, mais  erreur  de  ma part, je ne&lt;br /&gt;
   d‚pile  que  9 chiffres! Quand  je  d‚pilerai  une  fois  de plus,&lt;br /&gt;
   croyant  retrouver  le  premier  chiffre empil‚, je r‚cup‚rerai en&lt;br /&gt;
   fait le premier de la s‚rie de 10.&lt;br /&gt;
&lt;br /&gt;
   Nous  en concluons 2 choses: d'abord que la pile est un moyen sim-&lt;br /&gt;
   ple  pour  sauvegarder  des  donn‚es, mais  ensuite  que c'est une&lt;br /&gt;
   source de d‚sagr‚ment potentiel, tel que certains programmeurs h‚-&lt;br /&gt;
   site  … s'en servir. C'est g‚n‚ralement … cause d'un manque de ri-&lt;br /&gt;
   gueur ce qui, je l'espŠre ne vous arrivera pas.&lt;br /&gt;
&lt;br /&gt;
   Une autre remarque: le dernier ‚l‚ment plac‚ sur la pile sera tou-&lt;br /&gt;
   jours  le premier … en sortir. C'est bien le mˆme principe que ce-&lt;br /&gt;
   lui  d'une  pile  d'assiettes: Regardez chez vous, il y a s–rement&lt;br /&gt;
   une ‚norme pile d'assiettes, mais par le simple fait que le range-&lt;br /&gt;
   ment  aprŠs  le lavage se fait par empilage et que mettre la table&lt;br /&gt;
   se  fait par d‚pilage, vous mangez en fait toujours dans les mˆmes&lt;br /&gt;
   assiettes... (d'o— l'int‚rˆt de bien faire la vaisselle!)&lt;br /&gt;
&lt;br /&gt;
   Cette  structure  de pile est appel‚e structure LIFO, c'est-…-dire&lt;br /&gt;
   Last In  First Out, en  Fran‡ais:  'dernier entr‚  premier sorti'.&lt;br /&gt;
   Cette  structure  est diff‚rente d'une autre structure fr‚quemment&lt;br /&gt;
   rencontr‚e en informatique, celle de la file, appel‚e aussi struc-&lt;br /&gt;
   ture  FIFO  (First In  First Out), la  file  ‚tant similaire … une&lt;br /&gt;
   file  d'attente devant un guichet: le premier dans la file sera le&lt;br /&gt;
   premier parti.&lt;br /&gt;
&lt;br /&gt;
   Mais  concrŠtement, …  quoi sert la pile? Nous allons le voir avec&lt;br /&gt;
   un exemple. Tapez le programme suivant:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
          MOVE.L     #$12345678,D0&lt;br /&gt;
          MOVE.L     #$BD88,D1&lt;br /&gt;
          MOVE.L     #$BD88,A0&lt;br /&gt;
          BSR        AJOUTE&lt;br /&gt;
          MOVE.L     #0,D0&lt;br /&gt;
          MOVE.L     D2,D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AJOUTE    MOVE.L     #$11112222,D2&lt;br /&gt;
          ADD.L      D1,D2&lt;br /&gt;
          RTS&lt;br /&gt;
&lt;br /&gt;
   PremiŠre remarque: ce programme diffŠre des pr‚c‚dents par le fait&lt;br /&gt;
   que nous utilisons une ‚tiquette, un label qui se nomme AJOUTE.&lt;br /&gt;
&lt;br /&gt;
   Ce mot, 'AJOUTE', doit se trouver tout … gauche, contre le bord de&lt;br /&gt;
   la  fenˆtre de l'‚diteur. Ce n'est pas quelque chose … placer DANS&lt;br /&gt;
   le tube mais bien une marque A COTE du tube.&lt;br /&gt;
&lt;br /&gt;
   Autre remarque, les listings en assembleur, contrairement aux lis-&lt;br /&gt;
   tings dans les autres langages sont assez libres au niveau pr‚sen-&lt;br /&gt;
   tation. Il  est  tout a fait possible de passer des lignes, ce qui&lt;br /&gt;
   est  fait  ici  pour s‚parer les 2 parties. Les sources assembleur&lt;br /&gt;
   sont bien souvent trŠs longs, et mˆme si cela fait perdre quelques&lt;br /&gt;
   lignes, espacer  les  modules  permet  de s'y retrouver plus faci-&lt;br /&gt;
   lement.&lt;br /&gt;
&lt;br /&gt;
   Assemblons  puis d‚buggons. Avan‡ons pas … pas avec Control+Z. Les&lt;br /&gt;
   3 premiŠres  lignes  nous  sont  familiŠres mais pas la quatriŠme.&lt;br /&gt;
   Celle-ci  se  lit BRANCH SUB ROUTINE AJOUTE, c'est-…-dire branche-&lt;br /&gt;
   ment … une subroutine nomm‚e AJOUTE. Pour pr‚ciser vers quelle su-&lt;br /&gt;
   broutine  on d‚sire se diriger, son ‚tiquette est pr‚cis‚e. Ici en&lt;br /&gt;
   l'occurrence  c'est  AJOUTE mais le nom importe peu. Il est tout a&lt;br /&gt;
   fait  possible  de  mettre  des noms assez longs et je ne peux que&lt;br /&gt;
   vous  conseiller d'‚viter dans vos listings les noms du genre X Y,&lt;br /&gt;
   Z  ou  encore  AX1 etc... qui sont quand mˆme moins explicites que&lt;br /&gt;
   DEBUT_IMAGE, NEW_PALETTE ou bien END_GAME.&lt;br /&gt;
&lt;br /&gt;
   Maintenant soyez trŠs attentifs: … la lecture de cette instruction&lt;br /&gt;
   de nombreuses choses vont se passer. L'ordre demande donc au 68000&lt;br /&gt;
   de  poursuivre  la  lecture  de  ses  instructions  dans  un  sous&lt;br /&gt;
   programme  dont  le d‚but se situe dans le tube, en face de l'‚ti-&lt;br /&gt;
   quette  AJOUTE. Cependant  il s'agit bien ici d'un sous-programme.&lt;br /&gt;
   Ceci suppose qu'une fois termin‚, le 68000 remontera pour ex‚cuter&lt;br /&gt;
   la ligne qui suit BSR AJOUTE, en l'occurrence  MOVE.L #0,D0. Ques-&lt;br /&gt;
   tion: comment  le 68000 saura-t-il o— remonter? En effet le propre&lt;br /&gt;
   d'une  subroutine est de pouvoir ˆtre appel‚e plusieurs fois et de&lt;br /&gt;
   plusieurs  endroits diff‚rents et de pouvoir … chaque fois revenir&lt;br /&gt;
   … l'endroit mˆme qui l'a appel‚.&lt;br /&gt;
&lt;br /&gt;
   Eh  bien le 68000 va justement utiliser la pile pour noter ce lieu&lt;br /&gt;
   de  retour. Cette pile a bien sur une adresse, o— se trouve-t-elle&lt;br /&gt;
   not‚e? En  A7. Et  oui, ce registre un peu sp‚cial correspond … la&lt;br /&gt;
   pile.&lt;br /&gt;
&lt;br /&gt;
   Mais  A7' alors?  Et  bien  c'est aussi une pile, mais r‚serv‚e au&lt;br /&gt;
   mode  Superviseur. Ainsi  si nous faisions tourner conjointement 2&lt;br /&gt;
   programmes, l'un  en  mode  utilisateur et l'autre en superviseur,&lt;br /&gt;
   chacun aurait sa pile.&lt;br /&gt;
&lt;br /&gt;
   Avant  d'ex‚cuter la ligne BSR AJOUTE, observons attentivement les&lt;br /&gt;
   registres d'adresses et les registres de donn‚es.&lt;br /&gt;
&lt;br /&gt;
   Nous  avons  vu  que  les  registres, qu'ils  soient de donn‚es ou&lt;br /&gt;
   d'adresse, peuvent  contenir  des  nombres cod‚s sur 32 bits. Nous&lt;br /&gt;
   avons vu aussi qu'il existait 2 sortes de nombres pour la machine:&lt;br /&gt;
   ceux  se  trouvant  …  l'int‚rieur du 'tube' et ceux ce trouvant …&lt;br /&gt;
   l'ext‚rieur, CONTRE  ce  tube, et  indiquant une sorte de distance&lt;br /&gt;
   par rapport au d‚but de celui-ci.&lt;br /&gt;
&lt;br /&gt;
   Ce second type de nombre est appel‚ adresse. Or il est tout … fait&lt;br /&gt;
   possible  de  stocker  un  nombre repr‚sentant une adresse dans un&lt;br /&gt;
   registre de donn‚es (D0-D7). Imaginons maintenant que nous devions&lt;br /&gt;
   stocker  le score d'un joueur dans le jeu que nous programmons. Ce&lt;br /&gt;
   score va par exemple ˆtre plac‚ dans la m‚moire (dans le 'tube') …&lt;br /&gt;
   l'adresse $80792.&lt;br /&gt;
&lt;br /&gt;
   Mais  que  se  passera-t-il si nous transf‚rons cette adresse pour&lt;br /&gt;
   l'utiliser grƒce … A1 par exemple? et bien A1 va prendre la valeur&lt;br /&gt;
   $80792. C'est  bien joli, mais ce qui nous int‚resse, ce n'est pas&lt;br /&gt;
   ‡a! Ce  que nous voulons modifier, v‚rifier etc.. c'est ce qu'il y&lt;br /&gt;
   a DANS le tube … cette adresse.&lt;br /&gt;
&lt;br /&gt;
   Et  bien  notre  d‚bugger anticipe un peu cette demande. En effet,&lt;br /&gt;
   partant du principe que les nombres stock‚s en D0-D7 ou A0-A6 peu-&lt;br /&gt;
   vent repr‚senter des valeurs d'adresses, il indique … c“t‚ des re-&lt;br /&gt;
   gistres, ce  qu'il  y a dans le tube, … l'adresse indiqu‚e dans le&lt;br /&gt;
   registre.&lt;br /&gt;
&lt;br /&gt;
   En  ce qui concerne les registres de donn‚es, MONST affiche … leur&lt;br /&gt;
   droite  la valeur de 8 octets se trouvant dans le tube … l'adresse&lt;br /&gt;
   indiqu‚e  dans  le registre. Pour les registres d'adresse, ce sont&lt;br /&gt;
   10 octets  qui  sont  indiqu‚s. Vous  remarquez certainement qu'en&lt;br /&gt;
   face du registre D0 (qui doit contenir $12345678 si vous avez fait&lt;br /&gt;
   correctement  avancer  le  programme), MONST  n'a  affich‚ que des&lt;br /&gt;
   ‚toiles. C'est  normal car le nombre $12345678 correspond … un em-&lt;br /&gt;
   placement  m‚moire  qui  se  serait accessible qu'avec 305 m‚ga de&lt;br /&gt;
   m‚moire!!! MONST  indique  donc  qu'il ne peut pas atteindre cette&lt;br /&gt;
   zone m‚moire en affichant des ‚toiles.&lt;br /&gt;
&lt;br /&gt;
   Regardons  maintenant  D1 et  A0. Les nombres situ‚s … leur droite&lt;br /&gt;
   montrent  la mˆme chose, ce qui est normal puisque les 2 registres&lt;br /&gt;
   D1 et  A0 sont remplis avec le mˆme nombre. On dit qu'ils pointent&lt;br /&gt;
   sur  l'adresse  $BD88. Allons voir en m‚moire histoire de v‚rifier&lt;br /&gt;
   l'affichage. Activez  la fenˆtre 3 avec Alternate+3. Celle-ci nous&lt;br /&gt;
   affiche le contenu de la m‚moire, mais nous sommes loin de $BD88!&lt;br /&gt;
&lt;br /&gt;
   Demandons  donc que cette adresse soit celle du haut de la fenˆtre&lt;br /&gt;
   3, avec Alternate+A. Tapons cette adresse (BD88). La fenˆtre 3  se&lt;br /&gt;
   r‚ affiche avec en haut l'adresse $BD88. Dans la colonne de droite&lt;br /&gt;
   nous  voyons  le  contenu  de la m‚moire, dont nous avions d‚j… un&lt;br /&gt;
   aper‡u avec l'affichage … droite de D1 et de A0. C'est clair?&lt;br /&gt;
&lt;br /&gt;
   R‚activons  la fenˆtre 1 (alternate+1). Normalement la petite flŠ-&lt;br /&gt;
   che  doit  toujours  se  trouvez  en  face du BSR AJOUTE. Noter le&lt;br /&gt;
   chiffre  se  trouvant  dans  le  registre A7 (donc l'adresse de la&lt;br /&gt;
   pile) et  observer bien les chiffres … droite de ce registre, tout&lt;br /&gt;
   en faisant Control+Z.&lt;br /&gt;
&lt;br /&gt;
   Les  chiffres  ont chang‚! D'abord le registre A7 ne contient plus&lt;br /&gt;
   le  mˆme  nombre. Celui  qui  s'y trouve actuellement est en effet&lt;br /&gt;
   plus petit que le pr‚c‚dent. Notons que cette diff‚rence est de 4.&lt;br /&gt;
   L'adresse  de  la  pile  a  donc ‚t‚ d‚cr‚ment‚e de 4. De plus des&lt;br /&gt;
   chiffres  ont  ‚t‚  plac‚s  dans  la pile (on les voit … droite du&lt;br /&gt;
   registre  A7). Or, regardez  bien  le  nombre  qui est … gauche de&lt;br /&gt;
   l'instruction   MOVE.L  #0,D0  de  notre  programme,  c'est-…-dire&lt;br /&gt;
   l'adresse … laquelle devra revenir le 68000 une fois la subroutine&lt;br /&gt;
   termin‚e: c'est  bien ce nombre qui a ‚t‚ plac‚ dans la pile. Il y&lt;br /&gt;
   a  donc empilage de l'adresse de retour, ce qui explique ‚galement&lt;br /&gt;
   le  changement d'adresse de la pile de 4. En effet une adresse est&lt;br /&gt;
   cod‚e sur 4 octets !&lt;br /&gt;
&lt;br /&gt;
   Note: ‚tant  donn‚  que  nous parlons de pile, on dit plus souvent&lt;br /&gt;
   que  les  donn‚es  sont mises sur la pile et moins souvent dans la&lt;br /&gt;
   pile.&lt;br /&gt;
&lt;br /&gt;
   Continuons  notre programme avec Control+Z. Nous sommes maintenant&lt;br /&gt;
   dans  la  sous-routine. Arrˆtez  juste avant RTS. C'est cette ins-&lt;br /&gt;
   truction qui va nous faire &amp;quot;remonter&amp;quot;. Elle se lit RETURN FROM SUB&lt;br /&gt;
   ROUTINE.&lt;br /&gt;
&lt;br /&gt;
   Observons  A7 (sa  valeur  mais aussi le contenu du 'tube' … cette&lt;br /&gt;
   adresse) et faisons un pas (Control+Z). L'adresse de retour a ‚t‚&lt;br /&gt;
   d‚pil‚e, A7 a repris son ancienne adresse et nous pointons mainte-&lt;br /&gt;
   nant sur MOVE.L  #0,D0.&lt;br /&gt;
&lt;br /&gt;
   Quittez ce programme avec Control+C, effacez le et tapez celui-ci.&lt;br /&gt;
&lt;br /&gt;
          MOVE.L     #$12345678,D0&lt;br /&gt;
          MOVE.L     #$AAAAAAAA,D1&lt;br /&gt;
          BSR        AJOUTE&lt;br /&gt;
          MOVE.W     D2,D3&lt;br /&gt;
&lt;br /&gt;
AJOUTE    MOVE.W     #$EEEE,D1&lt;br /&gt;
          MOVE.W     #$1111,D2&lt;br /&gt;
          ADD.W      D1,D2&lt;br /&gt;
          RTS&lt;br /&gt;
&lt;br /&gt;
   Assemblez  puis  d‚buggez. Avancez  pas  … pas: D0 prend la valeur&lt;br /&gt;
   $12345678 D1 la valeur AAAAAAAA, puis nous partons vers la subrou-&lt;br /&gt;
   tine AJOUTE.&lt;br /&gt;
&lt;br /&gt;
   Malheureusement  celle-ci  utilise D1 et au retour nous constatons&lt;br /&gt;
   que  celui-ci ne contient plus AAAAAAAA. En effet le branchement …&lt;br /&gt;
   une  subroutine  ne sauve rien d'autre que l'adresse de retour, et&lt;br /&gt;
   en assembleur les variables locales et autres bidouilles de langa-&lt;br /&gt;
   ges ‚volu‚s n'existent pas! C'est donc … nous de sauver les regis-&lt;br /&gt;
   tres, et c'est ce que nous allons faire maintenant.&lt;br /&gt;
&lt;br /&gt;
   Note: le  registre  A7 contenant  l'adresse  du  sommet de la pile&lt;br /&gt;
   (cette  adresse  variant bien s–r avec l'empilage et le d‚pilage),&lt;br /&gt;
   on  peut  consid‚rer cette adresse comme un doigt indiquant perp‚-&lt;br /&gt;
   tuellement  le sommet de la pile. Pour cette raison le registre A7&lt;br /&gt;
   est aussi appel‚ pointeur de pile. Comme toujours nous utiliserons&lt;br /&gt;
   le vocabulaire anglo-saxon, et nous dirons Stack Pointer, en abr‚-&lt;br /&gt;
   g‚  SP. Pour  cette raison et parce que l'usage en est ainsi, nous&lt;br /&gt;
   remplacerons  d‚sormais A7 par SP (qui ne se lit pas &amp;quot;Šss-p‚&amp;quot; mais&lt;br /&gt;
   bien STACK POINTER!!!).&lt;br /&gt;
&lt;br /&gt;
   Imaginons  que  nous  voulions sauvegarder D0 … l'entr‚e de la su-&lt;br /&gt;
   broutine:&lt;br /&gt;
&lt;br /&gt;
                      Il  ne  faudra pas oublier de le r‚cup‚rer … la&lt;br /&gt;
   sortie! D‚pla‡ons  donc  le  contenu  de D0 vers la pile. Essayons&lt;br /&gt;
   MOVE.L  D0,SP  et  r‚fl‚chissons: Ceci  va mettre le contenu de D0&lt;br /&gt;
   dans  A7, malheureusement  ce n'est pas ce que nous voulons faire.&lt;br /&gt;
   En  effet  nous  d‚sirons  mettre le contenu de D0 DANS le tube, …&lt;br /&gt;
   l'endroit indiqu‚ par A7 (donc SP).&lt;br /&gt;
&lt;br /&gt;
   Ceci  va se faire avec  MOVE.L  D0,(SP) ,les parenthŠses indiquant&lt;br /&gt;
   que la source de l'op‚ration c'est l'int‚rieur du tube.&lt;br /&gt;
&lt;br /&gt;
   Effacez le programme actuel et tapez le suivant.&lt;br /&gt;
&lt;br /&gt;
          MOVE.L     #$12345678,D0&lt;br /&gt;
          MOVE.L     D0,(A0)&lt;br /&gt;
          MOVE.W     D0,(A1)&lt;br /&gt;
&lt;br /&gt;
   Assemblez  puis  comme  d'habitude  d‚buggez. D0 prend  la  valeur&lt;br /&gt;
   $12345678, puis  D0 est  transf‚r‚ dans sa totalit‚ (… cause du .L&lt;br /&gt;
   qui  indique que l'op‚ration se passe sur un mot long) … l'adresse&lt;br /&gt;
   qui est not‚e dans A0, ensuite le poids faible de D0 est transf‚r‚&lt;br /&gt;
   dans  le  tube  …  l'adresse  not‚e  en A1. Pour le v‚rifier, vous&lt;br /&gt;
   pouvez  activer  la fenˆtre 3 et demander … placer l'adresse not‚e&lt;br /&gt;
   dans  A0 en haut de cette fenˆtre, et vous constaterez qu'effecti-&lt;br /&gt;
   vement la valeur de D0 se trouve bien dans le 'tube'.&lt;br /&gt;
&lt;br /&gt;
   Nous allons donc utiliser ce type de transfert pour sauvegarder D0&lt;br /&gt;
&lt;br /&gt;
   Mais  r‚fl‚chissons encore un peu. MOVE.L   D0,(SP) va bien placer&lt;br /&gt;
   le  contenu du long mot D0 dans le tube, mais si nous voulons pla-&lt;br /&gt;
   cer  une  autre valeur sur la pile, celle-ci va ‚craser notre pre-&lt;br /&gt;
   miŠre  valeur  car  avec  MOVE.L  D0,(SP) l'adresse indiqu‚ par SP&lt;br /&gt;
   (donc A7) ne va pas ˆtre modifi‚e, ce qui devrait ˆtre le cas.&lt;br /&gt;
&lt;br /&gt;
   Nous  allons donc r‚aliser le transfert diff‚remment (en fait nous&lt;br /&gt;
   allons  encore  am‚liorer  notre  vocabulaire, puisque nous allons&lt;br /&gt;
   parler maintenant de type ou de mode d'adressage).&lt;br /&gt;
&lt;br /&gt;
   Nous allons faire&lt;br /&gt;
          MOVE.L     D0,-(SP)&lt;br /&gt;
&lt;br /&gt;
   C'est le mode d'adressage avec pr‚-d‚cr‚mentation. DerriŠre ce vo-&lt;br /&gt;
   cabulaire  pompeux  se  cache toute une suite d'‚v‚nements. En une&lt;br /&gt;
   seul  instruction, nous diminuons l'adresse du pointeur de pile de&lt;br /&gt;
   4 (puisque dans notre exemple nous voulions transf‚rer un long mot&lt;br /&gt;
   donc 4 octets), et nous pla‡ons en m‚moire … cette adresse le long&lt;br /&gt;
   mot D0.&lt;br /&gt;
&lt;br /&gt;
   Pour r‚cup‚rer D0, c'est-…-dire d‚piler, il faudra faire:&lt;br /&gt;
&lt;br /&gt;
          MOVE.L     D0,(SP)+&lt;br /&gt;
&lt;br /&gt;
   Comme  nous avions d‚cr‚ment‚ le pointeur de pile pour ensuite d‚-&lt;br /&gt;
   poser D0 … cette adresse, nous r‚cup‚rons donc D0 sans oublier en-&lt;br /&gt;
   suite  de  modifier  le  pointeur  de pile dans l'autre sens, pour&lt;br /&gt;
   qu'il  retrouve son ancienne position. Notons que dans le cas pr‚-&lt;br /&gt;
   sent, et  si  nous nous contentons de r‚fl‚chir trŠs sommairement,&lt;br /&gt;
   il  aurait ‚t‚ possible de sauver D0 par  MOVE.L  D0,(SP) et de le&lt;br /&gt;
   r‚cup‚rer  par MOVE.L  (SP),D0.  C'est compter sans le fait que la&lt;br /&gt;
   pile est un r‚servoir commun … beaucoup de choses. Il faut donc de&lt;br /&gt;
   pr‚f‚rence jouer … chaque fois le jeu d'un empilage correct et r‚-&lt;br /&gt;
   fl‚chi  mais aussi d'un d‚pilage 'collant' parfaitement avec l'em-&lt;br /&gt;
   pilage pr‚c‚dent.&lt;br /&gt;
&lt;br /&gt;
   V‚rifions tout cela avec l'exemple suivant:&lt;br /&gt;
          MOVE.L     #$12345678,D0 valeur dans D0&lt;br /&gt;
          MOVE.W     #$AAAA,D1     valeur dans D1&lt;br /&gt;
          MOVE.L     D0,-(SP)      sauve D0.L sur la pile&lt;br /&gt;
          MOVE.W     D1,-(SP)      idem D1 mais en word&lt;br /&gt;
          MOVE.L     #0,D0         remet D0 … 0&lt;br /&gt;
          MOVE.W     #0,D1         et D1 aussi&lt;br /&gt;
          MOVE.W     D1,(SP)+      r‚cupŠre D1 (word)&lt;br /&gt;
          MOVE.L     D0,-(SP)      puis D0&lt;br /&gt;
&lt;br /&gt;
   Assemblez  puis  faites d‚filer ce programme pas … pas sous MONST.&lt;br /&gt;
   Notez  plusieurs  choses: tout  d'abord  des  commentaires ont ‚t‚&lt;br /&gt;
   ajout‚s  au  source. Il suffit que ceux-ci soient s‚par‚s des op‚-&lt;br /&gt;
   randes  pour  que l'assembleur sache qu'il s'agit de commentaires.&lt;br /&gt;
   Si  vous d‚sirez taper une ligne de commentaires (c'est-…-dire que&lt;br /&gt;
   sur  celle-ci  il  n'y aura rien d'autre que ce commentaire), vous&lt;br /&gt;
   devez le faire pr‚c‚der du caractŠre ‚toile ou d'un point virgule.&lt;br /&gt;
&lt;br /&gt;
   Seconde  chose, nous  avions empil‚ D0 puis D1, ensuite nous avons&lt;br /&gt;
   d‚pil‚ D1 puis D0. Il faut en effet bien faire attention … l'ordre&lt;br /&gt;
   et  aux  tailles  de ce que nous empilons, afin de pouvoir d‚piler&lt;br /&gt;
   les mˆmes tailles, dans l'ordre inverse de l'empilage.&lt;br /&gt;
&lt;br /&gt;
   Voici un dernier exemple.&lt;br /&gt;
          MOVE.L     #$12345678,D0&lt;br /&gt;
          BSR        AJOUTE     saut vers subroutine&lt;br /&gt;
          MOVE.L     D0,D1      transfert&lt;br /&gt;
&lt;br /&gt;
AJOUTE    MOVE.L     D0,-(SP)   sauve d0.l sur la pile&lt;br /&gt;
          MOVE.W     #8,D0&lt;br /&gt;
          MOVE.W     #4,D1&lt;br /&gt;
          ADD.W      D0,D1&lt;br /&gt;
          MOVE.L     (SP)+,D0&lt;br /&gt;
          RTS&lt;br /&gt;
&lt;br /&gt;
   Assemblez  puis  suivez le d‚roulement sous MONST en ‚tudiant bien&lt;br /&gt;
   le  d‚roulement. Vous voyez bien que le BSR sauve l'adresse de re-&lt;br /&gt;
   tour  sur la pile, puis que D0 et mis par dessus pour ˆtre ensuite&lt;br /&gt;
   r‚cup‚r‚.  Ensuite c'est l'adresse de retour qui est reprise et le&lt;br /&gt;
   programme remonte.&lt;br /&gt;
&lt;br /&gt;
   Maintenant, provoquons  une  erreur, une  toute petite erreur mais&lt;br /&gt;
   qui  sera fatale … notre programme. Au lieu de r‚cup‚rer D0 par un&lt;br /&gt;
   MOVE.L    (SP)+,D0, commettons  une faute de frappe et tapons … la&lt;br /&gt;
   place MOVE.W   (SP)+,D0.&lt;br /&gt;
&lt;br /&gt;
   Assemblez  et  suivez pas … pas. Au moment de la sauvegarde de D0,&lt;br /&gt;
   ce  sont bien 4 octets qui vont ˆtre plac‚s sur la pile, modifiant&lt;br /&gt;
   celle-ci  d'autant. Malheureusement  la  r‚cup‚ration ne va re-mo-&lt;br /&gt;
   difier  cette pile que de 2 octets. Au moment o— l'instruction RTS&lt;br /&gt;
   va  essayer  de r‚cup‚rer l'adresse de retour, le pointeur de pile&lt;br /&gt;
   sera faux de 2 octets par rapport … l'endroit o— se trouve r‚elle-&lt;br /&gt;
   ment  cette  adresse  de  retour, et  celui-ci  va  se faire … une&lt;br /&gt;
   adresse fausse. En conclusion: prudence et rigueur!!!!!!&lt;br /&gt;
&lt;br /&gt;
   Nous  venons  donc de voir que la pile ‚tait utilis‚e par le 68000&lt;br /&gt;
   pour  certaines  instructions, et qu'elle ‚tait bien commode comme&lt;br /&gt;
   sauvegarde.&lt;br /&gt;
&lt;br /&gt;
   Il  est aussi possible de l'utiliser pour transmettre des donn‚es,&lt;br /&gt;
   c'est ce que nous allons voir pour conclure ce chapitre.&lt;br /&gt;
&lt;br /&gt;
   ProblŠme: Notre  programme principal utilise les registres A0 … A6&lt;br /&gt;
   et  D0 … D6. Il va appeler une subroutine destin‚e … additionner 2&lt;br /&gt;
   nombres  et … retourner le r‚sultat dans D7. Il faudra donc utili-&lt;br /&gt;
   ser  2 registres  par  exemple D0 et D1 pour travailler dans notre&lt;br /&gt;
   routine, et donc les sauvegarder … l'entr‚e de celle-ci.&lt;br /&gt;
&lt;br /&gt;
   Voici le d‚but du programme.&lt;br /&gt;
&lt;br /&gt;
          MOVE.L     #$11111111,D0&lt;br /&gt;
          MOVE.L     #$22222222,D1&lt;br /&gt;
          MOVE.L     #$33333333,D2&lt;br /&gt;
          MOVE.L     #$44444444,D3&lt;br /&gt;
          MOVE.L     #$55555555,D4&lt;br /&gt;
          MOVE.L     #$66666666,D5&lt;br /&gt;
          MOVE.L     #$77777777,D6&lt;br /&gt;
&lt;br /&gt;
   Les  7 premiers  registres  sont  remplis avec des valeurs bidons,&lt;br /&gt;
   juste  pour nous permettre de v‚rifier leurs ‚ventuelles modifica-&lt;br /&gt;
   tions.&lt;br /&gt;
&lt;br /&gt;
   Maintenant  il  faut placer les 2 nombres que nous d‚sirions addi-&lt;br /&gt;
   tionner, dans un endroit tel qu'ils pourront ˆtre r‚cup‚r‚s par la&lt;br /&gt;
   routine d'addition. Pla‡ons donc ces 2 nombres sur la pile.&lt;br /&gt;
&lt;br /&gt;
          MOVE.L     #$12345678,-(SP)&lt;br /&gt;
          MOVE.L     #$00023456,-(SP)&lt;br /&gt;
          BSR        AJOUTE            et en route !&lt;br /&gt;
&lt;br /&gt;
   R‚digeons  maintenant  notre subroutine, afin de suivre l'ordre de&lt;br /&gt;
   travail du 68000.&lt;br /&gt;
&lt;br /&gt;
       De quoi aurons nous besoin dans cette routine ?&lt;br /&gt;
&lt;br /&gt;
       De  D0 et  de  D1 qui vont recevoir les nombres empil‚s et qui&lt;br /&gt;
   vont nous servir au calcul. Il va nous falloir ‚galement un regis-&lt;br /&gt;
   tre  d'adresse. En  effet, lorsque nous allons d‚piler nous allons&lt;br /&gt;
   modifier le pointeur de pile, or nous venons d'effectuer un BSR le&lt;br /&gt;
   68000 a  donc  empil‚ l'adresse de retour sur la pile, et modifier&lt;br /&gt;
   celle-ci  va  compromettre  le  retour! Nous  allons  donc  copier&lt;br /&gt;
   l'adresse de la pile dans A0, et utiliser cette copie. &lt;br /&gt;
&lt;br /&gt;
   Note: j'ai  d‚cid‚ d'utiliser D0, D1 et A0 mais n'importe quel au-&lt;br /&gt;
   tre registre aurait tout aussi bien convenu.&lt;br /&gt;
&lt;br /&gt;
   Commen‡ons donc par sauver nos 3 registres.&lt;br /&gt;
&lt;br /&gt;
   Cela pourrait se faire par:&lt;br /&gt;
&lt;br /&gt;
          MOVE.L     D0,-(SP)&lt;br /&gt;
          MOVE.L     D1,-(SP)&lt;br /&gt;
          MOVE.L     A0,-(SP)&lt;br /&gt;
&lt;br /&gt;
   Note: je rappelle que cela se lit move long!&lt;br /&gt;
&lt;br /&gt;
   Mais  le  68000 possŠde  une instruction trŠs utile dans un pareil&lt;br /&gt;
   cas, qui permet de transf‚rer plusieurs registres d'un coup.&lt;br /&gt;
&lt;br /&gt;
   Nous allons donc faire:&lt;br /&gt;
&lt;br /&gt;
          MOVEM.L    D0-D1/A0,-(SP)&lt;br /&gt;
&lt;br /&gt;
   Ce qui se lit: move multiple registers.&lt;br /&gt;
&lt;br /&gt;
   Si nous devions transf‚rer de D0 … D5 nous aurions fait :&lt;br /&gt;
&lt;br /&gt;
          MOVEM.L  D0-D5,-(SP)&lt;br /&gt;
&lt;br /&gt;
   et, pour transf‚rer tous les registres d'un seul coup:&lt;br /&gt;
&lt;br /&gt;
          MOVEM.L D0-D7/a0-A6,-(SP)        Compris?&lt;br /&gt;
&lt;br /&gt;
   Sauvons  maintenant  l'adresse  de  la  pile  dans A0. Comme c'est&lt;br /&gt;
   l'adresse  qu'il  faut  sauver et non pas le contenu, cela se fait&lt;br /&gt;
   par:&lt;br /&gt;
          MOVE.L     A7,A0      transfert du registre A7 vers A0&lt;br /&gt;
&lt;br /&gt;
   Maintenant nous allons r‚cup‚rer les 2 nombres que nous avions em-&lt;br /&gt;
   pil‚ avant l'instruction BSR.&lt;br /&gt;
&lt;br /&gt;
   Imaginons  ce qui s'est pass‚. (A ce propos je vous conseille TRES&lt;br /&gt;
   fortement  de vous aider d'un papier et d'un crayon. N'h‚sitez pas&lt;br /&gt;
   … ‚crire sur ces cours. Ce sont les v“tres et je ne les r‚clamerai&lt;br /&gt;
   pas!&lt;br /&gt;
&lt;br /&gt;
   Faire  un  petit  dessin  ou de placer des piŠces sur votre bureau&lt;br /&gt;
   pour  vous  aider … comprendre est une excellente chose. Bien sou-&lt;br /&gt;
   vent  les manipulations de m‚moire ont tendance … devenir abstrai-&lt;br /&gt;
   tes et un petit dessin arrange bien des choses!)&lt;br /&gt;
&lt;br /&gt;
   Nous  avons d‚cal‚ de 4 octets le STACK POINTER, puis nous y avons&lt;br /&gt;
   d‚pos‚ $12345678. Mais dans quel sens avons nous d‚cal‚ ce SP ?&lt;br /&gt;
&lt;br /&gt;
   Vers  le d‚but de la m‚moire, vers l'adresse 0 de notre tube puis-&lt;br /&gt;
   que  nous  avons  fait  -(SP). Le pointeur de pile remonte donc le&lt;br /&gt;
   long  du  tube. Nous avons ensuite recommenc‚ la mˆme chose pour y&lt;br /&gt;
   d‚poser  $23456. Ensuite BSR, donc mˆme chose mais r‚alis‚ automa-&lt;br /&gt;
   tiquement par le 68000 afin d'y d‚poser l'adresse de retour (4 oc-&lt;br /&gt;
   tets).&lt;br /&gt;
&lt;br /&gt;
   Est-ce  tout? Non car une fois rendu dans la subroutine nous avons&lt;br /&gt;
   d‚pos‚  sur la pile les registres D0, D1 et A0. Le transfert ayant&lt;br /&gt;
   ‚t‚ effectu‚ sur le format long mot (MOVEM.L) nous avons transf‚r‚&lt;br /&gt;
   3 fois 4 octets soit 12 octets (bytes).&lt;br /&gt;
&lt;br /&gt;
   Notre  copie de A7 qui est en A0 ne pointe donc pas sur nos 2 nom-&lt;br /&gt;
   bres  mais  beaucoup  plus loin. Le nombre que nous avons plac‚ en&lt;br /&gt;
   second  sur la pile est donc … 16 vers le d‚but du tube (faites le&lt;br /&gt;
   calcul: 1BSR, + 12 bytes de sauvegarde cela fait bien 16 bytes) et&lt;br /&gt;
   le  nombre  plac‚  en  premier  sur  la pile suit son copain et se&lt;br /&gt;
   trouve  donc … 20 bytes d'ici, en vertu toujours du principe de la&lt;br /&gt;
   pile: le dernier entr‚, c'est le premier sorti.&lt;br /&gt;
&lt;br /&gt;
   Nous  pouvons  donc  dire  que $23456 est … A0 d‚cal‚ de 16 et que&lt;br /&gt;
   $12345678 est … A0 d‚cal‚ de 20.&lt;br /&gt;
&lt;br /&gt;
   Pour r‚cup‚rer ces 2 nombres plusieurs actions sont possibles:&lt;br /&gt;
&lt;br /&gt;
   1) ajouter 16 … l'adresse de A0 puis r‚cup‚rer.&lt;br /&gt;
&lt;br /&gt;
   Une addition d'adresse se fait par ADDA (add adress).&lt;br /&gt;
&lt;br /&gt;
   Nous faisons donc&lt;br /&gt;
          ADDA.L     #16,A0&lt;br /&gt;
&lt;br /&gt;
   A0 pointe donc maintenant sur $23456, r‚cup‚rons donc ce nombre et&lt;br /&gt;
   profitons du mode d'adressage pour avancer l'adresse indiqu‚e dans&lt;br /&gt;
   A0 et ainsi tout de suite ˆtre prˆt pour r‚cup‚rer l'autre nombre.&lt;br /&gt;
          MOVE.L     A0)+,D0&lt;br /&gt;
   L'adresse  ayant  ‚t‚  augment‚e  nous  pouvons  donc r‚cup‚rer la&lt;br /&gt;
   suite:&lt;br /&gt;
          MOVE.L     (A0)+,D1&lt;br /&gt;
&lt;br /&gt;
   2) Autre m‚thode, utilisant un autre mode d'adressage:&lt;br /&gt;
&lt;br /&gt;
   La  m‚thode pr‚c‚dente pr‚sente un inconv‚nient: aprŠs le ADDA, A0&lt;br /&gt;
   est  modifi‚  et  si nous voulions garder cette adresse, il aurait&lt;br /&gt;
   fallu le sauvegarder.&lt;br /&gt;
&lt;br /&gt;
   Ou  bien  nous  aurions pu ajouter le d‚calage … A0, r‚cup‚rer les&lt;br /&gt;
   donn‚es  et  ensuite  retirer le d‚calage … A0 pour qu'il retrouve&lt;br /&gt;
   sont ‚tat de d‚part.&lt;br /&gt;
&lt;br /&gt;
   Autre m‚thode donc, indiquer dans l'adressage le d‚calage … appli-&lt;br /&gt;
   quer. Cela se fait par:&lt;br /&gt;
&lt;br /&gt;
          MOVE.L     16(A0),D0&lt;br /&gt;
          MOVE.L     20(A0),D1&lt;br /&gt;
&lt;br /&gt;
   Cela  permet  de  pointer sur le 16Šme octet … partir de l'adresse&lt;br /&gt;
   donn‚e par A0 et ensuite de pointer sur le 20Šme par rapport … A0.&lt;br /&gt;
   Dans les 2 cas, A0 n'est pas modifi‚.&lt;br /&gt;
&lt;br /&gt;
   Voil… le listing complet de cet exemple.&lt;br /&gt;
&lt;br /&gt;
          MOVE.L     #$11111111,D0         initialisation de D0&lt;br /&gt;
          MOVE.L     #$22222222,D1         idem&lt;br /&gt;
          MOVE.L     #$33333333,D2         idem&lt;br /&gt;
          MOVE.L     #$44444444,D3         idem&lt;br /&gt;
          MOVE.L     #$55555555,D4         idem&lt;br /&gt;
          MOVE.L     #$66666666,D5         idem&lt;br /&gt;
          MOVE.L     #$77777777,D6         idem&lt;br /&gt;
          MOVE.L     #$12345678,-(SP)      passage nombre 1 dans la pile&lt;br /&gt;
          MOVE.L     #$00023456,-(SP)      passage nombre 2 dans la pile&lt;br /&gt;
          BSR        AJOUTE                et en route !&lt;br /&gt;
          MOVE.L     D7,D0                 transfert du r‚sultat pour voir..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   * notre subroutine&lt;br /&gt;
AJOUTE    MOVEM.L    D0-D1/A0,-(SP)        sauvegarde&lt;br /&gt;
          MOVE.L     A7,A0                 copie de SP en A0&lt;br /&gt;
          MOVE.L     16(A0),D0             r‚cupŠre 23456 et le met en D0&lt;br /&gt;
          MOVE.L     20(A0),D1             r‚cupŠre 12345678 en D1&lt;br /&gt;
          ADD.L      D0,D1                 addition&lt;br /&gt;
          MOVE.L     D1,D7                 transfert du r‚sultat&lt;br /&gt;
          MOVEM.L    (SP)+,D0-D1/A0        r‚cup‚ration&lt;br /&gt;
          RTS                              et retour&lt;br /&gt;
&lt;br /&gt;
            * Note: ce  programme  n'ayant pas de fin 'normale',&lt;br /&gt;
            lorsque vous* serez rendu au retour de la subroutine&lt;br /&gt;
            c'est-…-dire aprŠs la ligne&amp;quot; MOVE.L D7,D0 &amp;quot;, quittez&lt;br /&gt;
            le avec Control+C,  Assemblez et suivez bien TOUT le&lt;br /&gt;
            d‚roulement.&lt;br /&gt;
&lt;br /&gt;
   Bien  s–r, il aurait ‚t‚ possible de faire cela tout diff‚remment.&lt;br /&gt;
   Par exemple nous aurions pu ‚viter de travailler avec A0. En effet&lt;br /&gt;
   16(A0) et 20(A0) ne modifiant pas A0, il aurait ‚t‚ plus simple de&lt;br /&gt;
   faire  16(A7) et  20(A7) au  lieu de recopier d'abord A7 en A0. De&lt;br /&gt;
   mˆme il aurait ‚t‚ possible de transf‚rer $23456 directement en D7&lt;br /&gt;
   et  $12345678 en  D1 puis  de  faire ADD.L  D1,D7 afin d'‚viter la&lt;br /&gt;
   sauvegarde  de  D0 (qui aurait ‚t‚ inutilis‚e), et le transfert D1&lt;br /&gt;
   vers  D7 qui  n'aurait  alors pas eu lieu d'ˆtre. De mˆme nous au-&lt;br /&gt;
   rions pu retourner le r‚sultat par la pile au lieu de le faire par&lt;br /&gt;
   D7.&lt;br /&gt;
&lt;br /&gt;
   Beaucoup de variantes possibles n'est ce pas ?&lt;br /&gt;
&lt;br /&gt;
   Pour  terminer, un  petit exercice. Relancer ce petit programme et&lt;br /&gt;
   analysez  PARFAITEMENT  TOUT ce qui s'y passe. Quelque chose ne va&lt;br /&gt;
   pas  ! Je  vous  aide  en disant qu'il s'agit bien s–r de la pile.&lt;br /&gt;
   Cherchez et essayez de trouver comment faire pour arranger ‡a.&lt;br /&gt;
&lt;br /&gt;
   La r‚ponse sera au d‚but du prochain cours mais essayez d'imaginer&lt;br /&gt;
   que c'est votre programme et qu'il ne marche pas et  cherchez!!!&lt;br /&gt;
&lt;br /&gt;
   Bon, le  cours sur la pile se termine ici. Ce fut un peu long mais&lt;br /&gt;
   je pense, pas trop compliqu‚.  Relisez le, car la pile est un truc&lt;br /&gt;
   d‚licat dont nous allons nous servir TRES abondamment dans le pro-&lt;br /&gt;
   chain cours. Si vous avez … peu prŠs tout compris jusqu'ici il est&lt;br /&gt;
   encore  temps  de rattraper le temps perdu et de tout reprendre au&lt;br /&gt;
   d‚but, car  il  faut  avoir PARFAITEMENT tout compris et pas … peu&lt;br /&gt;
   pr‚s!&lt;br /&gt;
&lt;br /&gt;
   Afin de vous remonter le moral, je vous signal que vous ˆtes pres-&lt;br /&gt;
   que … la moiti‚ du cours...&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>