<?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_4.TXT</id>
	<title>COURS 4.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_4.TXT"/>
	<link rel="alternate" type="text/html" href="https://www.temlib.org/AtariForumWiki/index.php?title=COURS_4.TXT&amp;action=history"/>
	<updated>2026-05-13T20:06:54Z</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_4.TXT&amp;diff=11528&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_4.TXT&amp;diff=11528&amp;oldid=prev"/>
		<updated>2016-12-22T14:33:41Z</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 4                         *&lt;br /&gt;
   *                                                                *&lt;br /&gt;
   ******************************************************************&lt;br /&gt;
&lt;br /&gt;
   Nous allons aborder maintenant les registres d'adresse. Tout comme&lt;br /&gt;
   les registres de donn‚es, ces registres sont cod‚s sur 32 bits (un&lt;br /&gt;
   long  mot). Donc … priori aucune diff‚rence, puisque le micro-pro-&lt;br /&gt;
   cesseur  ne connaŒt que des chiffres, que ceux-ci repr‚sentent des&lt;br /&gt;
   donn‚es  ou  des  adresses, peu lui importe.  C'est vrai en grande&lt;br /&gt;
   partie  et  d'ailleurs  sur  certains  micro-processeurs, il n'y a&lt;br /&gt;
   qu'un  ou  deux  registres, qui  peuvent  contenir  indiff‚remment&lt;br /&gt;
   adresse ou donn‚es.&lt;br /&gt;
&lt;br /&gt;
   Voyons, grƒce  … un exemple, les diff‚rences en ce qui concerne le&lt;br /&gt;
   68000 MOTOROLA.&lt;br /&gt;
&lt;br /&gt;
   Tapons  donc  le  programme suivant, aprŠs avoir, bien s–r, effac‚&lt;br /&gt;
   l'ancien, et assemblons.&lt;br /&gt;
&lt;br /&gt;
             MOVE.L     #$12345678,D0&lt;br /&gt;
             MOVE.B     #$AA,D0&lt;br /&gt;
             MOVE.L     #$12345678,A0&lt;br /&gt;
             MOVE.B     #$AA,A0 &lt;br /&gt;
             MOVE.L     #$12345678,A1&lt;br /&gt;
             MOVE.B     A1,D1&lt;br /&gt;
&lt;br /&gt;
   L'assembleur  note 2 erreurs et nous les annonce par 'invalid size&lt;br /&gt;
   at line 4' et la mˆme chose pour 'line 6'. Puisque c'est la taille&lt;br /&gt;
   et  non  l'op‚ration  elle-mˆme qui semble poser problŠme, nous en&lt;br /&gt;
   d‚duisons  que  le  MOVE vers ou … partir d'un registre d'adresse,&lt;br /&gt;
   n'est  pas  possible sur un byte. Rectifions donc la ligne 4 et la&lt;br /&gt;
   ligne 6 en rempla‡ant les MOVE.B par des MOVE.W et r‚-assemblons.&lt;br /&gt;
&lt;br /&gt;
   Note: Lorsque  l'assembleur  note une erreur, il donne la ligne o—&lt;br /&gt;
   se  situe  celle-ci. Dans cette num‚rotation les lignes vides sont&lt;br /&gt;
   compt‚es.&lt;br /&gt;
&lt;br /&gt;
   Ainsi si vous aviez pass‚ une ligne aprŠs MOVE.L #$12345678,D0 les&lt;br /&gt;
   erreurs auraient ‚t‚ annonc‚es ligne 5 et 7.&lt;br /&gt;
&lt;br /&gt;
   Cela  fait  d‚j…  une  diff‚rence puisque si vous regardez bien le&lt;br /&gt;
   programme, nous  voulions  r‚aliser  une  op‚ration  avec  D0:  Le&lt;br /&gt;
   remplir  au  maximum de sa taille, puis v‚rifier que le MOVE de la&lt;br /&gt;
   ligne  2, n'affecterait que le byte de poids faible, puis r‚aliser&lt;br /&gt;
   la mˆme op‚ration sur A0.&lt;br /&gt;
&lt;br /&gt;
   Impossible  …  priori.  Tant  pis,  suite  …  notre  modification,&lt;br /&gt;
   l'op‚ration se d‚roulera donc sur un word au lieu d'un byte.&lt;br /&gt;
&lt;br /&gt;
   D‚buggons  notre  programme. PremiŠre  constatation: l'assembleur,&lt;br /&gt;
   voyant que les op‚rations ont lieu avec des registres d'adresse et&lt;br /&gt;
   non  pas  des  registres de donn‚es, a automatiquement modifi‚ les&lt;br /&gt;
   MOVE  vers  A0 et A1, pour les transformer en MOVEA, ce qui se lit&lt;br /&gt;
   MOVE ADDRESS&lt;br /&gt;
&lt;br /&gt;
   Ex‚cutons  le  programme  pas-…-pas. D0 prend la valeur $12345678,&lt;br /&gt;
   puis  seul  son byte de poids faible est modifi‚, D0 prenant alors&lt;br /&gt;
   la  valeur  $123456AA. Ensuite A0 prend la valeur $12345678. AprŠs&lt;br /&gt;
   la  ligne  suivante, l'op‚ration  affectant le word, nous devrions&lt;br /&gt;
   avoir $123400AA. Et bien pas du tout! Nous obtenons $000000AA.&lt;br /&gt;
&lt;br /&gt;
   Nous  venons  donc de voir qu'un registre d'adresse est totalement&lt;br /&gt;
   influenc‚  (donc  sur un long mot) lorsqu'il est la destination de&lt;br /&gt;
   l'op‚ration. Qu'en est-il donc lorsqu'il en est la source ?&lt;br /&gt;
&lt;br /&gt;
   Continuons  donc  notre programme, avec le remplissage de A1 et de&lt;br /&gt;
   D1. Nous  constatons par la suite que seul le word de poids faible&lt;br /&gt;
   de A1 vient ‚craser celui de D1.&lt;br /&gt;
&lt;br /&gt;
   NOTE: $AA  est  bien  en  chiffre  en hexad‚cimal. Si vous pensiez&lt;br /&gt;
   qu'il  s'agissait  de simples lettres de l'alphabet, dormez 1 ou 2&lt;br /&gt;
   jours, et reprenez le cours … la premiŠre le‡on!&lt;br /&gt;
&lt;br /&gt;
   De tout ceci nous d‚duisons 2 d‚finitions:&lt;br /&gt;
&lt;br /&gt;
   REGISTRES DE DONNES: Chaque registre de donn‚es a une longueur de&lt;br /&gt;
   32 bits. Les  op‚randes  sous forme d'octet occupent les 8 bits de&lt;br /&gt;
   poids  faible, les  op‚randes  sous  forme  de mot, les 16 bits de&lt;br /&gt;
   poids faible et les op‚randes longs, la totalit‚ des 32 bits.&lt;br /&gt;
&lt;br /&gt;
   Le  bit de poids le plus faible est adress‚ comme bit 0, le bit de&lt;br /&gt;
   poids le plus fort est adress‚ comme bit 31.&lt;br /&gt;
&lt;br /&gt;
   Lorsqu'un  registre  de  donn‚es  est  utilis‚ soit comme op‚rande&lt;br /&gt;
   source, soit  comme  op‚rande  destination, seule la partie appro-&lt;br /&gt;
   pri‚e  de  poids  faible est chang‚e.  La partie restante de poids&lt;br /&gt;
   fort n'est ni utilis‚e, ni modifi‚e.&lt;br /&gt;
&lt;br /&gt;
   REGISTRES D'ADRESSE: Chaque registre a une longueur de 32 bits, et&lt;br /&gt;
   contient   une  adresse  sur  32  bits.  Les  registres  d'adresse&lt;br /&gt;
   n'acceptent  pas  une  op‚rande  dont  la  taille est l'octet. Par&lt;br /&gt;
   cons‚quent lorsqu'un registre d'adresse est utilis‚ comme op‚rande&lt;br /&gt;
   source, soit  le mot de poids faible, soit l'op‚rande long dans sa&lt;br /&gt;
   totalit‚ est utilis‚, en fonction de la taille de l'op‚ration.&lt;br /&gt;
&lt;br /&gt;
   Lorsqu'un   registre   d'adresse  est  utilis‚  comme  destination&lt;br /&gt;
   d'op‚rande  le  registre entier est concern‚, ind‚pendamment de la&lt;br /&gt;
   taille  de  l'op‚ration. Si l'op‚ration porte sur un mot, tous les&lt;br /&gt;
   autres  op‚randes  subissent  une  extension de signe sur 32 bits,&lt;br /&gt;
   avant que l'op‚ration ne soit effectu‚e.&lt;br /&gt;
&lt;br /&gt;
   D‚finitions  extraites  du  document r‚f EF68000 (circuit int‚gr‚s&lt;br /&gt;
   MOS THOMSON EFCIS), 45 avenue de l'Europe 78140 Velizy.&lt;br /&gt;
&lt;br /&gt;
   Dans  ces d‚finitions, nous remarquons un nouveau terme: op‚rande.&lt;br /&gt;
   C'est  le  terme  qui d‚signe la valeur utilis‚e dans l'op‚ration.&lt;br /&gt;
   Ainsi  dans MOVE.W D0,D1 l'op‚rande source, c'est le word de poids&lt;br /&gt;
   faible  de  D0 alors  que l'op‚rande destination, c'est le word de&lt;br /&gt;
   poids faible de D1.&lt;br /&gt;
&lt;br /&gt;
   Nous savons maintenant ce qu'est le PC, un registre de donn‚es, un&lt;br /&gt;
   registre  d'adresse, nous  avons un peu id‚e de ce que nous montre&lt;br /&gt;
   les  fenˆtre  de  MONST, continuons donc … d‚cortiquer ce fabuleux&lt;br /&gt;
   outil !&lt;br /&gt;
&lt;br /&gt;
   Pour  observer la fenˆtre de MONST, si vous n'avez pas assembl‚ de&lt;br /&gt;
   programme, impossible d'utiliser Alternate+D. Il vous sera r‚pondu&lt;br /&gt;
   qu'il  n'y  a pas de programme en m‚moire. Tapez donc Alternate+M,&lt;br /&gt;
   vous  voyez  MONST  apparaŒtre, mais  vous  demandant quel fichier&lt;br /&gt;
   charger. Tapez ESC et nous voici tranquille pour une observation.&lt;br /&gt;
&lt;br /&gt;
   Nous  voyons bien dans la fenˆtre du haut nos registres de donn‚es&lt;br /&gt;
   et … droite nos registres d'adresse. Sous les registres de donn‚es&lt;br /&gt;
   SR  puis  PC. Le  PC  (program counter), nous savons ce que c'est,&lt;br /&gt;
   mais le SR ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   LE STATUS REGISTER&lt;br /&gt;
&lt;br /&gt;
   Le  SR  (prononcer  Status  Register, ce qui veut dire en Fran‡ais&lt;br /&gt;
   registre  d'‚tat), est  un  registre cod‚ sur un word (16 bits) et&lt;br /&gt;
   qui, comme  son  nom  l'indique,  nous  renseigne  sur  l'‚tat  du&lt;br /&gt;
   micro-processeur.&lt;br /&gt;
&lt;br /&gt;
   Il est l'exemple frappant de ce que nous avons vu dans l'introduc-&lt;br /&gt;
   tion  du  cours 3, … savoir qu'il est bien dangereux de traiter un&lt;br /&gt;
   ensemble  de  bits  comme  un simple chiffre, plus ou moins grand.&lt;br /&gt;
   Voyons la d‚composition du Status Register.&lt;br /&gt;
&lt;br /&gt;
   num‚ro des bits 15----------------------------------0&lt;br /&gt;
   appellation       T . S . . . I2 I1 I0 . . . X N Z V C&lt;br /&gt;
&lt;br /&gt;
   Tout  d'abord  il  faut savoir que certains bits du SR ne sont pas&lt;br /&gt;
   utilis‚s. Ils sont ici symbolis‚s par un point chacun.&lt;br /&gt;
&lt;br /&gt;
   Commen‡ons  par  la  description des bits de droite, en commen‡ant&lt;br /&gt;
   par le 0.&lt;br /&gt;
&lt;br /&gt;
   Le bit C (C signifie Carry donc retenue en Fran‡ais).&lt;br /&gt;
   Ce  bit  est mis … 1 lorsqu'il y a une retenue dans le bit le plus&lt;br /&gt;
   ‚lev‚  (donc  de poids le plus fort) de l'op‚rande objet, dans une&lt;br /&gt;
   op‚ration arithm‚tique.&lt;br /&gt;
&lt;br /&gt;
   Le bit V (V signifie oVerflow donc d‚passement en Fran‡ais).&lt;br /&gt;
   Imaginons  une addition de 2 nombres positifs, lorsque le r‚sultat&lt;br /&gt;
   va  d‚border  les  limites  du  registres, on obtiendra en fait un&lt;br /&gt;
   nombre  n‚gatif  …  compl‚mente … 2. En effet le fait de mettre le&lt;br /&gt;
   bit  de  poids le plus fort … 1 indique que le nombre est n‚gatif.&lt;br /&gt;
   Comme ce n'est pas,dans le cas pr‚sent,  le r‚sultat recherch‚, on&lt;br /&gt;
   est  pr‚venu  du d‚passement par le fait que le bit V est mis … 1.&lt;br /&gt;
   Il indique ‚galement, lors de divisions,  que le quotient est plus&lt;br /&gt;
   grand qu'un word ou bien que nous avons un dividende trop grand.&lt;br /&gt;
&lt;br /&gt;
   Le  bit  Z (Z signifie Z‚ro). Il n'indique pas que le r‚sultat est&lt;br /&gt;
   ‚gal  …  0, mais  plut“t que le r‚sultat est pass‚ de l'autre cot‚&lt;br /&gt;
   de 0. En  effet, ce  bit est … 1 lorsqu'aprŠs une op‚ration le bit&lt;br /&gt;
   de poids le plus fort du r‚sultat est mis … 1, ce qui signifie que&lt;br /&gt;
   nous  sommes en pr‚sence d'un nombre n‚gatif en compl‚ment … 2. Le&lt;br /&gt;
   bit N  (N  signifie Negate )  signifie que nous sommes en pr‚sence&lt;br /&gt;
   d'un nombre n‚gatif.&lt;br /&gt;
&lt;br /&gt;
   Le  bit  X  (X  signifie eXtend donc extension). C'est un bit bien&lt;br /&gt;
   sp‚cial qui se comporte un peu comme une retenue. Les instructions&lt;br /&gt;
   qui utilisent ce bit le pr‚cisent dans leur nom.  Par exemple ADDX&lt;br /&gt;
   qui se lit add with extend est une op‚ration d'addition prenant en&lt;br /&gt;
   compte  ce  bit  X. Ce  bit X est g‚n‚ralement le reflet du bit C,&lt;br /&gt;
   mais, contrairement, …  celui-ci, certaines instructions ne le mo-&lt;br /&gt;
   difient pas.&lt;br /&gt;
&lt;br /&gt;
   Lorsque nous ‚tudierons de plus pr‚s les instructions du 68000, le&lt;br /&gt;
   fait  que l'instruction affecte ou non tel ou tel bit sera parfois&lt;br /&gt;
   trŠs important.&lt;br /&gt;
&lt;br /&gt;
   Le bit T (T signifie Trace donc suivre en Fran‡ais).&lt;br /&gt;
   Lorsque ce bit est … 1, le 68000 se trouve en mode Trace.&lt;br /&gt;
&lt;br /&gt;
   Alors  l…, soyez  bien  attentif, ce  qui va suivre est primordial&lt;br /&gt;
   pour la suite des cours!!!&lt;br /&gt;
&lt;br /&gt;
   Le mode Trace est un mode de mise au point pour les programmes. Et&lt;br /&gt;
   oui, c'est carr‚ment DANS le microprocesseur qu'une telle commande&lt;br /&gt;
   est  ins‚r‚e. A  chaque fois que le 68000 ex‚cute une instruction,&lt;br /&gt;
   il va voir dans quel ‚tat se trouve le bit T. S'il trouve ce bit …&lt;br /&gt;
   0, il  passe … la prochaine instruction. Par contre, si ce bit est&lt;br /&gt;
   …  1, le  68000  laisse  de  c“t‚  (temporairement)  le  programme&lt;br /&gt;
   principal  pour  se  d‚tourner vers une routine (un 'bout' de pro-&lt;br /&gt;
   gramme) qui  affichera par exemple la valeur de tous les registres&lt;br /&gt;
   (D0 …  D7 et  A0 …  A7). Imaginons  qu'il  faille  appuyer sur une&lt;br /&gt;
   touche pour sortir de cette routine: Nous avons donc tout le temps&lt;br /&gt;
   de  consulter  ces  valeurs. Nous  appuyons sur une touche: fin de&lt;br /&gt;
   notre  routine, le  68000 retourne  donc  au  programme principal,&lt;br /&gt;
   ex‚cute  l'instruction  suivante, teste le bit T, le trouve … nou-&lt;br /&gt;
   veau  …  1, se  branche  donc sur notre routine, etc... Nous avons&lt;br /&gt;
   donc  un  mode  pas-…-pas. Or, vous avez d‚j… utilis‚ cette parti-&lt;br /&gt;
   cularit‚  en  visualisant  le  d‚roulement  des  instructions avec&lt;br /&gt;
   MONST!&lt;br /&gt;
&lt;br /&gt;
   Tapez le programme suivant:&lt;br /&gt;
             MOVE.W     #$23,D0&lt;br /&gt;
             MOVE.W     #$15,D1&lt;br /&gt;
&lt;br /&gt;
   Assemblez  et  faites  Alternate+D pour passer sous MONST. Appuyez&lt;br /&gt;
   une  fois  sur  Control+Z  et observez le Status Register. MONST a&lt;br /&gt;
   affich‚  T, indiquant  ainsi  que ce bit est … 1. Nous sommes donc&lt;br /&gt;
   bien en mode Trace. Quittez le programme par Control+C.&lt;br /&gt;
&lt;br /&gt;
   Nous  arrivons  maintenant  …  nous poser une question: Le 68000 a&lt;br /&gt;
   trouv‚  le bit T … 1. D'accord, il sait o— est son Status register&lt;br /&gt;
   et  il  sait  que  le  bit T c'est le 15Šme. Mais aprŠs ? Le 68000&lt;br /&gt;
   s'est  d‚tourn‚ vers une routine qui dans le cas pr‚sent se trouve&lt;br /&gt;
   ˆtre une partie de MONST.&lt;br /&gt;
&lt;br /&gt;
   Mais  comment  a-t-il trouv‚ cette routine ? MONST est en effet un&lt;br /&gt;
   programme  tout … fait  ordinaire, qui  a  ‚t‚ charg‚ en m‚moire …&lt;br /&gt;
   partir  de  la disquette, et qui peut ˆtre plac‚ n'importe o— dans&lt;br /&gt;
   cette m‚moire.&lt;br /&gt;
&lt;br /&gt;
   Une  premiŠre solution consisterait … toujours placer ce programme&lt;br /&gt;
   au  mˆme  endroit. MOTOROLA  aurait ainsi pu concevoir le 68000 en&lt;br /&gt;
   pr‚cisant: Les  programmes  de  mise  au  point qui seront appel‚s&lt;br /&gt;
   grƒce … la mise … 1 du bit T, devront commencer … l'adresse $5000.&lt;br /&gt;
   Simple, mais trŠs gˆnant car il devient pratiquement impossible de&lt;br /&gt;
   faire  r‚sider plusieurs programmes en m‚moire simultan‚ment, sans&lt;br /&gt;
   courir le risque qu'ils se marchent sur les pieds!!!&lt;br /&gt;
&lt;br /&gt;
   Il y a pourtant une autre solution, un peu plus tordue mais en re-&lt;br /&gt;
   vanche  beaucoup  plus souple, qui consiste … charger le programme&lt;br /&gt;
   de mise au point n'importe o— en m‚moire, de noter l'adresse … la-&lt;br /&gt;
   quelle  il  se trouve, et de noter cette adresse … un endroit pr‚-&lt;br /&gt;
   cis. Lorsque  le 68000 trouvera le bit T … 1, il foncera … cet en-&lt;br /&gt;
   droit  pr‚vu  …  l'avance  par  MOTOROLA, il y trouvera non pas la&lt;br /&gt;
   routine  mais un long mot, adresse de cette routine, … laquelle il&lt;br /&gt;
   n'aura plus qu'… se rendre.&lt;br /&gt;
&lt;br /&gt;
   Cet  endroit  pr‚cis, o—  sera  stock‚  l'adresse  de la routine …&lt;br /&gt;
   ex‚cuter lorsque le bit T sera trouv‚ … 1, c'est un endroit qui se&lt;br /&gt;
   situe dans le premier kilo de m‚moire (donc dans les 1024 premiers&lt;br /&gt;
   bytes). En  l'occurrence pour le mode trace il s'agit de l'adresse&lt;br /&gt;
   $24.&lt;br /&gt;
&lt;br /&gt;
   R‚sumons: MONST  se  charge en m‚moire. C'est un programme complet&lt;br /&gt;
   dont  certaines  routines  permettent  l'affichage  des registres.&lt;br /&gt;
   MONST  regarde  l'adresse … laquelle commencent ces routines, note&lt;br /&gt;
   cette  adresse  puis va la mettre … l'adresse $24. Ce long mot est&lt;br /&gt;
   donc  plac‚  …  l'adresse $24, $25, $26 et $27 puisque nous savons&lt;br /&gt;
   que  le  'diamŠtre' du 'tube' m‚moire n'est que d'un octet (byte).&lt;br /&gt;
   Lorsque  le microprocesseur trouve le bit T … 1, il va … l'adresse&lt;br /&gt;
   $24, il  y  pr‚lŠve  un  long mot qui se trouve ˆtre l'adresse des&lt;br /&gt;
   routines de MONST, et il fonce … cette adresse. ok?&lt;br /&gt;
&lt;br /&gt;
   Nous  allons maintenant r‚aliser un petit programme et nous allons&lt;br /&gt;
   'planter' votre ATARI!&lt;br /&gt;
   Tapez ce qui suit:&lt;br /&gt;
&lt;br /&gt;
             MOVE.W     #$1234,D1&lt;br /&gt;
             MOVE.W     #$6789,D2&lt;br /&gt;
             MOVE.W     #$1122,D3&lt;br /&gt;
&lt;br /&gt;
   Assemblez  puis  taper  Alternate+D pour passer sous MONST. Faites&lt;br /&gt;
   une fois Control+Z. Le bit T du Status register est mis … 1, indi-&lt;br /&gt;
   quant  que nous sommes en mode Trace. Comme nous avons ex‚cut‚ une&lt;br /&gt;
   instruction, D1 se  trouve  rempli avec $1234. Appuyons maintenant&lt;br /&gt;
   sur Alternate + 3.&lt;br /&gt;
&lt;br /&gt;
   Nous venons d'activer la fenˆtre de droite (la num‚ro 3).&lt;br /&gt;
   Appuyons  sur  Alternate+A. Une  demande  s'affiche:  nous  devons&lt;br /&gt;
   indiquer  quelle adresse sera la premiŠre visible dans la fenˆtre.&lt;br /&gt;
   Il faut taper cette adresse en hexad‚cimal. Nous tapons donc...24.&lt;br /&gt;
   (pas  de $ avant, MONST sait de lui-mˆme que nous parlons en hexa)&lt;br /&gt;
   Nous  voyons  s'afficher  l'adresse 24 en haut de la fenˆtre et en&lt;br /&gt;
   face un chiffre qui est l'adresse de notre routine de MONST!&lt;br /&gt;
&lt;br /&gt;
   Pour  moi  c'est 00027086 mais comme je l'ai dit pr‚c‚demment cela&lt;br /&gt;
   d‚pend des machines. Dans mon cas lorsque le 68000 trouve le bit T&lt;br /&gt;
   … 1, il fonce donc ex‚cuter la routine qui se trouve en $00027086.&lt;br /&gt;
   Je vais donc modifier cette adresse! Appuyons sur Alternate+E pour&lt;br /&gt;
   passer en mode ‚dition. Le curseur est plac‚ sur le premier nibble&lt;br /&gt;
   de  l'adresse. Tapez  par exemple 11112222 ou n'importe quel autre&lt;br /&gt;
   chiffre. &lt;br /&gt;
   Repassez maintenant dans la fenˆtre 1 en tapant Alternate+1.&lt;br /&gt;
&lt;br /&gt;
   Maintenant  r‚fl‚chissons: Nous allons refaire Control+Z. Le 68000&lt;br /&gt;
   va  foncer en $24, va maintenant y trouver $11112222, et va foncer&lt;br /&gt;
   … cette adresse pour y ex‚cuter ce qu'il va y trouver c'est-…-dire&lt;br /&gt;
   n'importe quoi! Il y a trŠs peu de chance pour qu'il r‚ussisse … y&lt;br /&gt;
   lire des choses coh‚rentes et vous indiquera une erreur.&lt;br /&gt;
&lt;br /&gt;
   Allez  y, n'ayez  pas  peur, vous  ne  risquez pas de casser votre&lt;br /&gt;
   machine!&lt;br /&gt;
&lt;br /&gt;
   Hop  Control+Z  et, suivant  les cas, vous obtenez divers messages&lt;br /&gt;
   (Illegal exception, Bus Error etc...). &lt;br /&gt;
&lt;br /&gt;
   Quittez  en faisant Control+C ou bien en dernier ressort faites un&lt;br /&gt;
   RESET.&lt;br /&gt;
&lt;br /&gt;
   J'espŠre  que ce principe est TRES TRES BIEN COMPRIS. Si cela vous&lt;br /&gt;
   semble … peu prŠs clair, relisez tout car la suite va trŠs souvent&lt;br /&gt;
   faire  r‚f‚rence  …  ce  principe  d'adresse dans le premier kilo,&lt;br /&gt;
   contenant l'adresse d'une routine.&lt;br /&gt;
&lt;br /&gt;
   La  prochaine fois, nous finirons d'‚tudier le Status Register, en&lt;br /&gt;
   attendant  je  vais me prendre une petite vodka bien fraŒche. A la&lt;br /&gt;
   v“tre!&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>