Pl INSTRUC2.DOC/fr: Difference between revisions

From Atari Wiki
Jump to navigation Jump to search
No edit summary
mNo edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
  +
{{Languages|Pl INSTRUC2.DOC}}
 
<pre>
 
<pre>
   
Line 16: Line 17:
 
------------------
 
------------------
   
Permet de faire un d‚calage de #BBB ou dm (suivant la syntaxe) BITS
+
Permet de faire un décalage de #BBB ou dm (suivant la syntaxe) BITS
du registre de donn‚e dn vers la gauche.
+
du registre de donnée dn vers la gauche.
 
Les bits de remplacement sont NULS.
 
Les bits de remplacement sont NULS.
   
Il faut n‚anmoins que 1<= #BBB <= 8 pour la 1° forme.
+
Il faut néanmoins que 1<= #BBB <= 8 pour la 1° forme.
 
-------------
 
-------------
   
Pour la 3° forme,les modes d'adressage autoris‚s pour l'op‚rande
+
Pour la 3° forme,les modes d'adressage autorisés pour l'opérande
 
destination sont:
 
destination sont:
 
-----------
 
-----------
Line 34: Line 35:
 
d(an,rn)
 
d(an,rn)
 
 
Mais dans ce cas, l'op‚ration ne peut que porter le d‚calage sur
+
Mais dans ce cas, l'opération ne peut que porter le décalage sur
 
1 SEUL BIT.
 
1 SEUL BIT.
   
Line 40: Line 41:
 
C.à.d. que par exemple si d0=%10000101110001101111011100000110 (mot)
 
C.à.d. que par exemple si d0=%10000101110001101111011100000110 (mot)
 
------
 
------
Et que j'‚cris LSL.W #1,dn
+
Et que j'écris LSL.W #1,dn
 
 
 
ou MOVE.W #1,d1
 
ou MOVE.W #1,d1
Line 48: Line 49:
 
<-------- <--:0
 
<-------- <--:0
   
Tous les Bits du MOT de poids faible du registre de donn‚e dn (.W)
+
Tous les Bits du MOT de poids faible du registre de donnée dn (.W)
ont ‚t‚ d‚cal‚s d'1 bit vers la gauche:
+
ont été décalés d'1 bit vers la gauche:
   
Le bit de plus faible poids rentrant est toujours remplac‚ par un
+
Le bit de plus faible poids rentrant est toujours remplacé par un
 
bit NUL.
 
bit NUL.
 
 
Line 57: Line 58:
 
bits de remplacement qui rentrent à droite de dn sont des bits NULS.
 
bits de remplacement qui rentrent à droite de dn sont des bits NULS.
   
Le contenu de dn est donc chang‚, le MSB a aussi des chances d'être
+
Le contenu de dn est donc changé, le MSB a aussi des chances d'être
chang‚,c'est pourquoi le SIGNE de dn ne sera pas forcement conserv‚.
+
changé,c'est pourquoi le SIGNE de dn ne sera pas forcement conservé.
   
Le CCR sera chang‚ en fonction de la nouvelle valeur de dn.
+
Le CCR sera changé en fonction de la nouvelle valeur de dn.
 
---
 
---
N=1 si le MSB est 1, sinon il est ‚gal à 0
+
N=1 si le MSB est 1, sinon il est égal à 0
Z=1 si tous les bits de dn sont nuls, sinon il est ‚gal à 0
+
Z=1 si tous les bits de dn sont nuls, sinon il est égal à 0
 
V est toujours mis à 0
 
V est toujours mis à 0
 
C et X sont mis à la valeur du DERNIER BIT SORTI de dn.
 
C et X sont mis à la valeur du DERNIER BIT SORTI de dn.
Line 73: Line 74:
 
LSL.B #5,d0
 
LSL.B #5,d0
   
On oppère un d‚calage de 5 bits de l'OCTET de poids faible de d0
+
On oppère un décalage de 5 bits de l'OCTET de poids faible de d0
(seuls les bits 0 à 7 de d0 sont donc conscern‚s par lsl.B)
+
(seuls les bits 0 à 7 de d0 sont donc conscernés par lsl.B)
   
 
On obtient:
 
On obtient:
Line 82: Line 83:
 
X=C=0 <- 1111111110100000 dans d0
 
X=C=0 <- 1111111110100000 dans d0
   
5 bits 0 sont rentr‚s à droite de L'octet de poids faible de d0, le
+
5 bits 0 sont rentrés à droite de L'octet de poids faible de d0, le
 
dernier bit à sortir de d0 etait nul: le bit X=C=0 dans le CCR
 
dernier bit à sortir de d0 etait nul: le bit X=C=0 dans le CCR
   
Line 99: Line 100:
 
------------------
 
------------------
   
Permet de faire un d‚calage de #BBB ou dm (suivant la syntaxe) BITS
+
Permet de faire un décalage de #BBB ou dm (suivant la syntaxe) BITS
du registre de donn‚e dn vers la droite
+
du registre de donnée dn vers la droite
 
Les bits de remplacement sont NULS.
 
Les bits de remplacement sont NULS.
   
Il faut n‚anmoins que 1<= #BBB <= 8 pour la 1° forme.
+
Il faut néanmoins que 1<= #BBB <= 8 pour la 1° forme.
 
-------------
 
-------------
Pour la 3° forme,les modes d'adressage autoris‚s pour l'op‚rande
+
Pour la 3° forme,les modes d'adressage autorisés pour l'opérande
 
destination sont:
 
destination sont:
 
-----------
 
-----------
Line 116: Line 117:
 
d(an,rn)
 
d(an,rn)
 
 
Mais dans ce cas, l'op‚ration ne peut que porter le d‚calage sur
+
Mais dans ce cas, l'opération ne peut que porter le décalage sur
 
1 SEUL BIT.
 
1 SEUL BIT.
   
 
C.à.d. que par exemple si d0=%10000101110001101111011100000110 (mot)
 
C.à.d. que par exemple si d0=%10000101110001101111011100000110 (mot)
 
------
 
------
Et que j'‚cris LSR.W #1,dn
+
Et que j'écris LSR.W #1,dn
 
 
 
ou MOVE.W #1,d1
 
ou MOVE.W #1,d1
Line 129: Line 130:
 
0:--> ------->
 
0:--> ------->
   
Tous les Bits du MOT de poids faible du registre de donn‚e dn (.W)
+
Tous les Bits du MOT de poids faible du registre de donnée dn (.W)
ont ‚t‚ d‚cal‚s d'1 bit vers la droite:
+
ont été décalés d'1 bit vers la droite:
   
Le bit de plus fort poids rentrant est toujours remplac‚ par un
+
Le bit de plus fort poids rentrant est toujours remplacé par un
 
bit NUL.
 
bit NUL.
 
 
Line 138: Line 139:
 
bits de remplacement qui rentrent à gauche de dn sont des bits NULS.
 
bits de remplacement qui rentrent à gauche de dn sont des bits NULS.
   
Le contenu de dn est donc chang‚, le MSB a aussi des chances d'être
+
Le contenu de dn est donc changé, le MSB a aussi des chances d'être
chang‚,c'est pourquoi le SIGNE de dn ne sera pas forcement conserv‚.
+
changé,c'est pourquoi le SIGNE de dn ne sera pas forcement conservé.
   
Le CCR sera chang‚ en fonction de la nouvelle valeur de dn.
+
Le CCR sera changé en fonction de la nouvelle valeur de dn.
 
---
 
---
N=1 si le MSB est 1, sinon il est ‚gal à 0
+
N=1 si le MSB est 1, sinon il est égal à 0
Z=1 si tous les bits de dn sont nuls, sinon il est ‚gal à 0
+
Z=1 si tous les bits de dn sont nuls, sinon il est égal à 0
 
V est toujours mis à 0
 
V est toujours mis à 0
 
C et X sont mis à la valeur du DERNIER BIT SORTI de dn.
 
C et X sont mis à la valeur du DERNIER BIT SORTI de dn.
Line 154: Line 155:
 
LSR.B #5,d0
 
LSR.B #5,d0
   
On oppère un d‚calage de 5 bits de l'OCTET de poids faible de d0
+
On oppère un décalage de 5 bits de l'OCTET de poids faible de d0
 
 
(seuls les bits 0 à 7 de d0 sont donc conscern‚s par lsr.B)
+
(seuls les bits 0 à 7 de d0 sont donc conscernés par lsr.B)
   
 
On obtient:
 
On obtient:
Line 164: Line 165:
 
d0 :1111111100000010 -> X=C=1
 
d0 :1111111100000010 -> X=C=1
   
5 bits 0 sont rentr‚s à gauche de L'octet de poids faible de d0, le
+
5 bits 0 sont rentrés à gauche de L'octet de poids faible de d0, le
dernier bit à sortir de d0 ‚tait ‚gal à 1: le bit X=C=1 dans le CCR
+
dernier bit à sortir de d0 était égal à 1: le bit X=C=1 dans le CCR
   
   
Line 183: Line 184:
 
Cette instruction est identique à LSL.
 
Cette instruction est identique à LSL.
   
Mais avec ASL, le bit V du CCR est mis à 1 si le MSB de l'op‚rande
+
Mais avec ASL, le bit V du CCR est mis à 1 si le MSB de l'opérande
destination est chang‚. ---
+
destination est changé. ---
   
   
Line 200: Line 201:
 
------------------
 
------------------
   
Permet de faire un d‚calage de #BBB ou dm (suivant la syntaxe) BITS
+
Permet de faire un décalage de #BBB ou dm (suivant la syntaxe) BITS
du registre de donn‚e dn vers la droite
+
du registre de donnée dn vers la droite
Les bits de remplacement sont ‚gaux au bit de plus fort poids.
+
Les bits de remplacement sont égaux au bit de plus fort poids.
   
Il faut n‚anmoins que 1<= #BBB <= 8 pour la 1° forme.
+
Il faut néanmoins que 1<= #BBB <= 8 pour la 1° forme.
 
-------------
 
-------------
Pour la 3° forme,les modes d'adressage autoris‚s pour l'op‚rande
+
Pour la 3° forme,les modes d'adressage autorisés pour l'opérande
 
destination sont:
 
destination sont:
 
-----------
 
-----------
Line 217: Line 218:
 
d(an,rn)
 
d(an,rn)
 
 
Mais dans ce cas, l'op‚ration ne peut que porter la ROTATION sur
+
Mais dans ce cas, l'opération ne peut que porter la ROTATION sur
 
1 SEUL BIT.
 
1 SEUL BIT.
   
Line 224: Line 225:
 
MSB=1
 
MSB=1
 
 
Et que j'‚cris ASR.W #1,dn
+
Et que j'écris ASR.W #1,dn
 
 
 
ou MOVE.W #1,d1
 
ou MOVE.W #1,d1
Line 233: Line 234:
   
   
Tous les Bits du MOT de poids faible du registre de donn‚e dn (.W)
+
Tous les Bits du MOT de poids faible du registre de donnée dn (.W)
ont ‚t‚ d‚cal‚s d'1 bit vers la droite:
+
ont été décalés d'1 bit vers la droite:
   
 
Le bit de plus faible poids sort par la droite.
 
Le bit de plus faible poids sort par la droite.
Le bit à remplacer est identique au MSB pr‚c‚dant la rotation.
+
Le bit à remplacer est identique au MSB précédant la rotation.
 
 
 
C.à.d. : Qu'on sort #BBB ou dm BITS de dn par la droite et qu'ils
 
C.à.d. : Qu'on sort #BBB ou dm BITS de dn par la droite et qu'ils
rentre des bits ‚gaux au bit de plus fort poids à gauche,à la place
+
rentre des bits égaux au bit de plus fort poids à gauche,à la place
 
du bit manquant.
 
du bit manquant.
 
 
Le contenu de dn est donc chang‚ mais son SIGNE est CONSERVE car le
+
Le contenu de dn est donc changé mais son SIGNE est CONSERVE car le
MSB reste inchang‚.
+
MSB reste inchangé.
   
Le CCR sera chang‚ en fonction de la nouvelle valeur de dn.
+
Le CCR sera changé en fonction de la nouvelle valeur de dn.
 
---
 
---
N=1 si le MSB est 1, sinon il est ‚gal à 0
+
N=1 si le MSB est 1, sinon il est égal à 0
Z=1 si tous les bits de dn sont nuls, sinon il est ‚gal à 0
+
Z=1 si tous les bits de dn sont nuls, sinon il est égal à 0
V est mis à 1 si le MSB de l'op‚rande destination a ‚t‚ chang‚.
+
V est mis à 1 si le MSB de l'opérande destination a été changé.
 
C et X sont mis à la valeur du DERNIER BIT SORTI de dn.
 
C et X sont mis à la valeur du DERNIER BIT SORTI de dn.
 
 
Line 261: Line 262:
 
bit nr°15=1
 
bit nr°15=1
   
On oppère un d‚calage de 5 bits du MOT de poids faible de d0
+
On oppère un décalage de 5 bits du MOT de poids faible de d0
(seuls les bits 0 à 15 de d0 sont donc conscern‚s par asr.W)
+
(seuls les bits 0 à 15 de d0 sont donc conscernés par asr.W)
   
 
On obtient:
 
On obtient:
Line 271: Line 272:
   
 
5 bits sont sortis à droite du MOT de poids faible de d0 et on a
 
5 bits sont sortis à droite du MOT de poids faible de d0 et on a
plac‚ sucessivement 5 bits ‚gaux à 1 (bit nr°15=1) à la place du
+
placé sucessivement 5 bits égaux à 1 (bit nr°15=1) à la place du
 
bit de plus fort poids du MOT.
 
bit de plus fort poids du MOT.
Le signe de d0 reste conserv‚.
+
Le signe de d0 reste conservé.
   
le dernier bit à sortir de d0 ‚tait ‚gal à 1:
+
le dernier bit à sortir de d0 était égal à 1:
 
le bit X=C=1 dans le CCR
 
le bit X=C=1 dans le CCR
   
Line 293: Line 294:
   
 
Permet de faire une ROTATION de #BBB ou dm (suivant la syntaxe) BITS
 
Permet de faire une ROTATION de #BBB ou dm (suivant la syntaxe) BITS
du registre de donn‚e dn vers la gauche.
+
du registre de donnée dn vers la gauche.
Les bits de remplacement sont ‚gaux ceux qui viennent de sortir.
+
Les bits de remplacement sont égaux ceux qui viennent de sortir.
   
Il faut n‚anmoins que 1<= #BBB <= 8 pour la 1° forme.
+
Il faut néanmoins que 1<= #BBB <= 8 pour la 1° forme.
 
-------------
 
-------------
Pour la 3° forme,les modes d'adressage autoris‚s pour l'op‚rande
+
Pour la 3° forme,les modes d'adressage autorisés pour l'opérande
 
destination sont:
 
destination sont:
 
-----------
 
-----------
Line 309: Line 310:
 
d(an,rn)
 
d(an,rn)
 
 
Mais dans ce cas, l'op‚ration ne peut que porter la ROTATION sur
+
Mais dans ce cas, l'opération ne peut que porter la ROTATION sur
 
1 SEUL BIT.
 
1 SEUL BIT.
   
Line 315: Line 316:
 
------
 
------
 
 
Et que j'‚cris ROL.W #1,dn
+
Et que j'écris ROL.W #1,dn
 
 
 
ou MOVE.W #1,d1
 
ou MOVE.W #1,d1
Line 324: Line 325:
   
   
Tous les Bits du MOT de poids faible du registre de donn‚e dn (.W)
+
Tous les Bits du MOT de poids faible du registre de donnée dn (.W)
ont ‚t‚ d‚cal‚s d'1 bit vers la gauche:
+
ont été décalés d'1 bit vers la gauche:
   
 
Le bit de plus fort poids sort par la gauche et revient par la
 
Le bit de plus fort poids sort par la gauche et revient par la
Line 333: Line 334:
 
rentrent à nouveau à droite, à la place des bits manquants.
 
rentrent à nouveau à droite, à la place des bits manquants.
 
 
Le contenu de dn est donc chang‚, le MSB risque donc aussi d'être
+
Le contenu de dn est donc changé, le MSB risque donc aussi d'être
chang‚:le signe du registre ne sera donc pas forcement conserv‚.
+
changé:le signe du registre ne sera donc pas forcement conservé.
   
Le CCR sera chang‚ en fonction de la nouvelle valeur de dn.
+
Le CCR sera changé en fonction de la nouvelle valeur de dn.
 
---
 
---
N=1 si le MSB est 1, sinon il est ‚gal à 0
+
N=1 si le MSB est 1, sinon il est égal à 0
Z=1 si tous les bits de dn sont nuls, sinon il est ‚gal à 0
+
Z=1 si tous les bits de dn sont nuls, sinon il est égal à 0
V est mis à 1 si le MSB de l'op‚rande destination a ‚t‚ chang‚.
+
V est mis à 1 si le MSB de l'opérande destination a été changé.
 
C est mis à la valeur du DERNIER BIT SORTI de dn.
 
C est mis à la valeur du DERNIER BIT SORTI de dn.
X n'est pas affect‚.
+
X n'est pas affecté.
   
 
Exemple d'utilisation:
 
Exemple d'utilisation:
Line 350: Line 351:
   
   
On oppère un d‚calage de 5 bits de l'OCTET de poids faible de d0
+
On oppère un décalage de 5 bits de l'OCTET de poids faible de d0
(seuls les bits 0 à 7 de d0 sont donc conscern‚s par rol.B)
+
(seuls les bits 0 à 7 de d0 sont donc conscernés par rol.B)
   
 
On obtient:
 
On obtient:
Line 360: Line 361:
   
 
5 bits sont sortis à gauche de l'octet de poids faible de d0 et ont
 
5 bits sont sortis à gauche de l'octet de poids faible de d0 et ont
‚t‚ remis à la place du bit de plus faible poids de l'octet.
+
été remis à la place du bit de plus faible poids de l'octet.
   
le dernier bit à sortir de d0 ‚tait ‚gal à 0:
+
le dernier bit à sortir de d0 était égal à 0:
 
le bit C=0 dans le CCR
 
le bit C=0 dans le CCR
   
Line 379: Line 380:
   
 
Permet de faire une ROTATION de #BBB ou dm (suivant la syntaxe) BITS
 
Permet de faire une ROTATION de #BBB ou dm (suivant la syntaxe) BITS
du registre de donn‚e dn vers la droite.
+
du registre de donnée dn vers la droite.
Les bits de remplacement sont ‚gaux ceux qui viennent de sortir.
+
Les bits de remplacement sont égaux ceux qui viennent de sortir.
   
Il faut n‚anmoins que 1<= #BBB <= 8 pour la 1° forme.
+
Il faut néanmoins que 1<= #BBB <= 8 pour la 1° forme.
 
-------------
 
-------------
Pour la 3° forme,les modes d'adressage autoris‚s pour l'op‚rande
+
Pour la 3° forme,les modes d'adressage autorisés pour l'opérande
 
destination sont:
 
destination sont:
 
-----------
 
-----------
Line 395: Line 396:
 
d(an,rn)
 
d(an,rn)
 
 
Mais dans ce cas, l'op‚ration ne peut que porter la ROTATION sur
+
Mais dans ce cas, l'opération ne peut que porter la ROTATION sur
 
1 SEUL BIT.
 
1 SEUL BIT.
   
Line 401: Line 402:
 
------
 
------
 
 
Et que j'‚cris ROR.W #1,dn
+
Et que j'écris ROR.W #1,dn
 
 
 
ou MOVE.W #1,d1
 
ou MOVE.W #1,d1
Line 410: Line 411:
   
   
Tous les Bits du MOT de poids faible du registre de donn‚e dn (.W)
+
Tous les Bits du MOT de poids faible du registre de donnée dn (.W)
ont ‚t‚ d‚cal‚s d'1 bit vers la droite:
+
ont été décalés d'1 bit vers la droite:
   
 
Le bit de plus faible poids sort par la droite et revient par la
 
Le bit de plus faible poids sort par la droite et revient par la
Line 419: Line 420:
 
rentrent à nouveau à gauche, à la place des bits manquants.
 
rentrent à nouveau à gauche, à la place des bits manquants.
 
 
Le contenu de dn est donc chang‚, le MSB risque donc aussi d'ètre
+
Le contenu de dn est donc changé, le MSB risque donc aussi d'ètre
chang‚:le signe du registre ne sera donc pas forcement conserv‚.
+
changé:le signe du registre ne sera donc pas forcement conservé.
   
Le CCR sera chang‚ en fonction de la nouvelle valeur de dn.
+
Le CCR sera changé en fonction de la nouvelle valeur de dn.
 
---
 
---
N=1 si le MSB est 1, sinon il est ‚gal à 0
+
N=1 si le MSB est 1, sinon il est égal à 0
Z=1 si tous les bits de dn sont nuls, sinon il est ‚gal à 0
+
Z=1 si tous les bits de dn sont nuls, sinon il est égal à 0
V est mis à 1 si le MSB de l'op‚rande destination a ‚t‚ chang‚.
+
V est mis à 1 si le MSB de l'opérande destination a été changé.
 
C est mis à la valeur du DERNIER BIT SORTI de dn.
 
C est mis à la valeur du DERNIER BIT SORTI de dn.
X n'est pas affect‚.
+
X n'est pas affecté.
   
 
Exemple d'utilisation:
 
Exemple d'utilisation:
Line 436: Line 437:
   
   
On oppère un d‚calage de 5 bits de l'OCTET de poids faible de d0
+
On oppère un décalage de 5 bits de l'OCTET de poids faible de d0
(seuls les bits 0 à 7 de d0 sont donc conscern‚s par ror.B)
+
(seuls les bits 0 à 7 de d0 sont donc conscernés par ror.B)
   
 
On obtient:
 
On obtient:
Line 446: Line 447:
   
 
5 bits sont sortis à droite de l'octet de poids faible de d0 et ont
 
5 bits sont sortis à droite de l'octet de poids faible de d0 et ont
‚t‚ remis à la place du bit de plus fort poids de l'octet.
+
été remis à la place du bit de plus fort poids de l'octet.
   
le dernier bit à sortir de d0 ‚tait ‚gal à 1:
+
le dernier bit à sortir de d0 était égal à 1:
 
le bit C=1 dans le CCR
 
le bit C=1 dans le CCR
   
Line 467: Line 468:
   
 
ROXL est identique à ROL à part qu'ici le bit X du CCR est ( tout
 
ROXL est identique à ROL à part qu'ici le bit X du CCR est ( tout
comme le bit C) charg‚ avec le dernier bit qui vient de sortir et
+
comme le bit C) chargé avec le dernier bit qui vient de sortir et
que c'est lui qui est recopi‚ à la place du bit manquant.
+
que c'est lui qui est recopié à la place du bit manquant.
   
   
Line 485: Line 486:
   
 
ROXR est identique à ROR à part qu'ici le bit X du CCR est ( tout
 
ROXR est identique à ROR à part qu'ici le bit X du CCR est ( tout
comme le bit C) charg‚ avec le dernier bit qui vient de sortir et
+
comme le bit C) chargé avec le dernier bit qui vient de sortir et
que c'est lui qui est recopi‚ à la place du bit manquant.
+
que c'est lui qui est recopié à la place du bit manquant.
   
   
Line 507: Line 508:
 
Pour la première forme:
 
Pour la première forme:
 
--------------
 
--------------
L'op‚rande source indique le NR° du bit à tester, elle admet les
+
L'opérande source indique le NR° du bit à tester, elle admet les
 
modes d'adressage: --
 
modes d'adressage: --
   
Line 515: Line 516:
 
(avec 0<= NR° <=32, modulo 32)
 
(avec 0<= NR° <=32, modulo 32)
 
 
L'op‚rande destination est un registre de donn‚e.
+
L'opérande destination est un registre de donnée.
 
-----------
 
-----------
 
Pour la seconde forme:
 
Pour la seconde forme:
 
-------------
 
-------------
L'op‚rande source indique le NR° du bit à tester, elle admet les
+
L'opérande source indique le NR° du bit à tester, elle admet les
 
modes d'adressage: --
 
modes d'adressage: --
   
Line 527: Line 528:
 
(avec 0<= NR° <=32, modulo 32)
 
(avec 0<= NR° <=32, modulo 32)
   
L'op‚rande destination indique la donn‚e à traiter, elle admet les
+
L'opérande destination indique la donnée à traiter, elle admet les
 
modes d'adressage:
 
modes d'adressage:
   
Line 542: Line 543:
   
   
¶ part le bit Z du CCR, les bits du CCR ne sont pas affect‚s par
+
¶ part le bit Z du CCR, les bits du CCR ne sont pas affectés par
 
l'instruction. ---
 
l'instruction. ---
   
Line 555: Line 556:
 
On teste le BIT nr°3 de l'octet de poids faible du mot
 
On teste le BIT nr°3 de l'octet de poids faible du mot
 
%0111101101100101.
 
%0111101101100101.
Il est ‚gal à 0: Z=1 dans le CCR, on saute en 'zero'
+
Il est égal à 0: Z=1 dans le CCR, on saute en 'zero'
   
   
Line 572: Line 573:
 
. Si le BIT est ACTIF: le bit Z du CCR est mis à 0
 
. Si le BIT est ACTIF: le bit Z du CCR est mis à 0
 
----- -
 
----- -
. Après le test, le BIT conscern‚ est mis à 1
+
. Après le test, le BIT conscerné est mis à 1
 
--- -------
 
--- -------
   
 
Pour la première forme:
 
Pour la première forme:
 
--------------
 
--------------
L'op‚rande source indique le NR° du bit à tester, elle admet les
+
L'opérande source indique le NR° du bit à tester, elle admet les
 
modes d'adressage: --
 
modes d'adressage: --
   
Line 585: Line 586:
 
(avec 0<= NR° <=32, modulo 32)
 
(avec 0<= NR° <=32, modulo 32)
 
 
L'op‚rande destination est un registre de donn‚e.
+
L'opérande destination est un registre de donnée.
 
----------- ------------------
 
----------- ------------------
 
Pour la seconde forme:
 
Pour la seconde forme:
 
-------------
 
-------------
L'op‚rande source indique le NR° du bit à tester, elle admet les
+
L'opérande source indique le NR° du bit à tester, elle admet les
 
modes d'adressage: --
 
modes d'adressage: --
   
Line 597: Line 598:
 
(avec 0<= NR° <=32, modulo 32)
 
(avec 0<= NR° <=32, modulo 32)
   
L'op‚rande destination indique la donn‚e à traiter, elle admet les
+
L'opérande destination indique la donnée à traiter, elle admet les
 
modes d'adressage:
 
modes d'adressage:
   
Line 610: Line 611:
   
   
¶ part le bit Z du CCR, les bits du CCR ne sont pas affect‚s par
+
¶ part le bit Z du CCR, les bits du CCR ne sont pas affectés par
 
l'instruction. ---
 
l'instruction. ---
   
Line 623: Line 624:
 
On teste le BIT nr°3 de l'octet de poids faible du mot
 
On teste le BIT nr°3 de l'octet de poids faible du mot
 
%0111101101100101.
 
%0111101101100101.
Il est ‚gal à 0: Z=1 dans le CCR, on saute en 'zero'.
+
Il est égal à 0: Z=1 dans le CCR, on saute en 'zero'.
Le bit nr°3 a ‚t‚ mis à 1:donc d0=%0111101101101101
+
Le bit nr°3 a été mis à 1:donc d0=%0111101101101101
   
   
Line 642: Line 643:
 
Si le BIT est ACTIF: le bit Z du CCR est mis à 0
 
Si le BIT est ACTIF: le bit Z du CCR est mis à 0
   
Après le test, le bit conscern‚ est chang‚ en son oppos‚:
+
Après le test, le bit conscerné est changé en son opposé:
 
 
. 0 si il ‚tait ‚gal à 1
+
. 0 si il était égal à 1
. 1 si il ‚tait ‚gal à 0
+
. 1 si il était égal à 0
 
 
 
Pour la première forme:
 
Pour la première forme:
 
--------------
 
--------------
L'op‚rande source indique le NR° du bit à tester, elle admet les
+
L'opérande source indique le NR° du bit à tester, elle admet les
 
modes d'adressage: --
 
modes d'adressage: --
   
Line 657: Line 658:
 
(avec 0<= NR° <=32, modulo 32)
 
(avec 0<= NR° <=32, modulo 32)
 
 
L'op‚rande destination est un registre de donn‚e.
+
L'opérande destination est un registre de donnée.
 
----------- ------------------
 
----------- ------------------
 
Pour la seconde forme:
 
Pour la seconde forme:
 
-------------
 
-------------
L'op‚rande source indique le NR° du bit à tester, elle admet les
+
L'opérande source indique le NR° du bit à tester, elle admet les
 
modes d'adressage: --
 
modes d'adressage: --
   
Line 669: Line 670:
 
(avec 0<= NR° <=32, modulo 32)
 
(avec 0<= NR° <=32, modulo 32)
   
L'op‚rande destination indique la donn‚e à traiter, elle admet les
+
L'opérande destination indique la donnée à traiter, elle admet les
 
modes d'adressage:
 
modes d'adressage:
   
Line 683: Line 684:
   
   
¶ part le bit Z du CCR, les bits du CCR ne sont pas affect‚s par
+
¶ part le bit Z du CCR, les bits du CCR ne sont pas affectés par
 
l'instruction. ---
 
l'instruction. ---
   
Line 696: Line 697:
 
On teste le BIT nr°3 de l'octet de poids faible du mot
 
On teste le BIT nr°3 de l'octet de poids faible du mot
 
%0111101101100101.
 
%0111101101100101.
Il est ‚gal à 0: Z=1 dans le CCR, on saute en 'zero'.
+
Il est égal à 0: Z=1 dans le CCR, on saute en 'zero'.
Le bit nr°3 a ‚t‚ chang‚ en son oppos‚:donc d0=%0111101101101101
+
Le bit nr°3 a été changé en son opposé:donc d0=%0111101101101101
   
   
Line 715: Line 716:
 
. Si le BIT est ACTIF: le bit Z du CCR est mis à 0
 
. Si le BIT est ACTIF: le bit Z du CCR est mis à 0
 
----- - -
 
----- - -
. Après le test, le bit conscern‚ est mis à 0.
+
. Après le test, le bit conscerné est mis à 0.
 
--- -------
 
--- -------
   
 
Pour la première forme:
 
Pour la première forme:
 
--------------
 
--------------
L'op‚rande source indique le NR° du bit à tester, elle admet les
+
L'opérande source indique le NR° du bit à tester, elle admet les
 
modes d'adressage: --
 
modes d'adressage: --
   
Line 728: Line 729:
 
(avec 0<= NR° <=32, modulo 32)
 
(avec 0<= NR° <=32, modulo 32)
 
 
L'op‚rande destination est un registre de donn‚e.
+
L'opérande destination est un registre de donnée.
 
----------- ------------------
 
----------- ------------------
 
Pour la seconde forme:
 
Pour la seconde forme:
 
-------------
 
-------------
L'op‚rande source indique le NR° du bit à tester, elle admet les
+
L'opérande source indique le NR° du bit à tester, elle admet les
 
modes d'adressage: --
 
modes d'adressage: --
   
Line 740: Line 741:
 
(avec 0<= NR° <=32, modulo 32)
 
(avec 0<= NR° <=32, modulo 32)
   
L'op‚rande destination indique la donn‚e à traiter, elle admet
+
L'opérande destination indique la donnée à traiter, elle admet
 
les modes d'adressage:
 
les modes d'adressage:
   
Line 753: Line 754:
   
   
¶ part le bit Z du CCR, les bits du CCR ne sont pas affect‚s par
+
¶ part le bit Z du CCR, les bits du CCR ne sont pas affectés par
 
l'instruction. ---
 
l'instruction. ---
   
Line 766: Line 767:
 
On teste le BIT nr°3 de l'octet de poids faible du mot
 
On teste le BIT nr°3 de l'octet de poids faible du mot
 
%0111101101100101.
 
%0111101101100101.
Il est ‚gal à 0: Z=1 dans le CCR, on saute en 'zero'
+
Il est égal à 0: Z=1 dans le CCR, on saute en 'zero'
Le bit nr°3 de d0 a ‚t‚ mis à 0:d0 reste inchang‚
+
Le bit nr°3 de d0 a été mis à 0:d0 reste inchangé
   
   
Line 779: Line 780:
 
------------------
 
------------------
   
ADDX est identique à ADD, sauf qu'ici l'op‚rande source est augment‚e
+
ADDX est identique à ADD, sauf qu'ici l'opérande source est augmentée
du bit X du CCR et ajout‚e à (dans) l'op‚rande destination.
+
du bit X du CCR et ajoutée à (dans) l'opérande destination.
   
Le bit X du CCR est une copie du bit C et est mis à 1 si le r‚sultat
+
Le bit X du CCR est une copie du bit C et est mis à 1 si le résultat
d'une op‚ration provoque une retenue.
+
d'une opération provoque une retenue.
Ceci permet donc de faire des additions avec une pr‚cision sup‚rieure
+
Ceci permet donc de faire des additions avec une précision supérieure
 
à un L-M: on peut donc additionner deux L-M avec ADDX !
 
à un L-M: on peut donc additionner deux L-M avec ADDX !
 
 
Tous les bits du CCR sont affect‚s par ADDX.
+
Tous les bits du CCR sont affectés par ADDX.
 
---
 
---
NB: Pour ‚viter q'une retenue ant‚rieure perturbe une addition avec
+
NB: Pour éviter q'une retenue antérieure perturbe une addition avec
 
-- ADDX, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR avant
 
-- ADDX, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR avant
 
l'addition.
 
l'addition.
Line 802: Line 803:
 
--------------------
 
--------------------
   
ABCD est identique à ADD, sauf qu'ici l'op‚rande source est augment‚e
+
ABCD est identique à ADD, sauf qu'ici l'opérande source est augmentée
du bit X du CCR et ajout‚e à (dans) l'op‚rande destination.
+
du bit X du CCR et ajoutée à (dans) l'opérande destination.
   
Seule la taille .B est autoris‚e.
+
Seule la taille .B est autorisée.
   
Le bit X du CCR est une copie du bit C et est mis à 1 si le r‚sultat
+
Le bit X du CCR est une copie du bit C et est mis à 1 si le résultat
d'une op‚ration provoque une retenue.
+
d'une opération provoque une retenue.
   
Les bits du V et N du CCR ne sont pas affect‚s par ABCD.
+
Les bits du V et N du CCR ne sont pas affectés par ABCD.
 
---
 
---
Le bit C est mis à 1 seulement si il y a une retenue D‚cimale.
+
Le bit C est mis à 1 seulement si il y a une retenue Décimale.
   
NB: Pour ‚viter q'une retenue ant‚rieure perturbe une addition avec
+
NB: Pour éviter q'une retenue antérieure perturbe une addition avec
 
-- ABCD, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR avant
 
-- ABCD, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR avant
 
l'addition.
 
l'addition.
Line 828: Line 829:
 
------------------
 
------------------
   
SUBX est identique à SUB, sauf qu'ici l'op‚rande source est augment‚e
+
SUBX est identique à SUB, sauf qu'ici l'opérande source est augmentée
du bit X du CCR et retranch‚e à (dans) l'op‚rande destination.
+
du bit X du CCR et retranchée à (dans) l'opérande destination.
   
Le bit X du CCR est une copie du bit C et est mis à 1 si le r‚sultat
+
Le bit X du CCR est une copie du bit C et est mis à 1 si le résultat
d'une op‚ration provoque une retenue.
+
d'une opération provoque une retenue.
Ceci permet donc de faire des soustractions avec une pr‚cision
+
Ceci permet donc de faire des soustractions avec une précision
sup‚rieure à un L-M: on peut donc soustraire deux L-M avec SUBX !
+
supérieure à un L-M: on peut donc soustraire deux L-M avec SUBX !
 
 
Tous les bits du CCR sont affect‚s par SUBX.
+
Tous les bits du CCR sont affectés par SUBX.
 
---
 
---
NB: Pour ‚viter q'une retenue ant‚rieure perturbe une addition avec
+
NB: Pour éviter q'une retenue antérieure perturbe une addition avec
 
-- SUBX, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR avant
 
-- SUBX, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR avant
 
la soustraction.
 
la soustraction.
Line 850: Line 851:
 
--------------------
 
--------------------
   
SBCD est identique à SUB, sauf qu'ici l'op‚rande source est augment‚e
+
SBCD est identique à SUB, sauf qu'ici l'opérande source est augmentée
du bit X du CCR et ajout‚e à (dans) l'op‚rande destination.
+
du bit X du CCR et ajoutée à (dans) l'opérande destination.
   
Seule la taille .B est autoris‚e.
+
Seule la taille .B est autorisée.
   
Le bit X du CCR est une copie du bit C et est mis à 1 si le r‚sultat
+
Le bit X du CCR est une copie du bit C et est mis à 1 si le résultat
d'une op‚ration provoque une retenue.
+
d'une opération provoque une retenue.
   
Les bits du V et N du CCR ne sont pas affect‚s par SBCD.
+
Les bits du V et N du CCR ne sont pas affectés par SBCD.
 
---
 
---
Le bit C est mis à 1 seulement si il y a une retenue D‚cimale.
+
Le bit C est mis à 1 seulement si il y a une retenue Décimale.
   
NB: Pour ‚viter q'une retenue ant‚rieure perturbe une soustraction
+
NB: Pour éviter q'une retenue antérieure perturbe une soustraction
 
-- avec SBCD, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR
 
-- avec SBCD, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR
 
avant la soustraction.
 
avant la soustraction.
Line 871: Line 872:
 
--------------
 
--------------
   
NEGX est identique à NEG, sauf qu'ici l'op‚rande source est augment‚e
+
NEGX est identique à NEG, sauf qu'ici l'opérande source est augmentée
 
du bit X du CCR avant d'ètre soustraite de 0.
 
du bit X du CCR avant d'ètre soustraite de 0.
   
L'op‚rande source admet les modes d'adressage:
+
L'opérande source admet les modes d'adressage:
 
------
 
------
 
dn
 
dn
Line 886: Line 887:
 
d(an,rn)
 
d(an,rn)
   
Le bit X du CCR est une copie du bit C et est mis à 1 si le r‚sultat
+
Le bit X du CCR est une copie du bit C et est mis à 1 si le résultat
d'une op‚ration provoque une retenue.
+
d'une opération provoque une retenue.
 
 
Tous les bits du CCR sont affect‚s par NEGX.
+
Tous les bits du CCR sont affectés par NEGX.
 
---
 
---
NB: Pour ‚viter q'une retenue ant‚rieure perturbe une negation avec
+
NB: Pour éviter q'une retenue antérieure perturbe une negation avec
 
-- NEGX, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR avant
 
-- NEGX, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR avant
la n‚gation.
+
la négation.
   
   
Line 900: Line 901:
 
----------------
 
----------------
   
NBCD est identique à NEG, sauf qu'ici l'op‚rande source est augment‚e
+
NBCD est identique à NEG, sauf qu'ici l'opérande source est augmentée
 
du bit X du CCR puis soustraite de 0.
 
du bit X du CCR puis soustraite de 0.
   
Seule la taille .B est autoris‚e.
+
Seule la taille .B est autorisée.
   
L'op‚rande source admet les modes d'adressage:
+
L'opérande source admet les modes d'adressage:
 
------
 
------
 
dn
 
dn
Line 917: Line 918:
 
d(an,rn)
 
d(an,rn)
   
Le bit X du CCR est une copie du bit C et est mis à 1 si le r‚sultat
+
Le bit X du CCR est une copie du bit C et est mis à 1 si le résultat
d'une op‚ration provoque une retenue.
+
d'une opération provoque une retenue.
   
Les bits du V et N du CCR ne sont pas affect‚s par NBCD.
+
Les bits du V et N du CCR ne sont pas affectés par NBCD.
 
---
 
---
Le bit C est mis à 1 seulement si il y a une retenue D‚cimale.
+
Le bit C est mis à 1 seulement si il y a une retenue Décimale.
   
NB: Pour ‚viter q'une retenue ant‚rieure perturbe une n‚gation avec
+
NB: Pour éviter q'une retenue antérieure perturbe une négation avec
 
-- NBCD, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR avant
 
-- NBCD, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR avant
la n‚gation.
+
la négation.
   
   
Line 936: Line 937:
 
JMP permet d'effectuer un saut à l'adresse destination.
 
JMP permet d'effectuer un saut à l'adresse destination.
   
L'op‚rande destination admet les modes d'adressage:
+
L'opérande destination admet les modes d'adressage:
 
-----------
 
-----------
 
BBBB
 
BBBB
Line 950: Line 951:
 
du PC à l'adresse destination.
 
du PC à l'adresse destination.
   
Le CCR n'est pas affect‚.
+
Le CCR n'est pas affecté.
 
---
 
---
 
 
Line 968: Line 969:
 
------------
 
------------
   
BRA permet d'effectuer un saut à l'adresse point‚e par le Label
+
BRA permet d'effectuer un saut à l'adresse pointée par le Label
 
(comme avec JMP)
 
(comme avec JMP)
   
Line 974: Line 975:
 
du PC à l'adresse destination.
 
du PC à l'adresse destination.
   
Le CCR n'est pas affect‚.
+
Le CCR n'est pas affecté.
 
---
 
---
   
Line 986: Line 987:
 
------------------
 
------------------
   
Comme JMP, JSR permet d'effectuer un saut à l'adresse point‚e par
+
Comme JMP, JSR permet d'effectuer un saut à l'adresse pointée par
l'op‚rande destination.
+
l'opérande destination.
   
L'op‚rande destination admet les modes d'adressage:
+
L'opérande destination admet les modes d'adressage:
 
-----------
 
-----------
 
BBBB
 
BBBB
Line 1,000: Line 1,001:
   
 
 
De plus, l'adresse de l'instruction qui suit JSR est d‚pos‚e dans
+
De plus, l'adresse de l'instruction qui suit JSR est déposée dans
 
la pile système (SP):
 
la pile système (SP):
   
 
On distingue 2 types de PILES:
 
On distingue 2 types de PILES:
.La pile système et les piles implant‚es par l'utilisateur.
+
.La pile système et les piles implantées par l'utilisateur.
.La pile système est point‚e par le registre A7 ou SP.
+
.La pile système est pointée par le registre A7 ou SP.
.La diff‚rence entre ces 2 piles r‚side dans le fait qu'elles sont
+
.La différence entre ces 2 piles réside dans le fait qu'elles sont
g‚r‚es de façon entièrement ind‚pendantes.
+
gérées de façon entièrement indépendantes.
 
.Si on se trouve en MODE SUPERVISEUR, la pile système nous est
 
.Si on se trouve en MODE SUPERVISEUR, la pile système nous est
 
disponible.
 
disponible.
.Si on se trouve en MODE UTILISATEUR, la pile est nomm‚e la pile
+
.Si on se trouve en MODE UTILISATEUR, la pile est nommée la pile
 
utilisateur.
 
utilisateur.
   
La PILE système est une partie particulière de la m‚moire, elle
+
La PILE système est une partie particulière de la mémoire, elle
est motament utilis‚e par les instructions de saut pour y d‚poser
+
est motament utilisée par les instructions de saut pour y déposer
 
l'adresse de retour à l'instruction.
 
l'adresse de retour à l'instruction.
   
Line 1,022: Line 1,023:
 
|--------|--------|
 
|--------|--------|
   
On peut ranger des donn‚es dans cette pile. (c'est comme ça par exp
+
On peut ranger des données dans cette pile. (c'est comme ça par exp
 
qu'on passe les paramètres aux fonctions du Bios,Xbios,Gemdos)
 
qu'on passe les paramètres aux fonctions du Bios,Xbios,Gemdos)
   
Le rangement des donn‚es dans la Pile système se fait :
+
Le rangement des données dans la Pile système se fait :
   
.Soit par pr‚d‚cr‚mentation du pointeur de pile SP ( -(sp) )
+
.Soit par prédécrémentation du pointeur de pile SP ( -(sp) )
   
- Dans ce cas, la lecture des donn‚es se fera par mode (sp)+
+
- Dans ce cas, la lecture des données se fera par mode (sp)+
   
.Soit par postincr‚mentation du pointeur de pile SP ( (sp)+ )
+
.Soit par postincrémentation du pointeur de pile SP ( (sp)+ )
 
 
- Dans ce cas, la lecture des donn‚es se fera par mode -(sp)
+
- Dans ce cas, la lecture des données se fera par mode -(sp)
   
   
 
NB:Je vous rappelle que le SP (Stack Pointer) doit uniquement pointer
 
NB:Je vous rappelle que le SP (Stack Pointer) doit uniquement pointer
 
-- des adresses PAIRES !
 
-- des adresses PAIRES !
Les d‚cr‚mentations ou incr‚mentations du SP d'1 unit‚ seront donc
+
Les décrémentations ou incrémentations du SP d'1 unité seront donc
 
interdites.
 
interdites.
   
   
Exemple d'empilement de donn‚es en mode pr‚d‚cr‚ment‚:
+
Exemple d'empilement de données en mode prédécrémenté:
 
-------
 
-------
 
MOVE #5-(sp) ;5=%101
 
MOVE #5-(sp) ;5=%101
Line 1,050: Line 1,051:
   
 
|--------|--------|
 
|--------|--------|
SP ----->|00000000|00000011| /|\ On empile les donn‚es
+
SP ----->|00000000|00000011| /|\ On empile les données
 
|00000000|00000101| | en mode -(SP)
 
|00000000|00000101| | en mode -(SP)
 
SP avant>|--------|--------|
 
SP avant>|--------|--------|
   
SP a ‚t‚ d‚cr‚ment‚ de 4 unit‚s ( -(sp) 2 fois avec .W )
+
SP a été décrémenté de 4 unités ( -(sp) 2 fois avec .W )
   
   
Line 1,063: Line 1,064:
   
 
|--------|--------|
 
|--------|--------|
SP avant>|00000000|00000011| | On d‚pile les donn‚es
+
SP avant>|00000000|00000011| | On dépile les données
 
|00000000|00000101| \|/ en mode (SP)+
 
|00000000|00000101| \|/ en mode (SP)+
 
SP ----->|--------|--------|
 
SP ----->|--------|--------|
   
SP a ‚t‚ incr‚ment‚ de 4 unit‚s ( (sp)+ 2 fois avec .W )
+
SP a été incrémenté de 4 unités ( (sp)+ 2 fois avec .W )
   
 
d0 contiendra le MOT 3
 
d0 contiendra le MOT 3
 
d1 contiendra le MOT 5
 
d1 contiendra le MOT 5
   
SP retrouve sa valeur initiale apr‚s le d‚pilement des donn‚es.
+
SP retrouve sa valeur initiale aprés le dépilement des données.
   
 
NB: Il sera important de veiller à redonner sa valeur initiale au
 
NB: Il sera important de veiller à redonner sa valeur initiale au
 
-- SP après s'ètre servi de la PILE système car la taille de celle-
 
-- SP après s'ètre servi de la PILE système car la taille de celle-
ci est limit‚e.
+
ci est limitée.
   
   
Mais revennons à JSR: Nous avons vu que l'instruction d‚pose
+
Mais revennons à JSR: Nous avons vu que l'instruction dépose
 
l'adresse de la prochaine instruction qui suit JSR dans la pile
 
l'adresse de la prochaine instruction qui suit JSR dans la pile
 
système avant d'effectuer un saut à l'adresse destination.
 
système avant d'effectuer un saut à l'adresse destination.
   
SP est donc d‚cr‚ment‚ de 4 unit‚s (car une adresse est contenue
+
SP est donc décrémenté de 4 unités (car une adresse est contenue
 
dans un L-M)
 
dans un L-M)
   
Line 1,090: Line 1,091:
 
|--------|--------|
 
|--------|--------|
 
SP ----->|XXXXXXXX|XXXXXXXX| /|\ L'adresse ( L-M ) de retour
 
SP ----->|XXXXXXXX|XXXXXXXX| /|\ L'adresse ( L-M ) de retour
|XXXXXXXX|XXXXXXXX| | après JSR est point‚e par
+
|XXXXXXXX|XXXXXXXX| | après JSR est pointée par
SP avant>|--------|--------| SP qui a ‚t‚ d‚cr‚ment‚ de
+
SP avant>|--------|--------| SP qui a été décrémenté de
4 unit‚s ( -(SP) avec .L )
+
4 unités ( -(SP) avec .L )
   
   
Cette adresse sera d‚pil‚e par la suite à la fin du sous programme
+
Cette adresse sera dépilée par la suite à la fin du sous programme
par une instruction sp‚cifique et sera charg‚e dans le PC:
+
par une instruction spécifique et sera chargée dans le PC:
 
Ceci provoquera le retour à l'instruction suivant JSR.
 
Ceci provoquera le retour à l'instruction suivant JSR.
   
 
JSR diffère donc de JMP par le fait que JSR sauve l'adresse de la
 
JSR diffère donc de JMP par le fait que JSR sauve l'adresse de la
 
prochaine instruction qui la suit dans la pile système, ceci afin
 
prochaine instruction qui la suit dans la pile système, ceci afin
qu'il soit possible de revenir à cette adresse après avoir saut‚
+
qu'il soit possible de revenir à cette adresse après avoir sauté
 
à l'adresse destination de JSR.
 
à l'adresse destination de JSR.
 
 
Line 1,110: Line 1,111:
   
 
BSR est identique à JSR, sauf que certains assembleurs permettent de
 
BSR est identique à JSR, sauf que certains assembleurs permettent de
fixer la longueur du d‚placement (BRA.S (Mot) ou BRA.L (L-M) )
+
fixer la longueur du déplacement (BRA.S (Mot) ou BRA.L (L-M) )
 
 
(Ceci n'a pas de r‚el int‚rêt pour nous ...)
+
(Ceci n'a pas de réel intérêt pour nous ...)
   
   
Line 1,123: Line 1,124:
 
suit l'instruction appellante JSR.
 
suit l'instruction appellante JSR.
   
RTS d‚pile (par mode postincr‚ment‚) l'adresse d‚pos‚e par JSR et la
+
RTS dépile (par mode postincrémenté) l'adresse déposée par JSR et la
 
charge dans le PC:ceci a pour effet de provoquer un saut à l'adresse
 
charge dans le PC:ceci a pour effet de provoquer un saut à l'adresse
 
qui suit JSR.
 
qui suit JSR.
Line 1,129: Line 1,130:
 
SP retrouve donc sa valeur initiale.
 
SP retrouve donc sa valeur initiale.
   
Le CCR n'est pas modifi‚ par RTS.
+
Le CCR n'est pas modifié par RTS.
 
---
 
---
   
Line 1,140: Line 1,141:
   
 
...... ;on considère qu'ici se trouve une instruction
 
...... ;on considère qu'ici se trouve une instruction
;qui stoppe le programme pour ‚viter d'aller
+
;qui stoppe le programme pour éviter d'aller
 
;plus loin...
 
;plus loin...
   
Line 1,148: Line 1,149:
 
BSS
 
BSS
   
resu DS.W 1 ;r‚serve un mot
+
resu DS.W 1 ;réserve un mot
   
 
END
 
END
Line 1,162: Line 1,163:
 
RTR est identique à RTS sauf que RTR:
 
RTR est identique à RTS sauf que RTR:
   
.D‚pile 1 MOT de la pile système par mode postincr‚ment‚ et le place
+
.Dépile 1 MOT de la pile système par mode postincrémenté et le place
 
dans le CCR.
 
dans le CCR.
   
.D‚pile 1 L-M de la pile système par mode postincr‚mant‚ et le place
+
.Dépile 1 L-M de la pile système par mode postincrémanté et le place
 
dans le PC, tout comme RTS.
 
dans le PC, tout comme RTS.
   
Il faudra bien entendu que les 3 premiers MOTS point‚s par SP
+
Il faudra bien entendu que les 3 premiers MOTS pointés par SP
 
correspondent aux besoins de RTR.
 
correspondent aux besoins de RTR.
 
 
Line 1,184: Line 1,185:
 
test MOVE sr,-(sp) ;sous-prg 'test':pose le SR (mot) dans la pile
 
test MOVE sr,-(sp) ;sous-prg 'test':pose le SR (mot) dans la pile
 
;(la pile contient donc à son sommet le SR (mot)
 
;(la pile contient donc à son sommet le SR (mot)
;puis l'adresse pos‚e par JSR (l-m) )
+
;puis l'adresse posée par JSR (l-m) )
 
SUB d0,d1 ;soustrait d0 de d1: d0=d1, le bit Z du CCR est
 
SUB d0,d1 ;soustrait d0 de d1: d0=d1, le bit Z du CCR est
;mis à 1.(avant SUB il ‚tait à 0)
+
;mis à 1.(avant SUB il était à 0)
RTR ;on d‚pile le SR puis l'adresse pos‚e par JSR et
+
RTR ;on dépile le SR puis l'adresse posée par JSR et
 
;on revient
 
;on revient
 
 
 
Après être revenu du sous-programme, le bit Z du CCR sera donc nul car
 
Après être revenu du sous-programme, le bit Z du CCR sera donc nul car
RTR a restor‚ le SR que nous avons d‚pos‚ avant la soustraction ...
+
RTR a restoré le SR que nous avons déposé avant la soustraction ...
   
   
Line 1,208: Line 1,209:
 
registres an et dn.
 
registres an et dn.
   
Seules les tailles .W ou .L sont autoris‚es.
+
Seules les tailles .W ou .L sont autorisées.
   
 
Pour la 1° forme:
 
Pour la 1° forme:
 
----------------
 
----------------
L'op‚rande destination admet les modes d'adressage:
+
L'opérande destination admet les modes d'adressage:
 
-----------
 
-----------
 
BBBB
 
BBBB
Line 1,224: Line 1,225:
   
 
On utilise communement le mode d'adressage -(an), dans ce cas, les
 
On utilise communement le mode d'adressage -(an), dans ce cas, les
registres sont empil‚s en m‚moire par adresses d‚croissantes, dans
+
registres sont empilés en mémoire par adresses décroissantes, dans
 
l'odre: a7->a0 , d7->d0
 
l'odre: a7->a0 , d7->d0
   
Si l'op‚rande source est du type: d0-d7/a0-a7 ,tous les registres sont
+
Si l'opérande source est du type: d0-d7/a0-a7 ,tous les registres sont
  +
transférés.
transf‚r‚s.
 
 
 
 
Sinon, on indique le 1° registre DN et le dernier registre DM à
 
Sinon, on indique le 1° registre DN et le dernier registre DM à
transfèrer (s‚par‚s du signe -) puis le 1° registre AN et le dernier
+
transfèrer (séparés du signe -) puis le 1° registre AN et le dernier
registre AM à transfèrer (s‚par‚s du signe -).
+
registre AM à transfèrer (séparés du signe -).
 
De plus:
 
De plus:
On s‚pare les registres DN et AN du signe / dans l'op‚rande source.
+
On sépare les registres DN et AN du signe / dans l'opérande source.
   
 
NB:La forme dn-dm/an-am est identique à la forme an-am/dn-dm pour
 
NB:La forme dn-dm/an-am est identique à la forme an-am/dn-dm pour
-- l'op‚rande source.
+
-- l'opérande source.
 
(de mème que la forme d0/d1/a0 est identique à la forme d0-d1/a0)
 
(de mème que la forme d0/d1/a0 est identique à la forme d0-d1/a0)
   
Le registre de donn‚e an destination est donc d‚cr‚ment‚ d'un nombre
+
Le registre de donnée an destination est donc décrémenté d'un nombre
‚gal à la taille x de MOVEM.x (2 si .W,4 si .L) multipli‚ par le
+
égal à la taille x de MOVEM.x (2 si .W,4 si .L) multiplié par le
 
nombre total de registres à transferer.
 
nombre total de registres à transferer.
   
Line 1,247: Line 1,248:
 
---
 
---
 
On empile les registres a2,a1 puis d5,d4,d3 dans la pile système.
 
On empile les registres a2,a1 puis d5,d4,d3 dans la pile système.
SP est d‚cr‚ment‚ de 6*4=24 unit‚s et pointe sur d3, le dernier
+
SP est décrémenté de 6*4=24 unités et pointe sur d3, le dernier
registre empil‚.
+
registre empilé.
   
 
MOVEM.L a5-a7,-(SP)
 
MOVEM.L a5-a7,-(SP)
   
 
On empile les registres a7,a6,a5 dans la pile système.
 
On empile les registres a7,a6,a5 dans la pile système.
SP est d‚cr‚ment‚ de 3*4=12 unit‚s et pointe sur a5, le dernier
+
SP est décrémenté de 3*4=12 unités et pointe sur a5, le dernier
registre empil‚
+
registre empilé
   
 
MOVEM.W d3/a0-a1,-(SP)
 
MOVEM.W d3/a0-a1,-(SP)
Line 1,260: Line 1,261:
 
On empile les mots de poids faible des registres a1,a0,d3 dans la pile
 
On empile les mots de poids faible des registres a1,a0,d3 dans la pile
 
système.
 
système.
SP est d‚cr‚ment‚ de 3*2=6 unit‚s et pointe sur le mot de poids faible
+
SP est décrémenté de 3*2=6 unités et pointe sur le mot de poids faible
de d3, le dernier mot empil‚.
+
de d3, le dernier mot empilé.
   
   
Line 1,267: Line 1,268:
 
Pour la 2° forme:
 
Pour la 2° forme:
 
-----------------
 
-----------------
L'op‚rande source admet les modes d'adressage:
+
L'opérande source admet les modes d'adressage:
 
------
 
------
 
BBBB
 
BBBB
Line 1,279: Line 1,280:
   
 
On utilise communement le mode d'adressage (an), dans ce cas, les
 
On utilise communement le mode d'adressage (an), dans ce cas, les
registres sont d‚pil‚s de la m‚moire par adresses croissantes, et
+
registres sont dépilés de la mémoire par adresses croissantes, et
 
remis dans les registres dans l'odre: d0->d7 , a0->a7
 
remis dans les registres dans l'odre: d0->d7 , a0->a7
   
Si l'op‚rande source est du type: d0-d7/a0-a7 ,tous les registres sont
+
Si l'opérande source est du type: d0-d7/a0-a7 ,tous les registres sont
  +
modifiés.
modifi‚s.
 
 
 
 
Sinon, on indique le 1° registre DN et le dernier registre DM à
 
Sinon, on indique le 1° registre DN et le dernier registre DM à
charger (s‚par‚s du signe -) puis le 1° registre AN et le dernier
+
charger (séparés du signe -) puis le 1° registre AN et le dernier
registre AM à charger (s‚par‚s du signe -).
+
registre AM à charger (séparés du signe -).
 
De plus:
 
De plus:
On s‚pare les registres DN et AN du signe / dans l'op‚rande source.
+
On sépare les registres DN et AN du signe / dans l'opérande source.
   
 
NB:La forme dn-dm/an-am est identique à la forme an-am/dn-dm pour
 
NB:La forme dn-dm/an-am est identique à la forme an-am/dn-dm pour
-- l'op‚rande source.
+
-- l'opérande source.
 
(de mème que la forme d0/d1/a0 est identique à la forme d0-d1/a0)
 
(de mème que la forme d0/d1/a0 est identique à la forme d0-d1/a0)
   
Le registre de donn‚e an destination est donc incr‚ment‚ d'un nombre
+
Le registre de donnée an destination est donc incrémenté d'un nombre
‚gal à la taille x de MOVEM.x (2 si .W,4 si .L) multipli‚ par le
+
égal à la taille x de MOVEM.x (2 si .W,4 si .L) multiplié par le
 
nombre total de registres à modifier.
 
nombre total de registres à modifier.
 
Le registre an destination retrouve donc sa valeur initiale après le
 
Le registre an destination retrouve donc sa valeur initiale après le
 
chargement des registres.
 
chargement des registres.
ATTENTION, il faudra veiller à ce que les donn‚es n‚cessaires soient
+
ATTENTION, il faudra veiller à ce que les données nécessaires soient
pr‚sentes à l'adresse indiqu‚e.
+
présentes à l'adresse indiquée.
   
 
Exp: MOVEM.L (SP)+,d3-d5/a0-a2
 
Exp: MOVEM.L (SP)+,d3-d5/a0-a2
 
---
 
---
On d‚pile les L-M point‚s par SP et on les copies dans d3,d4,d5 puis
+
On dépile les L-M pointés par SP et on les copies dans d3,d4,d5 puis
 
a0,a1,a2.
 
a0,a1,a2.
Dans la pile système, SP est incr‚ment‚ de 6*4=24 unit‚s.
+
Dans la pile système, SP est incrémenté de 6*4=24 unités.
   
 
MOVEM.L (SP)+,a5-a7
 
MOVEM.L (SP)+,a5-a7
   
On d‚pile les L-M point‚s par SP et on les copies dans le registres a5,
+
On dépile les L-M pointés par SP et on les copies dans le registres a5,
 
a6,a7.
 
a6,a7.
Dans la pile système,SP est incr‚ment‚ de 3*4=12 unit‚s.
+
Dans la pile système,SP est incrémenté de 3*4=12 unités.
   
 
MOVEM.W (SP)+,d3/a0-a1
 
MOVEM.W (SP)+,d3/a0-a1
   
On d‚pile les mots point‚s par SP dans les mots de poids faible des
+
On dépile les mots pointés par SP dans les mots de poids faible des
 
registres d3,a0,a1.
 
registres d3,a0,a1.
Dans la piles système, SP est incr‚ment‚ de 3*2=6 unit‚s.
+
Dans la piles système, SP est incrémenté de 3*2=6 unités.
   
 
 
Line 1,330: Line 1,331:
 
MOVE #3,d0 ;mot 3 dans d0
 
MOVE #3,d0 ;mot 3 dans d0
 
MOVE #4,d1 ;mot 4 dans d1
 
MOVE #4,d1 ;mot 4 dans d1
MOVEM.L d0-d1,-(SP) ;on sauvegarde d0 et d1 (voir sch‚ma 1)
+
MOVEM.L d0-d1,-(SP) ;on sauvegarde d0 et d1 (voir schéma 1)
 
ADD d0,d1 ;d1=d0+d1=3+4=7
 
ADD d0,d1 ;d1=d0+d1=3+4=7
MOVEM.L (SP)+,d0-d1 ;on restore d0 et d1 (voir sch‚ma 2)
+
MOVEM.L (SP)+,d0-d1 ;on restore d0 et d1 (voir schéma 2)
   
 
Finalement: on a d0=3 et d1=4 à la fin du prg car les registres d0 et
 
Finalement: on a d0=3 et d1=4 à la fin du prg car les registres d0 et
d1 ont ‚t‚ sauvegard‚s puis recharg‚s.
+
d1 ont été sauvegardés puis rechargés.
 
 
sch‚ma 1:
+
schéma 1:
 
---------
 
---------
 
MOVEM.L d0-d1,-(SP)
 
MOVEM.L d0-d1,-(SP)
Line 1,348: Line 1,349:
 
|--------|--------| PILE
 
|--------|--------| PILE
 
SP après les 2--->|00000000|00000000| SYSTEME
 
SP après les 2--->|00000000|00000000| SYSTEME
d‚cr‚mentations |00000000|00000011|
+
décrémentations |00000000|00000011|
 
|00000000|00000000|
 
|00000000|00000000|
 
|00000000|00000100|
 
|00000000|00000100|
Line 1,354: Line 1,355:
   
   
sch‚ma 2:
+
schéma 2:
 
---------
 
---------
 
MOVEM.L (SP)+,d0-d1
 
MOVEM.L (SP)+,d0-d1
   
On DEPILE les L-M point‚s par SP au cours des incr‚mentations et on
+
On DEPILE les L-M pointés par SP au cours des incrémentations et on
 
les places dans d0 et d1.
 
les places dans d0 et d1.
   
Line 1,369: Line 1,370:
 
|00000000|00000100|
 
|00000000|00000100|
 
SP après les 2 -->|--------|--------|
 
SP après les 2 -->|--------|--------|
incr‚mentations (.L)
+
incrémentations (.L)
   
 
 
Line 1,383: Line 1,384:
 
 
 
MOVEP permet de sauvegarder (1° forme) ou recharger (2° forme) un
 
MOVEP permet de sauvegarder (1° forme) ou recharger (2° forme) un
registre de donn‚e dn (son mot de poids faible pour MOVEP.W ou le
+
registre de donnée dn (son mot de poids faible pour MOVEP.W ou le
registre en entier pour MOVEP.L) point‚ par un mode d'adressage du
+
registre en entier pour MOVEP.L) pointé par un mode d'adressage du
type indirect avec d‚placement d(an).
+
type indirect avec déplacement d(an).
   
MOVEP est une instruction très particulière car le registre de donn‚e
+
MOVEP est une instruction très particulière car le registre de donnée
dn est sauv‚ (ou charg‚) de la manière suivante:
+
dn est sauvé (ou chargé) de la manière suivante:
   
 
Pour MOVEP.W:
 
Pour MOVEP.W:
   
L'octet de poids faible de dn est sauvegard‚ ou charg‚ à partir de
+
L'octet de poids faible de dn est sauvegardé ou chargé à partir de
l'adresse point‚e par d(an) ( ou d(an)+1 si cette adresse ‚tait
+
l'adresse pointée par d(an) ( ou d(an)+1 si cette adresse était
 
IMPAIRE )
 
IMPAIRE )
   
L'octet de poids fort de dn est sauvegard‚ ou charg‚ à partir de
+
L'octet de poids fort de dn est sauvegardé ou chargé à partir de
l'adresse point‚e par d(an)+2 ( ou d(an)+3 si cette adresse ‚tait
+
l'adresse pointée par d(an)+2 ( ou d(an)+3 si cette adresse était
 
IMPAIRE )
 
IMPAIRE )
   
Line 1,403: Line 1,404:
 
Pour MOVEP.L
 
Pour MOVEP.L
   
L'octet de poids faible de dn est sauvegard‚ ou charg‚ à partir de
+
L'octet de poids faible de dn est sauvegardé ou chargé à partir de
l'adresse point‚e par d(an) ( ou d(an)+1 si cette adresse ‚tait
+
l'adresse pointée par d(an) ( ou d(an)+1 si cette adresse était
 
IMPAIRE )
 
IMPAIRE )
   
L'octet de poids fort du mot de poids faible de dn est sauvegard‚ ou
+
L'octet de poids fort du mot de poids faible de dn est sauvegardé ou
charg‚ à partir de l'adresse point‚e par d(an)+2 ( ou d(an)+3 si cette
+
chargé à partir de l'adresse pointée par d(an)+2 ( ou d(an)+3 si cette
adresse ‚tait IMPAIRE )
+
adresse était IMPAIRE )
   
L'octet de poids faible du mot de poids fort de dn est sauvegard‚ ou
+
L'octet de poids faible du mot de poids fort de dn est sauvegardé ou
charg‚ à partir de l'adresse point‚e par d(an)+4 ( ou d(an)+5 si cette
+
chargé à partir de l'adresse pointée par d(an)+4 ( ou d(an)+5 si cette
adresse ‚tait IMPAIRE )
+
adresse était IMPAIRE )
   
L'octet de poids fort de dn est sauvegard‚ ou charg‚ à partir de
+
L'octet de poids fort de dn est sauvegardé ou chargé à partir de
l'adresse point‚e par d(an)+6 (ou d(an)+7 si cette adresse ‚tait
+
l'adresse pointée par d(an)+6 (ou d(an)+7 si cette adresse était
 
IMPAIRE )
 
IMPAIRE )
   
Line 1,455: Line 1,456:
   
   
MOVEP permet donc TOUJOURS de poser un registre de donn‚e en m‚moire
+
MOVEP permet donc TOUJOURS de poser un registre de donnée en mémoire
 
sur des adresses PAIRES.(Par alternance d'octets 'vides' et d'octets
 
sur des adresses PAIRES.(Par alternance d'octets 'vides' et d'octets
 
contenus dans dn qui se situent eux toujours à des adresses paires )
 
contenus dans dn qui se situent eux toujours à des adresses paires )
Line 1,486: Line 1,487:
 
poids de d0 soit %00000001
 
poids de d0 soit %00000001
   
Tous ces octets sont situ‚s à des adresses paires.
+
Tous ces octets sont situés à des adresses paires.
   
   
Line 1,493: Line 1,494:
 
--------------
 
--------------
   
PEA pose l'adresse de l'op‚rande source dans la pile système sous la
+
PEA pose l'adresse de l'opérande source dans la pile système sous la
forme d'un L-M, SP sera donc d‚cr‚cment‚ de 4 unit‚s.
+
forme d'un L-M, SP sera donc décrécmenté de 4 unités.
   
L'op‚rande source admet les modes d'adressage:
+
L'opérande source admet les modes d'adressage:
 
------
 
------
 
BBBB
 
BBBB
Line 1,506: Line 1,507:
 
d(pc,rn)
 
d(pc,rn)
   
Le CCR n'est pas affect‚ par PEA.
+
Le CCR n'est pas affecté par PEA.
 
---
 
---
 
Exemple d'utilisation:
 
Exemple d'utilisation:
 
----------------------
 
----------------------
PEA eee ;pose l'adresse point‚e par le label 'eee' dans la
+
PEA eee ;pose l'adresse pointée par le label 'eee' dans la
 
;pile système.(voir 1°)
 
;pile système.(voir 1°)
MOVE.L (SP)+,a0 ;d‚pile le L-M point‚ par SP et le pose dans a0
+
MOVE.L (SP)+,a0 ;dépile le L-M pointé par SP et le pose dans a0
 
;(voir 2°)
 
;(voir 2°)
JMP (a0) ;saute à l'adresse point‚e par a0 (donc en 'eee')
+
JMP (a0) ;saute à l'adresse pointée par a0 (donc en 'eee')
   
 
MOVE #4,d0
 
MOVE #4,d0
Line 1,522: Line 1,523:
 
END
 
END
 
 
Finalement: d1=3 et d0 est inutilis‚.
+
Finalement: d1=3 et d0 est inutilisé.
   
 
1°) La pile système ressemblera donc à cela après un PEA:
 
1°) La pile système ressemblera donc à cela après un PEA:
 
---
 
---
 
|--------|--------|
 
|--------|--------|
SP ----->|XXXXXXXX|XXXXXXXX| /|\ L'adresse ( L-M ) de l'op‚rande
+
SP ----->|XXXXXXXX|XXXXXXXX| /|\ L'adresse ( L-M ) de l'opérande
|XXXXXXXX|XXXXXXXX| | source est empil‚e dans la pile
+
|XXXXXXXX|XXXXXXXX| | source est empilée dans la pile
SP avant>|--------|--------| système:SP est donc d‚cr‚ment‚
+
SP avant>|--------|--------| système:SP est donc décrémenté
de 4 unit‚s ( -(SP) avec .L )
+
de 4 unités ( -(SP) avec .L )
   
   
Line 1,536: Line 1,537:
 
---
 
---
 
|--------|--------|
 
|--------|--------|
SP avant>|XXXXXXXX|XXXXXXXX| | L'adresse ( L-M ) de point‚e
+
SP avant>|XXXXXXXX|XXXXXXXX| | L'adresse ( L-M ) de pointée
|XXXXXXXX|XXXXXXXX| \|/ par SP est pos‚e dans a0.
+
|XXXXXXXX|XXXXXXXX| \|/ par SP est posée dans a0.
SP ----->|--------|--------| SP qui a ‚t‚ incr‚ment‚ de
+
SP ----->|--------|--------| SP qui a été incrémenté de
4 unit‚s ( (SP)+ avec .L )
+
4 unités ( (SP)+ avec .L )
   
a0=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (l'adresse pos‚e par PEA)
+
a0=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (l'adresse posée par PEA)
   
   

Latest revision as of 12:20, 17 December 2023


       SUITE DU COURS SUR LES INSTRUCTIONS du fichier INSTRUC.DOC----------------------------------------------------------



   LSL    #BBB,dn   (.B),[.W],(.L)             (Local Shift Left)
   --------------
   ou

   LSL      dm,dn   (.B),[.W],(.L)
   --------------
   ou 

   LSL.W  destination  (.W)
   ------------------

   Permet de faire un décalage de #BBB ou dm (suivant la syntaxe) BITS
   du registre de donnée dn vers la gauche.
   Les bits de remplacement sont NULS.

   Il faut néanmoins que 1<= #BBB <= 8 pour la 1° forme.
                         -------------   

  Pour la 3° forme,les modes d'adressage autorisés pour l'opérande
  destination sont:
  -----------
   BBBB
   BB
   (an)
   -(an)
   (an)+
   d(an)
   d(an,rn)
   
   Mais dans ce cas, l'opération ne peut que porter le décalage sur
   1 SEUL BIT.

   
   C.à.d. que par exemple si  d0=%10000101110001101111011100000110 (mot)
   ------
   Et que j'écris   LSL.W  #1,dn 
 
                 ou MOVE.W #1,d1
                    LSL.W  d1,d0  ,on obtient: 

                              d0=%00001011100011011110111000001100 
                                  <--------                       <--:0    

   Tous les Bits du MOT de poids faible du registre de donnée dn (.W)
   ont été décalés d'1 bit vers la gauche:

   Le bit de plus faible poids rentrant est toujours remplacé par un 
   bit NUL.
   
   C.à.d. :  Qu'on sort #BBB ou dm BITS de dn par la gauche et que les
   bits de remplacement qui rentrent à droite de dn sont des bits NULS.

   Le contenu de dn est donc changé, le MSB a aussi des chances d'être
   changé,c'est pourquoi le SIGNE de dn ne sera pas forcement conservé.

   Le CCR sera changé en fonction de la nouvelle valeur de dn.
      ---
   N=1 si le MSB est 1, sinon il est égal à 0
   Z=1 si tous les bits de dn sont nuls, sinon il est égal à 0
   V est toujours mis à 0
   C et X sont mis à la valeur du DERNIER BIT SORTI de dn.
    

   Exemple d'utilisation:
   ----------------------
   MOVE     #%1111111101010101,d0  
   LSL.B    #5,d0

   On oppère un décalage de 5 bits de l'OCTET de poids faible de d0
   (seuls les bits 0 à 7 de d0 sont donc conscernés par lsl.B)

   On obtient: 
 
   CCR        --------<------<:0
 
   X=C=0  <-  1111111110100000 dans d0   

   5 bits 0 sont rentrés à droite de L'octet de poids faible de d0, le
   dernier bit à sortir de d0 etait nul: le bit X=C=0 dans le CCR




   LSR    #BBB,dn   (.B),[.W],(.L)             (Local Shift Right)
   --------------
   ou

   LSR      dm,dn   (.B),[.W],(.L)
   --------------
   ou

   LSR.W  destination (.W)
   ------------------

   Permet de faire un décalage de #BBB ou dm (suivant la syntaxe) BITS
   du registre de donnée dn vers la droite
   Les bits de remplacement sont NULS.

   Il faut néanmoins que 1<= #BBB <= 8 pour la 1° forme.
                         -------------   
   Pour la 3° forme,les modes d'adressage autorisés pour l'opérande
   destination sont:
   -----------
   BBBB
   BB
   (an)
   -(an)
   (an)+
   d(an)
   d(an,rn)
   
   Mais dans ce cas, l'opération ne peut que porter le décalage sur
   1 SEUL BIT.

   C.à.d. que par exemple si  d0=%10000101110001101111011100000110 (mot)
   ------
   Et que j'écris   LSR.W  #1,dn 
 
                 ou MOVE.W #1,d1
                    LSR.W  d1,d0  ,on obtient: 

                              d0=%01000010111000110111101110000011 
                             0:-->                        ------->   

   Tous les Bits du MOT de poids faible du registre de donnée dn (.W)
   ont été décalés d'1 bit vers la droite:

   Le bit de plus fort poids rentrant est toujours remplacé par un 
   bit NUL.
   
   C.à.d. :  Qu'on sort #BBB ou dm BITS de dn par la droite et que les
   bits de remplacement qui rentrent à gauche de dn sont des bits NULS.

   Le contenu de dn est donc changé, le MSB a aussi des chances d'être
   changé,c'est pourquoi le SIGNE de dn ne sera pas forcement conservé.

   Le CCR sera changé en fonction de la nouvelle valeur de dn.
      ---
   N=1 si le MSB est 1, sinon il est égal à 0
   Z=1 si tous les bits de dn sont nuls, sinon il est égal à 0
   V est toujours mis à 0
   C et X sont mis à la valeur du DERNIER BIT SORTI de dn.
    

   Exemple d'utilisation:
   ----------------------  
   MOVE     #%1111111101010101,d0  
   LSR.B    #5,d0

   On oppère un décalage de 5 bits de l'OCTET de poids faible de d0
 
   (seuls les bits 0 à 7 de d0 sont donc conscernés par lsr.B)

   On obtient: 
 
       ------0:>------>     CCR
 
   d0 :1111111100000010  -> X=C=1         

   5 bits 0 sont rentrés à gauche de L'octet de poids faible de d0, le
   dernier bit à sortir de d0 était égal à 1: le bit X=C=1 dans le CCR




   ASL    #BBB,dn   (.B),[.W],(.L)             (Arithmetic Shift Left)
   --------------
   ou

   ASL      dm,dn   (.B),[.W],(.L)
   --------------
   ou

   ASL.W  destination  (.W)
   ------------------

   Cette instruction est identique à LSL.

   Mais avec ASL, le bit V du CCR est mis à 1 si le MSB de l'opérande
   destination est changé.    ---



   
   ASR    #BBB,dn   (.B),[.W],(.L)             (Arithmetic Shift Right)
   --------------
   ou

   ASR      dm,dn   (.B),[.W],(.L)
   --------------
   ou

   ASR.W  destination  (.W)
   ------------------

   Permet de faire un décalage de #BBB ou dm (suivant la syntaxe) BITS
   du registre de donnée dn vers la droite
   Les bits de remplacement sont égaux au bit de plus fort poids.

   Il faut néanmoins que 1<= #BBB <= 8 pour la 1° forme.
                         -------------   
   Pour la 3° forme,les modes d'adressage autorisés pour l'opérande
   destination sont:
   -----------
   BBBB
   BB
   (an)
   -(an)
   (an)+
   d(an)
   d(an,rn)
   
   Mais dans ce cas, l'opération ne peut que porter la ROTATION sur
   1 SEUL BIT.

   C.à.d. que par exemple si  d0=%10000101110001101111011100000110 (mot)
   ------  
                              MSB=1
                  
   Et que j'écris   ASR.W  #1,dn 
 
                 ou MOVE.W #1,d1
                    ASR.W  d1,d0  ,on obtient: 

                              d0=%11000010111000110111101110000011 
                         MSB=1:-->                        ------->   


   Tous les Bits du MOT de poids faible du registre de donnée dn (.W)
   ont été décalés d'1 bit vers la droite:

   Le bit de plus faible poids sort par la droite.  
   Le bit à remplacer est identique au MSB précédant la rotation.
   
   C.à.d. :  Qu'on sort #BBB ou dm BITS de dn par la droite et qu'ils
   rentre des bits égaux au bit de plus fort poids à gauche,à la place
   du bit manquant.
   
   Le contenu de dn est donc changé mais son SIGNE est CONSERVE car le
   MSB reste inchangé.

   Le CCR sera changé en fonction de la nouvelle valeur de dn.
      ---
   N=1 si le MSB est 1, sinon il est égal à 0
   Z=1 si tous les bits de dn sont nuls, sinon il est égal à 0
   V est mis à 1 si le MSB de l'opérande destination a été changé.
   C et X sont mis à la valeur du DERNIER BIT SORTI de dn.
    

   Exemple d'utilisation:
   ----------------------  
   MOVE     #%1111111101010101,d0  
   ASR.W    #5,d0

   bit nr°15=1

   On oppère un décalage de 5 bits du MOT de poids faible de d0
   (seuls les bits 0 à 15 de d0 sont donc conscernés par asr.W)

   On obtient: 
 
   MSB>--------------->     CCR
 
   d0 :1111111111111010  -> X=C=1 à la fin        

   5 bits sont sortis à droite du MOT de poids faible de d0 et on a
   placé sucessivement 5 bits égaux à 1 (bit nr°15=1) à la place du
   bit de plus fort poids du MOT.
   Le signe de d0 reste conservé.

   le dernier bit à sortir de d0 était égal à 1:
   le bit X=C=1 dans le CCR




   ROL    #BBB,dn   (.B),[.W],(.L)             ROtate Left
   --------------
   ou

   ROL      dm,dn   (.B),[.W],(.L)
   --------------
   ou

   ROL.W  destination  (.W)
   ------------------

   Permet de faire une ROTATION de #BBB ou dm (suivant la syntaxe) BITS
   du registre de donnée dn vers la gauche.
   Les bits de remplacement sont égaux ceux qui viennent de sortir.

   Il faut néanmoins que 1<= #BBB <= 8 pour la 1° forme.
                         -------------   
   Pour la 3° forme,les modes d'adressage autorisés pour l'opérande
   destination sont:
   -----------
   BBBB
   BB
   (an)
   -(an)
   (an)+
   d(an)
   d(an,rn)
   
   Mais dans ce cas, l'opération ne peut que porter la ROTATION sur
   1 SEUL BIT.

   C.à.d. que par exemple si  d0=%10000101110001101111011100000110 (mot)
   ------
                  
   Et que j'écris   ROL.W  #1,dn 
 
                 ou MOVE.W #1,d1
                    ROL.W  d1,d0  ,on obtient: 

                              d0=%00001011100011011110111000001101 
                            <-----                                <:1


   Tous les Bits du MOT de poids faible du registre de donnée dn (.W)
   ont été décalés d'1 bit vers la gauche:

   Le bit de plus fort poids sort par la gauche et revient par la
   droite. (rotation)
   
   C.à.d. :  Qu'on sort #BBB ou dm BITS de dn par la gauche et qu'ils
   rentrent à nouveau à droite, à la place des bits manquants.
      
   Le contenu de dn est donc changé, le MSB risque donc aussi d'être
   changé:le signe du registre ne sera donc pas forcement conservé.

   Le CCR sera changé en fonction de la nouvelle valeur de dn.
      ---
   N=1 si le MSB est 1, sinon il est égal à 0
   Z=1 si tous les bits de dn sont nuls, sinon il est égal à 0
   V est mis à 1 si le MSB de l'opérande destination a été changé.
   C est mis à la valeur du DERNIER BIT SORTI de dn.
   X n'est pas affecté. 

   Exemple d'utilisation:
   ----------------------  
   MOVE     #%1111111101010101,d0  
   ROL.B    #5,d0


   On oppère un décalage de 5 bits de l'OCTET de poids faible de d0
   (seuls les bits 0 à 7 de d0 sont donc conscernés par rol.B)

   On obtient: 
 
       -------C<------<:C     CCR
 
   d0 :1111111110101010  ->   C=0 à la fin        

   5 bits sont sortis à gauche de l'octet de poids faible de d0 et ont
   été remis à la place du bit de plus faible poids de l'octet.   

   le dernier bit à sortir de d0 était égal à 0:
   le bit C=0 dans le CCR



   ROR    #BBB,dn   (.B),[.W],(.L)             ROtate Right
   --------------
   ou

   ROR      dm,dn   (.B),[.W],(.L)
   --------------
   ou

   ROR.W  destination  (.W)
   ------------------

   Permet de faire une ROTATION de #BBB ou dm (suivant la syntaxe) BITS
   du registre de donnée dn vers la droite.
   Les bits de remplacement sont égaux ceux qui viennent de sortir.

   Il faut néanmoins que 1<= #BBB <= 8 pour la 1° forme.
                         -------------   
   Pour la 3° forme,les modes d'adressage autorisés pour l'opérande
   destination sont:
   -----------
   BBBB
   BB
   (an)
   -(an)
   (an)+
   d(an)
   d(an,rn)
   
   Mais dans ce cas, l'opération ne peut que porter la ROTATION sur
   1 SEUL BIT.

   C.à.d. que par exemple si  d0=%10000101110001101111011100000110 (mot)
   ------
                  
   Et que j'écris   ROR.W  #1,dn 
 
                 ou MOVE.W #1,d1
                    ROR.W  d1,d0  ,on obtient: 

                              d0=%01000010111000110111101110000011 
                               -->                                --->  


   Tous les Bits du MOT de poids faible du registre de donnée dn (.W)
   ont été décalés d'1 bit vers la droite:

   Le bit de plus faible poids sort par la droite et revient par la
   gauche. (rotation)
   
   C.à.d. :  Qu'on sort #BBB ou dm BITS de dn par la droite et qu'ils
   rentrent à nouveau à gauche, à la place des bits manquants.
      
   Le contenu de dn est donc changé, le MSB risque donc aussi d'ètre
   changé:le signe du registre ne sera donc pas forcement conservé.

   Le CCR sera changé en fonction de la nouvelle valeur de dn.
      ---
   N=1 si le MSB est 1, sinon il est égal à 0
   Z=1 si tous les bits de dn sont nuls, sinon il est égal à 0
   V est mis à 1 si le MSB de l'opérande destination a été changé.
   C est mis à la valeur du DERNIER BIT SORTI de dn.
   X n'est pas affecté. 

   Exemple d'utilisation:
   ----------------------
   MOVE     #%1111111101010101,d0  
   ROR.B    #5,d0


   On oppère un décalage de 5 bits de l'OCTET de poids faible de d0
   (seuls les bits 0 à 7 de d0 sont donc conscernés par ror.B)

   On obtient: 
 
       -------C>------>:C       CCR
 
   d0 :1111111110101010  ->   C=1 à la fin        

   5 bits sont sortis à droite de l'octet de poids faible de d0 et ont
   été remis à la place du bit de plus fort poids de l'octet.   

   le dernier bit à sortir de d0 était égal à 1:
   le bit C=1 dans le CCR


   
   ROXL   #BBB,dn   (.B),[.W],(.L)             ROtate Left with eXtend
   --------------
   ou

   ROXL     dm,dn   (.B),[.W],(.L)
   --------------
   ou

   ROXL.W  destination  (.W)
   -------------------

 

   ROXL est identique à ROL à part qu'ici le bit X du CCR est ( tout
   comme le bit C) chargé avec le dernier bit qui vient de sortir et
   que c'est lui qui est recopié à la place du bit manquant.



   ROXR   #BBB,dn   (.B),[.W],(.L)             ROtate Right with eXtend
   --------------
   ou

   ROXR     dm,dn   (.B),[.W],(.L)
   --------------
   ou

   ROXR.W  destination  (.W)
   -------------------


   ROXR est identique à ROR à part qu'ici le bit X du CCR est ( tout
   comme le bit C) chargé avec le dernier bit qui vient de sortir et
   que c'est lui qui est recopié à la place du bit manquant.


  

   BTST   source,dn  (.B),[.W],(.L)         (TeST a Bit)
   ----------------
   ou
 
   BTST  source,destination   (.B),[.W],(.L)
   ------------------------

   Permet de tester la valeur (0 ou 1) d'un BIT.

   Si le BIT est NUL:   le bit Z du CCR est mis à 1
                 ---           -                  -    
   Si le BIT est ACTIF: le bit Z du CCR est mis à 0
                 -----         -                  -     

   Pour la première forme:
           -------------- 
   L'opérande source indique le NR° du bit à tester, elle admet les
   modes d'adressage:           --

   dn
   #BBB  
 
  (avec 0<= NR° <=32,  modulo 32)
       
   L'opérande destination est un registre de donnée.
              -----------      
   Pour la seconde forme:
           -------------
   L'opérande source indique le NR° du bit à tester, elle admet les
   modes d'adressage:           --   

   dn
   #BBB

   (avec 0<= NR° <=32,  modulo 32)

   L'opérande destination indique la donnée à traiter, elle admet les
   modes d'adressage:

   dn
   BBBB
   BB
   (an)
   -(an)
   (an)+
   d(an)
   d(an,rn)
   d(pc)
   d(pc,rn)


   ¶ part le bit Z du CCR, les bits du CCR ne sont pas affectés par 
   l'instruction.     ---   


   Exemple d'utilisation:
   ----------------------  
   MOVE     #%0111101101100101,d0 
   BTST.B   #3,d0                  ;Test le bit nr°3 de d0
   BEQ      zero                   ;Z=1 ?
   BNE      un                     ;Z=0 ?

   On teste le BIT nr°3 de l'octet de poids faible du mot
   %0111101101100101.
   Il est égal à 0: Z=1 dans le CCR, on saute en 'zero'



   BSET   source,dn  (.B),[.W],(.L)         (test a Bit and SET)
   ----------------
   ou
 
   BSET  source,destination   (.B),[.W],(.L)
   ------------------------

   Permet de tester la valeur (0 ou 1) d'un BIT.

.   Si le BIT est NUL:   le bit Z du CCR est mis à 1
                 ---           -               -   
.   Si le BIT est ACTIF: le bit Z du CCR est mis à 0
                 -----                         -           
.   Après le test, le BIT conscerné est mis à 1
                     ---               -------

   Pour la première forme:
           --------------
   L'opérande source indique le NR° du bit à tester, elle admet les
   modes d'adressage:           --   

   dn
   #BBB  
 
  (avec 0<= NR° <=32,  modulo 32)
       
   L'opérande destination est un registre de donnée.
              -----------        ------------------   
   Pour la seconde forme:
           -------------
   L'opérande source indique le NR° du bit à tester, elle admet les
   modes d'adressage:           --   

   dn
   #BBB

   (avec 0<= NR° <=32,  modulo 32)

   L'opérande destination indique la donnée à traiter, elle admet les
   modes d'adressage:

   dn
   BBBB
   BB
   (an)
   -(an)
   (an)+
   d(an)
   d(an,rn)


   ¶ part le bit Z du CCR, les bits du CCR ne sont pas affectés par 
   l'instruction.     ---


   Exemple d'utilisation:
   ---------------------  
   MOVE     #%0111101101100101,d0 
   BSET.B   #3,d0                  ;Test le bit nr°3 de d0 et SET à 1
   BEQ      zero                   ;Z=1 ?
   BNE      un                     ;Z=0 ?

   On teste le BIT nr°3 de l'octet de poids faible du mot
   %0111101101100101.
   Il est égal à 0: Z=1 dans le CCR, on saute en 'zero'.
   Le bit nr°3 a été mis à 1:donc d0=%0111101101101101




   BCHG   source,dn  (.B),[.W],(.L)         (Bit CHanGe)
   ----------------
   ou
 
   BCHG  source,destination   (.B),[.W],(.L)
   ------------------------

   Permet de tester la valeur (0 ou 1) d'un BIT.

   Si le BIT est NUL: le bit Z du CCR est mis à 1

   Si le BIT est ACTIF: le bit Z du CCR est mis à 0

   Après le test, le bit conscerné est changé en son opposé:
 
 .  0 si il était égal à 1
 .  1 si il était égal à 0
 
   Pour la première forme:
           --------------
   L'opérande source indique le NR° du bit à tester, elle admet les
   modes d'adressage:           --

   dn
   #BBB  
 
  (avec 0<= NR° <=32,  modulo 32)
       
   L'opérande destination est un registre de donnée.
              -----------        ------------------
   Pour la seconde forme:
           -------------    
   L'opérande source indique le NR° du bit à tester, elle admet les
   modes d'adressage:           --

   dn
   #BBB

   (avec 0<= NR° <=32,  modulo 32)

   L'opérande destination indique la donnée à traiter, elle admet les
   modes d'adressage:

   dn
   BBBB
   BB

   (an)
   -(an)
   (an)+
   d(an)
   d(an,rn)


   ¶ part le bit Z du CCR, les bits du CCR ne sont pas affectés par 
   l'instruction.     ---


   Exemple d'utilisation:
   ----------------------  
   MOVE     #%0111101101100101,d0 
   BTST.B   #3,d0                  ;Test le bit nr°3 de d0
   BEQ      zero                   ;Z=1 ?
   BNE      un                     ;Z=0 ?

   On teste le BIT nr°3 de l'octet de poids faible du mot
   %0111101101100101.
   Il est égal à 0: Z=1 dans le CCR, on saute en 'zero'.
   Le bit nr°3 a été changé en son opposé:donc d0=%0111101101101101




   BCLR   source,dn  (.B),[.W],(.L)         (Bit CLeaR)
   ----------------
   ou
 
   BCLR  source,destination   (.B),[.W],(.L)
   ------------------------

   Permet de tester la valeur (0 ou 1) d'un BIT.

 .  Si le BIT est NUL:   le bit Z du CCR est mis à 1
                  ---           -                  - 
 .  Si le BIT est ACTIF: le bit Z du CCR est mis à 0
                  -----         -                  -  
 .  Après le test, le bit conscerné est mis à 0.
                      ---               -------   

   Pour la première forme:
           --------------
   L'opérande source indique le NR° du bit à tester, elle admet les
   modes d'adressage:           --

   dn
   #BBB  
 
  (avec 0<= NR° <=32,  modulo 32)
       
   L'opérande destination est un registre de donnée.
              -----------        ------------------  
   Pour la seconde forme:
           -------------
   L'opérande source indique le NR° du bit à tester, elle admet les
   modes d'adressage:           --

   dn
   #BBB

   (avec 0<= NR° <=32,  modulo 32)

   L'opérande destination indique la donnée à traiter, elle admet 
   les modes d'adressage:

   dn
   BBBB
   BB
   (an)
   -(an)
   (an)+
   d(an)
   d(an,rn)


   ¶ part le bit Z du CCR, les bits du CCR ne sont pas affectés par 
   l'instruction.     ---


   Exemple d'utilisation:
   ---------------------
   MOVE     #%0111101101100101,d0 
   BTST.B   #3,d0                  ;Test le bit nr°3 de d0
   BEQ      zero                   ;Z=1 ?
   BNE      un                     ;Z=0 ?

   On teste le BIT nr°3 de l'octet de poids faible du mot
   %0111101101100101.
   Il est égal à 0: Z=1 dans le CCR, on saute en 'zero'
   Le bit nr°3 de d0 a été mis à 0:d0 reste inchangé



  
   ADDX     dm,dn     (.B),[.W],(.L)        (ADD with eXtend)
   --------------
   ou
 
   ADDX   -(am),-(an) (.B),[.W],(.L) 
   ------------------

   ADDX est identique à ADD, sauf qu'ici l'opérande source est augmentée
   du bit X du CCR et ajoutée à (dans) l'opérande destination.

   Le bit X du CCR est une copie du bit C et est mis à 1 si le résultat
    d'une opération provoque une retenue.
   Ceci permet donc de faire des additions avec une précision supérieure
   à un L-M: on peut donc additionner deux L-M avec ADDX !
 
   Tous les bits du CCR sont affectés par ADDX.
                    ---
   NB: Pour éviter q'une retenue antérieure perturbe une addition avec
   --  ADDX, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR avant  
       l'addition.


  
   ABCD.B     dm,dn       (.B)        (ADD Decimal with eXtend)
   ----------------
   ou
 
   ABCD.B   -(am),-(an)   (.B)
   --------------------

   ABCD est identique à ADD, sauf qu'ici l'opérande source est augmentée
   du bit X du CCR et ajoutée à (dans) l'opérande destination.

   Seule la taille .B est autorisée.

   Le bit X du CCR est une copie du bit C et est mis à 1 si le résultat
   d'une opération provoque une retenue.

   Les bits du V et N du CCR ne sont pas affectés par ABCD.
                         ---
   Le bit C est mis à 1 seulement si il y a une retenue Décimale.

   NB: Pour éviter q'une retenue antérieure perturbe une addition avec
   --  ABCD, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR avant  
       l'addition.



  
   SUBX     dm,dn     (.B),[.W],(.L)        (SUBtract with eXtend)
   --------------
   ou
 
   SUBX   -(am),-(an) (.B),[.W],(.L) 
   ------------------

   SUBX est identique à SUB, sauf qu'ici l'opérande source est augmentée
   du bit X du CCR et retranchée à (dans) l'opérande destination.

   Le bit X du CCR est une copie du bit C et est mis à 1 si le résultat
   d'une opération provoque une retenue.
   Ceci permet donc de faire des soustractions avec une précision 
   supérieure à un L-M: on peut donc soustraire deux L-M avec SUBX !
 
   Tous les bits du CCR sont affectés par SUBX.
                    ---
   NB: Pour éviter q'une retenue antérieure perturbe une addition avec
   --  SUBX, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR avant  
       la soustraction.

  
   SBCD.B     dm,dn       (.B)        (Subtract Decimal with eXtend)
   ----------------
   ou
 
   SBCD.B   -(am),-(an)   (.B)
   --------------------

   SBCD est identique à SUB, sauf qu'ici l'opérande source est augmentée
   du bit X du CCR et ajoutée à (dans) l'opérande destination.

   Seule la taille .B est autorisée.

   Le bit X du CCR est une copie du bit C et est mis à 1 si le résultat
   d'une opération provoque une retenue.

   Les bits du V et N du CCR ne sont pas affectés par SBCD.
                         ---
   Le bit C est mis à 1 seulement si il y a une retenue Décimale.

   NB: Pour éviter q'une retenue antérieure perturbe une soustraction
   --  avec SBCD, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR
       avant la soustraction.



   NEGX    source   (.B),[.W],(.L)         (NEGate with eXtend) 
   --------------

   NEGX est identique à NEG, sauf qu'ici l'opérande source est augmentée
   du bit X du CCR avant d'ètre soustraite de 0.

   L'opérande source admet les modes d'adressage:
              ------      
     dn
     an
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)

   Le bit X du CCR est une copie du bit C et est mis à 1 si le résultat
   d'une opération provoque une retenue.
 
   Tous les bits du CCR sont affectés par NEGX.
                    ---
   NB: Pour éviter q'une retenue antérieure perturbe une negation avec
   --  NEGX, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR avant  
       la négation.


  
   NBCD.B    source       (.B)        (Negate Decimal with eXtend)
   ----------------

   NBCD est identique à NEG, sauf qu'ici l'opérande source est augmentée
   du bit X du CCR puis soustraite de 0.

   Seule la taille .B est autorisée.

   L'opérande source admet les modes d'adressage:
              ------ 
     dn
     an
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)

   Le bit X du CCR est une copie du bit C et est mis à 1 si le résultat
   d'une opération provoque une retenue.

   Les bits du V et N du CCR ne sont pas affectés par NBCD.
                         ---
   Le bit C est mis à 1 seulement si il y a une retenue Décimale.

   NB: Pour éviter q'une retenue antérieure perturbe une négation avec
   --  NBCD, on peut mettre le bit X du CCR à 0 avec MOVE #0,CCR avant  
       la négation.




   JMP    desination      (JuMP)
   -----------------

   JMP permet d'effectuer un saut à l'adresse destination.

   L'opérande destination admet les modes d'adressage:
              ----------- 
     BBBB
     BB
     (an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)

   
   Le saut se fait en chargeant la valeur actuelle du PC avec la valeur
   du PC à l'adresse destination.

   Le CCR n'est pas affecté.
      ---
     
   Exemples d'utilisation:
   -----------------------  
   JMP    ici
   ou
   LEA.L  ici,a0
   JMP    (a0)
   ou
   JMP    4(pc)
   etc...



   BRA    Label        (BRAnch)
   ------------

   BRA permet d'effectuer un saut à l'adresse pointée par le Label
   (comme avec JMP)

   Le saut se fait en chargeant la valeur actuelle du PC avec la valeur
   du PC à l'adresse destination.

   Le CCR n'est pas affecté.
      ---

   Exemple d'utilisation:
   ----------------------  
   BRA    laurent
  


   JSR    Destination    (Jump Sub Routine)
   ------------------

   Comme JMP, JSR permet d'effectuer un saut à l'adresse pointée par
   l'opérande destination.

   L'opérande destination admet les modes d'adressage:
              ----------- 
     BBBB
     BB
     (an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)

   
   De plus, l'adresse de l'instruction qui suit JSR est déposée dans
   la pile système (SP):

   On distingue 2 types de PILES:
  .La pile système et les piles implantées par l'utilisateur.
  .La pile système est pointée par le registre A7 ou SP.
  .La différence entre ces 2 piles réside dans le fait qu'elles sont
   gérées de façon entièrement indépendantes.
  .Si on se trouve en MODE SUPERVISEUR, la pile système nous est 
   disponible.
  .Si on se trouve en MODE UTILISATEUR, la pile est nommée la pile
   utilisateur.

   La PILE système est une partie particulière de la mémoire, elle
   est motament utilisée par les instructions de saut pour y déposer
   l'adresse de retour à l'instruction.

          |--------|--------|
          |--------|--------|   PILE  
          |--------|--------|   système
          |--------|--------|

   On peut ranger des données dans cette pile. (c'est comme ça par exp
   qu'on passe les paramètres aux fonctions du Bios,Xbios,Gemdos)    

   Le rangement des données dans la Pile système se fait :

   .Soit par prédécrémentation du pointeur de pile SP  ( -(sp) )

    - Dans ce cas, la lecture des données se fera par mode (sp)+

   .Soit par postincrémentation du pointeur de pile SP ( (sp)+ )  
                     
    - Dans ce cas, la lecture des données se fera par mode -(sp)


   NB:Je vous rappelle que le SP (Stack Pointer) doit uniquement pointer
   -- des adresses PAIRES !
      Les décrémentations ou incrémentations du SP d'1 unité seront donc
      interdites.


   Exemple d'empilement de données en mode prédécrémenté:
   -------  
   MOVE   #5-(sp)   ;5=%101
   MOVE   #3-(sp)   ;3=%11
 
   On obtient:

          |--------|--------|         
 SP ----->|00000000|00000011|       /|\   On empile les données 
          |00000000|00000101|        |    en mode -(SP)
 SP avant>|--------|--------|

   SP a été décrémenté de 4 unités ( -(sp) 2 fois avec .W )


   MOVE   (sp)+,d0
   MOVE   (sp)+,d1

   On obtient:

          |--------|--------|         
 SP avant>|00000000|00000011|        |    On dépile les données 
          |00000000|00000101|       \|/   en mode (SP)+
 SP ----->|--------|--------|        

   SP a été incrémenté de 4 unités ( (sp)+ 2 fois avec .W )

   d0 contiendra le MOT 3
   d1 contiendra le MOT 5

   SP retrouve sa valeur initiale aprés le dépilement des données.

   NB:   Il sera important de veiller à redonner sa valeur initiale au 
   --  SP après s'ètre servi de la PILE système car la taille de celle-
       ci est limitée.


   Mais revennons à JSR:    Nous avons vu que l'instruction dépose 
   l'adresse de la prochaine instruction qui suit JSR dans la pile
   système avant d'effectuer un saut à l'adresse destination.

   SP est donc décrémenté de 4 unités (car une adresse est contenue 
   dans un L-M)

   La pile système ressemblera donc à cela après un JSR:

          |--------|--------|         
 SP ----->|XXXXXXXX|XXXXXXXX|       /|\   L'adresse ( L-M ) de retour 
          |XXXXXXXX|XXXXXXXX|        |    après JSR est pointée par
 SP avant>|--------|--------|             SP qui a été décrémenté de
                                          4 unités ( -(SP) avec .L )


  Cette adresse sera dépilée par la suite à la fin du sous programme
  par une instruction spécifique et sera chargée dans le PC: 
  Ceci provoquera le retour à l'instruction suivant JSR.

  JSR diffère donc de JMP par le fait que JSR sauve l'adresse de la
  prochaine instruction qui la suit dans la pile système, ceci afin
  qu'il soit possible de revenir à cette adresse après avoir sauté
  à l'adresse destination de JSR.
   


  BSR     label          (Branch Sub Routine)  
  -------------

  BSR est identique à JSR, sauf que certains assembleurs permettent de
  fixer la longueur du déplacement (BRA.S (Mot) ou BRA.L (L-M) )
   
  (Ceci n'a pas de réel intérêt pour nous ...)



  RTS     (ReTurn from Sub routine) 
  ---

  C'est, (comme son nom l'indique) l'instruction qui marque la fin du
  sous programme et qui oppère un saut à la prochaine instruction qui
  suit l'instruction appellante JSR.

  RTS dépile (par mode postincrémenté) l'adresse déposée par JSR et la
  charge dans le PC:ceci a pour effet de provoquer un saut à l'adresse
  qui suit JSR.
 
  SP retrouve donc sa valeur initiale.

  Le CCR n'est pas modifié par RTS.
     ---

  Exemple d'utilisation:
  ----------------------
       MOVE    #3,d0   ;mot 3 dans d0
       MOVE    #8,d1   ;mot 8 dans d1
       JSR     ajoute  ;Appel du sous-programme 'ajoute'
       MOVE    d0,resu ;met le mot de poids faible de d0 en 'resu'

       ......          ;on considère qu'ici se trouve une instruction
                       ;qui stoppe le programme pour éviter d'aller
                       ;plus loin...

ajoute ADD     d1,d0   ;sous programme 'ajoute'
       RTS             ;fin du sous programme,retour ^

       BSS

resu   DS.W    1       ;réserve un mot

       END  


En 'resu', on trouvera le MOT 8+3=11




    RTR        (ReTurn & Restore CCR)
    ---
    RTR est identique à RTS sauf que RTR:

    .Dépile 1 MOT de la pile système par mode postincrémenté et le place
     dans le CCR.

    .Dépile 1 L-M de la pile système par mode postincrémanté et le place
     dans le PC, tout comme RTS.

    Il faudra bien entendu que les 3 premiers MOTS pointés par SP 
    correspondent aux besoins de RTR.
 

    Exemple d'utilisation:
    ----------------------      
         MOVE  #3,d0  ;3 dans d0
         MOVE  d0,d1  ;d0 dans d1
         JSR   test   ;va au sous prg 'test' et pose l'adresse de la 
                      ;prochaine instruction dans SP.
         MOVE  #1,d3   
          
         ..........   ;fin d'execution du prg pour ne pas aller plus loin
   
test     MOVE  sr,-(sp)  ;sous-prg 'test':pose le SR (mot) dans la pile
                         ;(la pile contient donc à son sommet le SR (mot)
                         ;puis l'adresse posée par JSR (l-m) )
         SUB   d0,d1     ;soustrait d0 de d1: d0=d1, le bit Z du CCR est
                         ;mis à 1.(avant SUB il était à 0)
         RTR             ;on dépile le SR puis l'adresse posée par JSR et
                         ;on revient
 
 Après être revenu du sous-programme, le bit Z du CCR sera donc nul car 
 RTR a restoré le SR que nous avons déposé avant la soustraction ...





 MOVEM   registres/registres,destination       [.W],(.L)
 ---------------------------------------
 ou

 MOVEM   source,registres/registres            [.W],(.L)
 ----------------------------------


 MOVEM permet la sauvegarde (1° forme) ou la restoration (2° forme) des
 registres an et dn.

 Seules les tailles .W ou .L sont autorisées.

 Pour la 1° forme:
 ----------------
 L'opérande destination admet les modes d'adressage:
            -----------
     BBBB
     BB
     (an)
     -(an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)

 On utilise communement le mode d'adressage -(an), dans ce cas, les
 registres sont empilés en mémoire par adresses décroissantes, dans
 l'odre: a7->a0 , d7->d0 

 Si l'opérande source est du type: d0-d7/a0-a7 ,tous les registres sont
 transférés.
 
 Sinon, on indique le 1° registre DN et le dernier registre DM à 
 transfèrer (séparés du signe -) puis le 1° registre AN et le dernier
 registre AM à transfèrer (séparés du signe -).
 De plus:
 On sépare les registres DN et AN du signe / dans l'opérande source.

 NB:La forme dn-dm/an-am est identique à la forme an-am/dn-dm pour
 -- l'opérande source.
    (de  mème que la forme d0/d1/a0 est identique à la forme d0-d1/a0)

 Le registre de donnée an destination est donc décrémenté d'un nombre
 égal à la taille x de MOVEM.x (2 si .W,4 si .L) multiplié par le 
 nombre total de registres à transferer.

 Exp: MOVEM.L  d3-d5/a0-a2,-(SP)
 ---
 On empile les registres a2,a1 puis d5,d4,d3 dans la pile système.
 SP est décrémenté de 6*4=24 unités et pointe sur d3, le dernier 
 registre empilé.

      MOVEM.L  a5-a7,-(SP)

 On empile les registres a7,a6,a5 dans la pile système.
 SP est décrémenté de 3*4=12 unités et pointe sur a5, le dernier
 registre empilé

     MOVEM.W  d3/a0-a1,-(SP)

 On empile les mots de poids faible des registres a1,a0,d3 dans la pile
 système.
 SP est décrémenté de 3*2=6 unités et pointe sur le mot de poids faible
 de d3, le dernier mot empilé.


 
 Pour la 2° forme:
 -----------------         
 L'opérande source admet les modes d'adressage:
            ------
     BBBB
     BB
     (an)
     (an)+
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)

 On utilise communement le mode d'adressage (an), dans ce cas, les
 registres sont dépilés de la mémoire par adresses croissantes, et
 remis dans les registres dans l'odre: d0->d7 , a0->a7 

 Si l'opérande source est du type: d0-d7/a0-a7 ,tous les registres sont
 modifiés.
 
 Sinon, on indique le 1° registre DN et le dernier registre DM à 
 charger (séparés du signe -) puis le 1° registre AN et le dernier
 registre AM à charger (séparés du signe -).
 De plus:
 On sépare les registres DN et AN du signe / dans l'opérande source.

 NB:La forme dn-dm/an-am est identique à la forme an-am/dn-dm pour
 -- l'opérande source.
    (de  mème que la forme d0/d1/a0 est identique à la forme d0-d1/a0)

 Le registre de donnée an destination est donc incrémenté d'un nombre
 égal à la taille x de MOVEM.x (2 si .W,4 si .L) multiplié par le 
 nombre total de registres à modifier.
 Le registre an destination retrouve donc sa valeur initiale après le
 chargement des registres.
 ATTENTION, il faudra veiller à ce que les données nécessaires soient 
 présentes à l'adresse indiquée.

 Exp: MOVEM.L  (SP)+,d3-d5/a0-a2
 ---
 On dépile les L-M pointés par SP et on les copies dans d3,d4,d5 puis 
 a0,a1,a2. 
 Dans la pile système, SP est incrémenté de 6*4=24 unités.

      MOVEM.L  (SP)+,a5-a7

 On dépile les L-M pointés par SP et on les copies dans le registres a5,
 a6,a7.
 Dans la pile système,SP est incrémenté de 3*4=12 unités.

     MOVEM.W  (SP)+,d3/a0-a1

 On dépile les mots pointés par SP dans les mots de poids faible des 
 registres d3,a0,a1.
 Dans la piles système, SP est incrémenté de 3*2=6 unités.

 

 MOVEM n'influence pas le CCR.
                          ---

 Exemple d'utilisation:
 ----------------------
 MOVE     #3,d0          ;mot 3 dans d0
 MOVE     #4,d1          ;mot 4 dans d1
 MOVEM.L  d0-d1,-(SP)    ;on sauvegarde d0 et d1 (voir schéma 1) 
 ADD      d0,d1          ;d1=d0+d1=3+4=7
 MOVEM.L  (SP)+,d0-d1    ;on restore d0 et d1 (voir schéma 2)

 Finalement: on a d0=3 et d1=4 à la fin du prg car les registres d0 et 
             d1 ont été sauvegardés puis rechargés.  
 
 schéma 1:
 ---------
 MOVEM.L  d0-d1,-(SP)

 On EMPILE les L-M d1=4=%100 puis d0=3=%11 dans la Pile Système:


                  |--------|--------|
                  |--------|--------|         
                  |--------|--------|             PILE   
SP après les 2--->|00000000|00000000|            SYSTEME
décrémentations   |00000000|00000011|
                  |00000000|00000000|         
                  |00000000|00000100|   
   SP avant ----->|--------|--------|


 schéma 2:
 ---------
 MOVEM.L  (SP)+,d0-d1

 On DEPILE les L-M pointés par SP au cours des incrémentations et on
 les places dans d0 et d1.

                  |--------|--------|
                  |--------|--------|         
                  |--------|--------|             PILE   
  SP avant  ----->|00000000|00000000|            SYSTEME
                  |00000000|00000011|
                  |00000000|00000000|         
                  |00000000|00000100|   
SP après les 2 -->|--------|--------|
incrémentations (.L)

 


   
   MOVEP   dn,d(an)      [.W],(.L)
   ----------------
   ou

   MOVEP  d(an),dn       [.W],(.L)
   ---------------
  
   MOVEP permet de sauvegarder (1° forme) ou recharger (2° forme) un
   registre de donnée dn (son mot de poids faible pour MOVEP.W ou le
   registre en entier pour MOVEP.L) pointé par un mode d'adressage du
   type indirect avec déplacement d(an).

   MOVEP est une instruction très particulière car le registre de donnée
   dn est sauvé (ou chargé) de la manière suivante:

   Pour MOVEP.W:

   L'octet de poids faible de dn est sauvegardé ou chargé à partir de
   l'adresse pointée par d(an) ( ou d(an)+1 si cette adresse était 
   IMPAIRE )

   L'octet de poids fort de dn est sauvegardé ou chargé à partir de
   l'adresse pointée par d(an)+2 ( ou d(an)+3 si cette adresse était 
   IMPAIRE )


   Pour MOVEP.L

   L'octet de poids faible de dn est sauvegardé ou chargé à partir de
   l'adresse pointée par d(an) ( ou d(an)+1 si cette adresse était 
   IMPAIRE )

   L'octet de poids fort du mot de poids faible de dn est sauvegardé ou
   chargé à partir de l'adresse pointée par d(an)+2 ( ou d(an)+3 si cette
   adresse était IMPAIRE )

   L'octet de poids faible du mot de poids fort de dn est sauvegardé ou
   chargé à partir de l'adresse pointée par d(an)+4 ( ou d(an)+5 si cette
   adresse était IMPAIRE )

   L'octet de poids fort de dn est sauvegardé ou chargé à partir de
   l'adresse pointée par d(an)+6 (ou d(an)+7 si cette adresse était 
   IMPAIRE )


   EN RESUME:
   ----------
   MOVEP.L dn,d(an): Si d(an) pointe une adresse PAIRE.
                        -----                    ----- 

           OCTETS                MEMOIRE
           ------                -------     
         poids fort
   dn:    ********      -------> d(an)       paire
   --                            d(an)+1     impaire
          ********      -------> d(an)+2     paire
                                 d(an)+3     impaire
          ********      -------> d(an)+4     paire
                                 d(an)+5     impaire
          ********      -------> d(an)+6     paire
        poids faible     



   MOVEP.L dn,d(an): Si d(an) pointe une adresse IMPAIRE.
                        -----                    ------- 

           OCTETS                MEMOIRE
           ------                -------     
         poids fort
   dn:    ********      -------> d(an)+1     paire
   --                            d(an)+2     impaire
          ********      -------> d(an)+3     paire
                                 d(an)+4     impaire 
          ********      -------> d(an)+5     paire
                                 d(an)+6     impaire
          ********      -------> d(an)+7     paire
        poids faible


   MOVEP permet donc TOUJOURS de poser un registre de donnée en mémoire  
   sur des adresses PAIRES.(Par alternance d'octets 'vides' et d'octets
   contenus dans dn qui se situent eux toujours à des adresses paires )


   MOVEP n'influence pas le CCR.
                            ---

   Exemple d'utilisation:
   ----------------------    
   MOVE.L      #%00000000000000001111111100000001,d0
   LEA         aa,a0
   MOVEP       d0,0(a0)

   BSS

aa DS.B        43 


'aa' est une adresse paire (BSS initialise la PC) en 0(a0) on trouve donc
l'octet de poids le plus fort de d0 soit %00000000.
'aa'+1 est une adresse impaire.
'aa'+2 est une adresse paire, en 2(a0) on trouve l'octet de poids faible
du mot de poids fort de d0 soit %00000000
'aa'+3 est une adresse impaire
'aa'+4 est une adresse paire, en 4(a0) on trouve l'octet de poids fort
du mot de poids faible de d0 soit %11111111
'aa'+5 est une adresse impaire
'aa'+6 est une adresse paire, en 6(a0) on trouve l'octet de plus faible
poids de d0 soit %00000001

Tous ces octets sont situés à des adresses paires.



  PEA     source   (Push Effective Address)
  --------------

  PEA pose l'adresse de l'opérande source dans la pile système sous la
  forme d'un L-M, SP sera donc décrécmenté de 4 unités.

  L'opérande source admet les modes d'adressage:
             ------  
     BBBB
     BB
     (an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)

  Le CCR n'est pas affecté par PEA.
     ---
  Exemple d'utilisation:
  ----------------------   
     PEA      eee      ;pose l'adresse pointée par le label 'eee' dans la
                       ;pile système.(voir 1°)
     MOVE.L   (SP)+,a0 ;dépile le L-M pointé par SP et le pose dans a0
                       ;(voir 2°)
     JMP      (a0)     ;saute à l'adresse pointée par a0 (donc en 'eee')

     MOVE     #4,d0

eee  MOVE     #3,d1

     END
  
Finalement: d1=3 et d0 est inutilisé.

1°)  La pile système ressemblera donc à cela après un PEA:
---
          |--------|--------|         
 SP ----->|XXXXXXXX|XXXXXXXX|       /|\  L'adresse ( L-M ) de l'opérande 
          |XXXXXXXX|XXXXXXXX|        |   source est empilée dans la pile 
 SP avant>|--------|--------|            système:SP est donc décrémenté
                                         de 4 unités ( -(SP) avec .L )


2°)  La pile système ressemblera ensuite à cela après MOVE.L  (SP)+,a0
---    
          |--------|--------|         
 SP avant>|XXXXXXXX|XXXXXXXX|        |    L'adresse ( L-M ) de pointée
          |XXXXXXXX|XXXXXXXX|       \|/   par SP est posée dans a0.
 SP ----->|--------|--------|             SP qui a été incrémenté de
                                          4 unités ( (SP)+ avec .L )

   a0=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (l'adresse posée par PEA)



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


  PIECHOCKI Laurent
  8,impasse Bellevue              Suite dans le fichier INSTRUC3.DOC
  57980 TENTELING                                       ------------



       

Back to ASM_Tutorial