Pl INSTRUC.DOC/fr: Difference between revisions

From Atari Wiki
Jump to navigation Jump to search
No edit summary
mNo edit summary
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
  +
{{Languages|Pl INSTRUC.DOC}}
 
<pre>
 
<pre>
   
Line 14: Line 15:
 
---------------------------------
 
---------------------------------
   
- Voilà un chapitre qui est consacr‚ en entier aux diff‚rentes
+
- Voilà un chapitre qui est consacré en entier aux différentes
 
instructions de l'assembleur 68000.
 
instructions de l'assembleur 68000.
   
 
- Maintenant que vous savez, grƒce aux modes d'adressage,atteindre les
 
- Maintenant que vous savez, grƒce aux modes d'adressage,atteindre les
donn‚es en m‚moire, nous allons nous interesser aux instructions qui
+
données en mémoire, nous allons nous interesser aux instructions qui
permettent de modifier,d‚placer... donc de se servir des donn‚es.
+
permettent de modifier,déplacer... donc de se servir des données.
   
 
- Pour chaque instruction, je vous donnerais:
 
- Pour chaque instruction, je vous donnerais:
 
 
.La syntaxe pour l'instruction et ses op‚randes.
+
.La syntaxe pour l'instruction et ses opérandes.
 
.Ses effets,son but.
 
.Ses effets,son but.
.Les modes d'adressages autoris‚s pour les op‚randes.
+
.Les modes d'adressages autorisés pour les opérandes.
 
.L'effet de l'instruction au niveau des registres et notament au
 
.L'effet de l'instruction au niveau des registres et notament au
 
niveau du CCR.
 
niveau du CCR.
Line 31: Line 32:
   
 
- De nouvelles notions apparaitront dans les explications conscernant
 
- De nouvelles notions apparaitront dans les explications conscernant
les instructions, elles seront d‚taill‚es,expliqu‚es et comment‚es.
+
les instructions, elles seront détaillées,expliquées et commentées.
   
   
Line 43: Line 44:
 
MOVE source,destination :(.B),[.W],(.L)
 
MOVE source,destination :(.B),[.W],(.L)
 
-----------------------------
 
-----------------------------
Les 3 tailles d'op‚rations sont autoris‚es pour cette instruction,
+
Les 3 tailles d'opérations sont autorisées pour cette instruction,
La taille [.W] est prise par d‚faut.
+
La taille [.W] est prise par défaut.
 
 
L'op‚rande 'source' est copi‚e (et demeure inchang‚e) à (dans)
+
L'opérande 'source' est copiée (et demeure inchangée) à (dans)
l'op‚rande 'destination'
+
l'opérande 'destination'
   
Les modes d'adressages autoris‚s pour l'op‚rande source sont:
+
Les modes d'adressages autorisés pour l'opérande source sont:
 
------
 
------
dn (registres de donn‚es)
+
dn (registres de données)
 
an (registres d'adresses)
 
an (registres d'adresses)
 
BBBB
 
BBBB
Line 64: Line 65:
 
d(pc,rn)
 
d(pc,rn)
   
Les modes d'adressage autoris‚s pour l'op‚rande destination sont:
+
Les modes d'adressage autorisés pour l'opérande destination sont:
 
-----------
 
-----------
 
dn
 
dn
Line 77: Line 78:
   
   
Au niveau du CCR: Seuls les Bits N et Z sont affect‚s
+
Au niveau du CCR: Seuls les Bits N et Z sont affectés
 
---
 
---
   
Line 85: Line 86:
 
Move.l #1456701,d0
 
Move.l #1456701,d0
   
On pose le L-M ‚gal à 1256701 dans le registre de donn‚e d0
+
On pose le L-M égal à 1256701 dans le registre de donnée d0
   
 
 
Line 91: Line 92:
 
MOVEQ #D,dn
 
MOVEQ #D,dn
 
------------------
 
------------------
L'op‚rande source est une donn‚e imm‚diate,sign‚e,contenue dans un
+
L'opérande source est une donnée immédiate,signée,contenue dans un
 
octet (-128<= D <128)
 
octet (-128<= D <128)
L'op‚rande destination est un registre de donn‚e
+
L'opérande destination est un registre de donnée
   
On copie la donn‚e source,sign‚e,contenue dans un octet dans un
+
On copie la donnée source,signée,contenue dans un octet dans un
registre de donn‚e après avoir ETENDU LE SIGNE DU REGISTRE:
+
registre de donnée après avoir ETENDU LE SIGNE DU REGISTRE:
 
 
C.à.d. que la donn‚e est plac‚e dans l'octet de poids faible du
+
C.à.d. que la donnée est placée dans l'octet de poids faible du
registre Dn et que le MSB a ‚t‚ ‚tendu (copi‚) jusqu'au 31° bit du
+
registre Dn et que le MSB a été étendu (copié) jusqu'au 31° bit du
registre,ceci afin que le registre de donn‚e soit affect‚ en entier
+
registre,ceci afin que le registre de donnée soit affecté en entier
par le 'chargement' de la donn‚e et que le signe de la donn‚e soit
+
par le 'chargement' de la donnée et que le signe de la donnée soit
conserv‚.
+
conservé.
   
L'op‚rande source admet donc le mode d'adressage:
+
L'opérande source admet donc le mode d'adressage:
 
------
 
------
 
#BBB ( -128<= BBB <128 )
 
#BBB ( -128<= BBB <128 )
   
L'op‚rande destination admet est un registre de donn‚e.
+
L'opérande destination admet est un registre de donnée.
 
----------- ------------------
 
----------- ------------------
   
   
Seuls les Bits N et Z du CCR sont affect‚s par cette instruction
+
Seuls les Bits N et Z du CCR sont affectés par cette instruction
 
---
 
---
   
Line 128: Line 129:
 
Il y a eu extension du signe de d0 (ici MSB=0 car 01100101>0)
 
Il y a eu extension du signe de d0 (ici MSB=0 car 01100101>0)
   
NB:Moveq se distingue de Move par une plus grande rapidit‚, mais
+
NB:Moveq se distingue de Move par une plus grande rapidité, mais
 
-- n'oubliez pas les conditions d'utilisation de Moveq !
 
-- n'oubliez pas les conditions d'utilisation de Moveq !
   
Line 136: Line 137:
 
--------------------
 
--------------------
 
L'instruction Movea complète l'instruction Move car elle accepte un
 
L'instruction Movea complète l'instruction Move car elle accepte un
Registre d'Adresse pour op‚rande destination.
+
Registre d'Adresse pour opérande destination.
 
 
 
Sur la plupart des assembleurs,la syntaxe MOVE source,an est
 
Sur la plupart des assembleurs,la syntaxe MOVE source,an est
accept‚e et automatiquement traduite par MOVEA source,an
+
acceptée et automatiquement traduite par MOVEA source,an
   
Si l'op‚rande source utilise la taille d'op‚rantion .W, il y a
+
Si l'opérande source utilise la taille d'opérantion .W, il y a
 
extension du signe du registre d'adresse an.
 
extension du signe du registre d'adresse an.
La taille .B n'est pas autoris‚e pour MOVEA.
+
La taille .B n'est pas autorisée pour MOVEA.
   
   
Les modes d'adressage autoris‚s pour l'op‚rande source sont:
+
Les modes d'adressage autorisés pour l'opérande source sont:
 
------
 
------
 
dn
 
dn
Line 162: Line 163:
   
   
L'op‚rande destination est un registre d'adresse
+
L'opérande destination est un registre d'adresse
 
----------- ------------------
 
----------- ------------------
 
L'instruction MOVEA n'influence pas le CCR.
 
L'instruction MOVEA n'influence pas le CCR.
Line 171: Line 172:
 
MOVEA.L #etiq,a5
 
MOVEA.L #etiq,a5
   
Le registre d'adresse a5 est charg‚ avec l'adresse point‚e par le
+
Le registre d'adresse a5 est chargé avec l'adresse pointée par le
 
label 'etiq'
 
label 'etiq'
   
Line 181: Line 182:
 
Cette instruction se lit:'Load Effective Address'
 
Cette instruction se lit:'Load Effective Address'
   
Seule la taille d'op‚ration .L est possible,elle est d'ailleurs prise
+
Seule la taille d'opération .L est possible,elle est d'ailleurs prise
par d‚faut.
+
par défaut.
   
Elle permet de poser l'adresse point‚e par l'op‚rande source dans
+
Elle permet de poser l'adresse pointée par l'opérande source dans
 
un registre d'adresse.
 
un registre d'adresse.
   
L'op‚rande source admet les modes d'adressage:
+
L'opérande source admet les modes d'adressage:
 
------
 
------
   
Line 198: Line 199:
 
d(pc,rn)
 
d(pc,rn)
   
L'op‚rande destination est un registre d'adresse
+
L'opérande destination est un registre d'adresse
 
----------- ------------------
 
----------- ------------------
 
 
Line 208: Line 209:
 
LEA etiq,a2
 
LEA etiq,a2
   
On pose l'adresse point‚e par le label 'etiq' dans le registre
+
On pose l'adresse pointée par le label 'etiq' dans le registre
 
d'adresse a2.
 
d'adresse a2.
 
En fait,cela peut aussi se faire avec MOVE.L #etiq,a2 , mais
 
En fait,cela peut aussi se faire avec MOVE.L #etiq,a2 , mais
Line 220: Line 221:
 
Cette instruction se lit: 'CLeaR destination'
 
Cette instruction se lit: 'CLeaR destination'
   
Et permet de mettre à 0 tous les bits de l'op‚rande destination.
+
Et permet de mettre à 0 tous les bits de l'opérande destination.
 
 
Elle admet les 3 tailles d'op‚ration.
+
Elle admet les 3 tailles d'opération.
   
Les modes d'adressages autoris‚s pour l'op‚rande destination sont:
+
Les modes d'adressages autorisés pour l'opérande destination sont:
 
-----------
 
-----------
 
dn
 
dn
Line 249: Line 250:
 
---------------------
 
---------------------
   
Permet d'effectuer la NEGation de l'op‚rande destination.
+
Permet d'effectuer la NEGation de l'opérande destination.
 
 
Les 3 tailles d'op‚ration sont possibles.
+
Les 3 tailles d'opération sont possibles.
   
L'op‚rande destination est soustraite de 0, ceci a pour effet de
+
L'opérande destination est soustraite de 0, ceci a pour effet de
changer le signe de l'op‚rande:Les Bits qui ‚taient activ‚s sont
+
changer le signe de l'opérande:Les Bits qui étaient activés sont
‚tteints et les Bits qui ‚taient etteints sont activ‚s.
+
étteints et les Bits qui étaient etteints sont activés.
 
 
L'op‚rande destination admet les modes d'adressage suivants:
+
L'opérande destination admet les modes d'adressage suivants:
 
-----------
 
-----------
 
dn
 
dn
Line 269: Line 270:
   
   
Tous les Bits du CCR sont affect‚s par la NEGation en fonction du
+
Tous les Bits du CCR sont affectés par la NEGation en fonction du
r‚sultat obtenu. ---
+
résultat obtenu. ---
   
   
Line 285: Line 286:
 
------------
 
------------
   
Permet d'obtenir une EXTension du signe de l'op‚rande destination.
+
Permet d'obtenir une EXTension du signe de l'opérande destination.
   
La taille .B n'est pas autoris‚e.
+
La taille .B n'est pas autorisée.
   
 
Dans le cas de EXT.W dn:
 
Dans le cas de EXT.W dn:
Le MSB (bit n°7) du registre de donn‚e est ‚tendu jusqu'au bit n°15
+
Le MSB (bit n°7) du registre de donnée est étendu jusqu'au bit n°15
 
 
 
Dans le cas de EXT.L dn:
 
Dans le cas de EXT.L dn:
Le MSB (bit n°15) du registre de donn‚e est ‚tendu jusqu'au bit n°31
+
Le MSB (bit n°15) du registre de donnée est étendu jusqu'au bit n°31
   
Ceci permet de prolonger le contenu du registre de donn‚e sur un MOT
+
Ceci permet de prolonger le contenu du registre de donnée sur un MOT
ou sur un L-M en pr‚servant le signe de ce registre.
+
ou sur un L-M en préservant le signe de ce registre.
   
   
L'op‚rande destination ne peut ètre qu'un registre de donn‚e.
+
L'opérande destination ne peut ètre qu'un registre de donnée.
 
----------- ------------------
 
----------- ------------------
   
Les Bits N et Z du CCR sont positionn‚s suivant le r‚sultat de
+
Les Bits N et Z du CCR sont positionnés suivant le résultat de
l'op‚rantion. ---
+
l'opérantion. ---
   
   
Line 311: Line 312:
 
EXT.L d5
 
EXT.L d5
   
Le MSB (ici 0) sera copi‚ du bit n°16 au bit n°31, d5 contiendra donc
+
Le MSB (ici 0) sera copié du bit n°16 au bit n°31, d5 contiendra donc
 
un L-M :%00000000000000000001011001010010 et non plus un MOT.
 
un L-M :%00000000000000000001011001010010 et non plus un MOT.
   
Line 318: Line 319:
 
-------------
 
-------------
   
EXG permet d'‚changer le contenu de 2 registres dn ou an.
+
EXG permet d'échanger le contenu de 2 registres dn ou an.
   
La taille .L est prise par d‚faut
+
La taille .L est prise par défaut
   
L'op‚rande source est un registre de donn‚e ou d'adresse
+
L'opérande source est un registre de donnée ou d'adresse
 
------ --------
 
------ --------
L'op‚rande destination est un registre de donn‚e ou d'adresse
+
L'opérande destination est un registre de donnée ou d'adresse
 
----------- --------
 
----------- --------
   
Le CCR n'est pas affect‚ par EXG
+
Le CCR n'est pas affecté par EXG
 
---
 
---
 
Exemple d'utilisation:
 
Exemple d'utilisation:
Line 342: Line 343:
 
-----------
 
-----------
   
Echange les 2 MOTS du L-M contenu dans le registre de donn‚e dn
+
Echange les 2 MOTS du L-M contenu dans le registre de donnée dn
   
L'op‚rande destination doit être un registre de donn‚e.
+
L'opérande destination doit être un registre de donnée.
 
----------- ------------------
 
----------- ------------------
Les Bits N et Z du CCR sont affect‚s en fonction du r‚sultat obtenu.
+
Les Bits N et Z du CCR sont affectés en fonction du résultat obtenu.
 
---
 
---
   
Line 356: Line 357:
 
D3 contiendra le L-M :%00000000000000001111111111111111
 
D3 contiendra le L-M :%00000000000000001111111111111111
   
Remarquez que le signe du registre dn n'est pas conserv‚ et qu'il
+
Remarquez que le signe du registre dn n'est pas conservé et qu'il
peut être chang‚ !
+
peut être changé !
   
   
Line 369: Line 370:
 
---------------------
 
---------------------
   
Ajoute l'op‚rande source DANS l'op‚rande destination ( l'op‚rande
+
Ajoute l'opérande source DANS l'opérande destination ( l'opérande
source est donc inchag‚e et le r‚sultat se trouve dans l'op‚rande
+
source est donc inchagée et le résultat se trouve dans l'opérande
 
destination! )
 
destination! )
   
Les 3 tailles d'op‚ration sont accept‚es.
+
Les 3 tailles d'opération sont acceptées.
   
   
Les modes d'adressage autoris‚s pour l'op‚rande source si ADD
+
Les modes d'adressage autorisés pour l'opérande source si ADD
s'‚crit: ADD.x source,dn sont: ------
+
s'écrit: ADD.x source,dn sont: ------
 
----------------
 
----------------
 
dn
 
dn
Line 392: Line 393:
 
d(pc,rn)
 
d(pc,rn)
   
Si l'op‚rande source est un registre d'adresse, la taille .B n'est
+
Si l'opérande source est un registre d'adresse, la taille .B n'est
pas autoris‚e,si la taille est .W,il y a EXTension du signe de an.
+
pas autorisée,si la taille est .W,il y a EXTension du signe de an.
   
   
Les modes d'adressage autoris‚s pour l'op‚rande destination si ADD
+
Les modes d'adressage autorisés pour l'opérande destination si ADD
s'‚crit ADD.x dn,destination sont: -----------
+
s'écrit ADD.x dn,destination sont: -----------
 
---------------------
 
---------------------
   
Line 411: Line 412:
   
 
 
Tous le Bits du CCR peuvent r‚agir à l'op‚ration ADD en fonction
+
Tous le Bits du CCR peuvent réagir à l'opération ADD en fonction
du r‚sultat obtenu.
+
du résultat obtenu.
   
 
Exemple d'utilisation:
 
Exemple d'utilisation:
Line 418: Line 419:
 
ADD.B d0,d1
 
ADD.B d0,d1
 
 
L'octet de poids faible du registre de donn‚e d0 est ajout‚ a
+
L'octet de poids faible du registre de donnée d0 est ajouté a
l'octet de poids faible de d1,le r‚sultat est dans d1:
+
l'octet de poids faible de d1,le résultat est dans d1:
 
d0=d0, d1=d1+d0
 
d0=d0, d1=d1+d0
   
Line 429: Line 430:
 
ADDI se lit: 'ADD Immediate'
 
ADDI se lit: 'ADD Immediate'
   
Les 3 tailles d'op‚ration sont autoris‚es.
+
Les 3 tailles d'opération sont autorisées.
 
 
La donn‚e imm‚diate source est ajout‚ à l'op‚rande destination.
+
La donnée immédiate source est ajouté à l'opérande destination.
 
--------- ------
 
--------- ------
Les modes d'adressage qui sont autoris‚s pour l'op‚rande
+
Les modes d'adressage qui sont autorisés pour l'opérande
 
destination sont:
 
destination sont:
 
-----------
 
-----------
Line 447: Line 448:
   
   
Les 5 codes du CCR sont affect‚s par ADDI
+
Les 5 codes du CCR sont affectés par ADDI
 
---
 
---
 
Exemple d'utilisation:
 
Exemple d'utilisation:
Line 453: Line 454:
 
ADDI.W #12,(a0)
 
ADDI.W #12,(a0)
   
On ajoute le mot 12 au mot point‚ par le registre d'adresse a0.
+
On ajoute le mot 12 au mot pointé par le registre d'adresse a0.
   
   
Line 460: Line 461:
 
-------------------------
 
-------------------------
   
La donn‚e imm‚diate non sign‚e #BBB est ajout‚e DANS l'op‚rande
+
La donnée immédiate non signée #BBB est ajoutée DANS l'opérande
 
destination.
 
destination.
   
 
Il faut obligatoirement que 1<= #BBB <=8
 
Il faut obligatoirement que 1<= #BBB <=8
   
L'op‚rande destination admet les modes d'adressage:
+
L'opérande destination admet les modes d'adressage:
   
 
dn
 
dn
Line 477: Line 478:
 
d(an,rn)
 
d(an,rn)
   
Si l'op‚rande destination est un registre d'adresse an,la taille
+
Si l'opérande destination est un registre d'adresse an,la taille
 
.B est interdite,si on utilise la taille .W il y aura EXTension
 
.B est interdite,si on utilise la taille .W il y aura EXTension
 
du signe de an sur un L-M.
 
du signe de an sur un L-M.
   
   
Les 5 Bits du CCR sont modifi‚s par ADDQ en fonction du r‚sultat.
+
Les 5 Bits du CCR sont modifiés par ADDQ en fonction du résultat.
 
---
 
---
   
Line 502: Line 503:
 
Cette instructon se lit: 'ADD Adress'
 
Cette instructon se lit: 'ADD Adress'
   
Elle complète ADD car ici l'op‚rande destination est un registre
+
Elle complète ADD car ici l'opérande destination est un registre
 
d'adresse. ----------- --------
 
d'adresse. ----------- --------
 
---------
 
---------
Seuls les tailles .W et .L sont autoris‚es.
+
Seuls les tailles .W et .L sont autorisées.
   
ADDA ajoute l'op‚rande source au registre d'adresse an.
+
ADDA ajoute l'opérande source au registre d'adresse an.
   
Les modes d'adressages autoris‚s pour l'op‚rande source sont:
+
Les modes d'adressages autorisés pour l'opérande source sont:
 
------
 
------
 
dn
 
dn
Line 524: Line 525:
 
d(pc,rn)
 
d(pc,rn)
 
 
Le CCR n'est pas modifi‚ par ADDA
+
Le CCR n'est pas modifié par ADDA
 
---
 
---
 
 
Line 531: Line 532:
 
ADDA.L #2,a0
 
ADDA.L #2,a0
   
a0 est incr‚ment‚ de 2 unit‚s.
+
a0 est incrémenté de 2 unités.
   
   
Line 542: Line 543:
 
------------------------
 
------------------------
   
Retranche l'op‚rande source DANS l'op‚rande destination ( l'op‚rande
+
Retranche l'opérande source DANS l'opérande destination ( l'opérande
source est donc inchag‚e et le r‚sultat se trouve dans l'op‚rande
+
source est donc inchagée et le résultat se trouve dans l'opérande
 
destination! )
 
destination! )
   
Les 3 tailles d'op‚ration sont accept‚es.
+
Les 3 tailles d'opération sont acceptées.
   
   
Les modes d'adressage autoris‚s pour l'op‚rande source si SUB
+
Les modes d'adressage autorisés pour l'opérande source si SUB
s'‚crit: SUB.x source,dn sont: ------
+
s'écrit: SUB.x source,dn sont: ------
 
----------------
 
----------------
 
dn
 
dn
Line 565: Line 566:
 
d(pc,rn)
 
d(pc,rn)
   
Si l'op‚rande source est un registre d'adresse, la taille .B n'est
+
Si l'opérande source est un registre d'adresse, la taille .B n'est
pas autoris‚e,si la taille est .W,il y a EXTension du signe de an.
+
pas autorisée,si la taille est .W,il y a EXTension du signe de an.
   
   
Les modes d'adressage autoris‚s pour l'op‚rande destination si SUB
+
Les modes d'adressage autorisés pour l'opérande destination si SUB
s'‚crit SUB.x dn,destination sont: -----------
+
s'écrit SUB.x dn,destination sont: -----------
 
---------------------
 
---------------------
   
Line 584: Line 585:
   
 
 
Tous le Bits du CCR peuvent r‚agir à l'op‚ration SUB en fonction
+
Tous le Bits du CCR peuvent réagir à l'opération SUB en fonction
du r‚sultat obtenu.
+
du résultat obtenu.
   
 
Exemple d'utilisation:
 
Exemple d'utilisation:
Line 591: Line 592:
 
SUB.B d0,d1
 
SUB.B d0,d1
 
 
L'octet de poids faible du registre de donn‚e d0 est retranch‚ a
+
L'octet de poids faible du registre de donnée d0 est retranché a
l'octet de poids faible de d1,le r‚sultat est dans d1:
+
l'octet de poids faible de d1,le résultat est dans d1:
 
d0=d0, d1=d1-d0
 
d0=d0, d1=d1-d0
   
Line 602: Line 603:
 
SUBI se lit: 'SUBtract Immediate'
 
SUBI se lit: 'SUBtract Immediate'
   
Les 3 tailles d'op‚ration sont autoris‚es.
+
Les 3 tailles d'opération sont autorisées.
 
 
La donn‚e imm‚diate source est retranch‚e à l'op‚rande destination.
+
La donnée immédiate source est retranchée à l'opérande destination.
 
--------- ------
 
--------- ------
Les modes d'adressage qui sont autoris‚s pour l'op‚rande
+
Les modes d'adressage qui sont autorisés pour l'opérande
 
destination sont:
 
destination sont:
 
-----------
 
-----------
Line 620: Line 621:
   
   
Les 5 codes du CCR sont affect‚s par SUBI
+
Les 5 codes du CCR sont affectés par SUBI
 
---
 
---
 
Exemple d'utilisation:
 
Exemple d'utilisation:
Line 626: Line 627:
 
SUBI.W #12,(a0)
 
SUBI.W #12,(a0)
   
On retranche le mot 12 au mot point‚ par le registre d'adresse a0.
+
On retranche le mot 12 au mot pointé par le registre d'adresse a0.
   
   
Line 632: Line 633:
 
-------------------------
 
-------------------------
   
La donn‚e imm‚diate non sign‚e #BBB est retranch‚e DANS l'op‚rande
+
La donnée immédiate non signée #BBB est retranchée DANS l'opérande
 
destination.
 
destination.
   
 
Il faut obligatoirement que 1<= #BBB <=8
 
Il faut obligatoirement que 1<= #BBB <=8
   
L'op‚rande destination admet les modes d'adressage:
+
L'opérande destination admet les modes d'adressage:
 
-----------
 
-----------
 
dn
 
dn
Line 649: Line 650:
 
d(an,rn)
 
d(an,rn)
   
Si l'op‚rande destination est un registre d'adresse an,la taille
+
Si l'opérande destination est un registre d'adresse an,la taille
 
.B est interdite,si on utilise la taille .W il y aurra EXTension
 
.B est interdite,si on utilise la taille .W il y aurra EXTension
 
du signe de an sur un L-M.
 
du signe de an sur un L-M.
   
   
Les 5 Bits du CCR sont modifi‚s par SUBQ en fonction du r‚sultat.
+
Les 5 Bits du CCR sont modifiés par SUBQ en fonction du résultat.
 
---
 
---
   
Line 674: Line 675:
 
Cette instructon se lit: 'SUBtract Adress'
 
Cette instructon se lit: 'SUBtract Adress'
   
Elle complète SUB car ici l'op‚rande destination est un registre
+
Elle complète SUB car ici l'opérande destination est un registre
 
d'adresse. ----------- --------
 
d'adresse. ----------- --------
 
---------
 
---------
Seuls les tailles .W et .L sont autoris‚es.
+
Seuls les tailles .W et .L sont autorisées.
   
SUBA ajoute l'op‚rande source au registre d'adresse an.
+
SUBA ajoute l'opérande source au registre d'adresse an.
   
Les modes d'adressages autoris‚s pour l'op‚rande source sont:
+
Les modes d'adressages autorisés pour l'opérande source sont:
 
------
 
------
 
dn
 
dn
Line 696: Line 697:
 
d(pc,rn)
 
d(pc,rn)
 
 
Le CCR n'est pas modifi‚ par SUBA
+
Le CCR n'est pas modifié par SUBA
 
---
 
---
 
 
Line 703: Line 704:
 
SUBA.L #2,a0
 
SUBA.L #2,a0
   
a0 est d‚cr‚ment‚ de 2 unit‚s (comme avec .W, -(a0) ).
+
a0 est décrémenté de 2 unités (comme avec .W, -(a0) ).
   
   
Line 710: Line 711:
 
-----------------
 
-----------------
   
Permet une MULtiplication Sign‚e de l'op‚rande source DANS le
+
Permet une MULtiplication Signée de l'opérande source DANS le
registre de donn‚e dn.
+
registre de donnée dn.
   
L'entier relatif 'source' est ‚tendu sur 16 bits et il est multi-
+
L'entier relatif 'source' est étendu sur 16 bits et il est multi-
pli‚ par le MOT de poids faible de dn. -------
+
plié par le MOT de poids faible de dn. -------
 
---
 
---
Le r‚sultat est dans dn et c'est un L-M, entier relatif SIGNE.
+
Le résultat est dans dn et c'est un L-M, entier relatif SIGNE.
 
--- ------
 
--- ------
L'op‚rande source admet les modes d'adressage:
+
L'opérande source admet les modes d'adressage:
 
------
 
------
 
dn
 
dn
Line 732: Line 733:
 
d(pc,rn)
 
d(pc,rn)
   
Les bits V et C du CCR sont mis à 0,les bits N,Z sont positionn‚s
+
Les bits V et C du CCR sont mis à 0,les bits N,Z sont positionnés
suivant le r‚sultat, X n'est pas affect‚.
+
suivant le résultat, X n'est pas affecté.
   
 
Exemple d'utilisation:
 
Exemple d'utilisation:
Line 740: Line 741:
 
MULS #-5,D0
 
MULS #-5,D0
   
D0 contiendra le L-M ‚gal à 3*(-5)=-15
+
D0 contiendra le L-M égal à 3*(-5)=-15
   
   
Line 747: Line 748:
 
-----------------
 
-----------------
   
Permet une MULtiplication non sign‚e (Unsigned) de l'op‚rande source
+
Permet une MULtiplication non signée (Unsigned) de l'opérande source
DANS le registre de donn‚e dn.
+
DANS le registre de donnée dn.
   
L'entier relatif 'source' est ‚tendu sur 16 bits et il est multi-
+
L'entier relatif 'source' est étendu sur 16 bits et il est multi-
pli‚ par le MOT de poids faible de dn. -------
+
plié par le MOT de poids faible de dn. -------
 
---
 
---
Le r‚sultat est dans dn et c'est un L-M,entier relatif NON SIGNE.
+
Le résultat est dans dn et c'est un L-M,entier relatif NON SIGNE.
 
--- ----------
 
--- ----------
L'op‚rande source admet les modes d'adressage:
+
L'opérande source admet les modes d'adressage:
 
------
 
------
 
dn
 
dn
Line 769: Line 770:
 
d(pc,rn)
 
d(pc,rn)
   
Les bits V et C du CCR sont mis à 0,les bits N,Z sont positionn‚s
+
Les bits V et C du CCR sont mis à 0,les bits N,Z sont positionnés
suivant le r‚sultat, X n'est pas affect‚.
+
suivant le résultat, X n'est pas affecté.
   
 
Exemple d'utilisation:
 
Exemple d'utilisation:
Line 777: Line 778:
 
MULU #3,d2
 
MULU #3,d2
   
D2 contiendra le L-M ‚gal à 4*3=12
+
D2 contiendra le L-M égal à 4*3=12
   
 
 
Line 783: Line 784:
 
-----------------
 
-----------------
   
Permet une Division Sign‚e du registre de donn‚e dn par l'entier
+
Permet une Division Signée du registre de donnée dn par l'entier
relatif ‚tendu sur 1 mot 'source'.
+
relatif étendu sur 1 mot 'source'.
   
L'entier relatif 'source' est ‚tendu sur 16 bits et c'est le diviseur
+
L'entier relatif 'source' est étendu sur 16 bits et c'est le diviseur
du registre de donn‚e dn. -------
+
du registre de donnée dn. -------
 
 
Le r‚sultat est dans dn et c'est un L-M, entier relatif SIGNE tel que:
+
Le résultat est dans dn et c'est un L-M, entier relatif SIGNE tel que:
 
--- -----
 
--- -----
 
Le quotient occupe le mot de poids faible de dn.
 
Le quotient occupe le mot de poids faible de dn.
Line 797: Line 798:
 
poids fort de dn.
 
poids fort de dn.
   
L'op‚rande source admet les modes d'adressage:
+
L'opérande source admet les modes d'adressage:
 
------
 
------
 
dn
 
dn
Line 811: Line 812:
 
d(pc,rn)
 
d(pc,rn)
   
Le bit C du CCR est mis à 0,les bits N,Z,V sont positionn‚s suivant
+
Le bit C du CCR est mis à 0,les bits N,Z,V sont positionnés suivant
le r‚sultat, le bit X n'est pas affect‚.
+
le résultat, le bit X n'est pas affecté.
   
 
Exemple d'utilisation:
 
Exemple d'utilisation:
Line 826: Line 827:
 
QUO DS.W 1
 
QUO DS.W 1
   
Le mot point‚ par QUO contient 3 et le mot point‚ par RES contient
+
Le mot pointé par QUO contient 3 et le mot pointé par RES contient
 
0 car il n'y a pas de reste.
 
0 car il n'y a pas de reste.
   
 
NB:.Pour atteindre facilement les 2 mots (reste/quotient) du registre
 
NB:.Pour atteindre facilement les 2 mots (reste/quotient) du registre
-- de donn‚e destination, on peut par exemple utiliser l'instruction
+
-- de donnée destination, on peut par exemple utiliser l'instruction
'SWAP dn' vue pr‚c‚dement.
+
'SWAP dn' vue précédement.
   
.Si on pratique une division par 0, ceci entraine une proc‚dure
+
.Si on pratique une division par 0, ceci entraine une procédure
 
d'exception et interromps l'execution du programme !
 
d'exception et interromps l'execution du programme !
(J'expliquerai plus tard ce que sont les proc‚dures d'exception.)
+
(J'expliquerai plus tard ce que sont les procédures d'exception.)
   
 
 
Line 841: Line 842:
 
-----------------
 
-----------------
   
Permet une Division NON SIGNEE du registre de donn‚e dn par l'entier
+
Permet une Division NON SIGNEE du registre de donnée dn par l'entier
relatif ‚tendu sur 1 mot 'source'.
+
relatif étendu sur 1 mot 'source'.
   
L'entier relatif 'source' est ‚tendu sur 16 bits et c'est le diviseur
+
L'entier relatif 'source' est étendu sur 16 bits et c'est le diviseur
du registre de donn‚e dn. -------
+
du registre de donnée dn. -------
 
 
Le r‚sultat est dans dn et c'est un L-M, entier relatif NON SIGNE
+
Le résultat est dans dn et c'est un L-M, entier relatif NON SIGNE
 
tel que: --- ---------
 
tel que: --- ---------
 
 
Line 855: Line 856:
 
-----
 
-----
   
L'op‚rande source admet les modes d'adressage:
+
L'opérande source admet les modes d'adressage:
 
------
 
------
 
dn
 
dn
Line 869: Line 870:
 
d(pc,rn)
 
d(pc,rn)
   
Le bit C du CCR est mis à 0,les bits N,Z,V sont positionn‚s suivant
+
Le bit C du CCR est mis à 0,les bits N,Z,V sont positionnés suivant
le r‚sultat, le bit X n'est pas affect‚.
+
le résultat, le bit X n'est pas affecté.
   
   
NB:.Il faut bien veiller à ce que les donn‚es ('source' et 'dn') sont
+
NB:.Il faut bien veiller à ce que les données ('source' et 'dn') sont
-- positives et à ce que l'op‚rande source soit diff‚rente de 0 !
+
-- positives et à ce que l'opérande source soit différente de 0 !
   
.Les Instructions qui oppèrent sur des donnn‚es non sign‚es sont
+
.Les Instructions qui oppèrent sur des donnnées non signées sont
plus rapides que leurs instructions compl‚mentaires qui opèrent
+
plus rapides que leurs instructions complémentaires qui opèrent
sur des donn‚es sign‚es (MULS/MULU, DIVS/DIVU) , c'est là leur
+
sur des données signées (MULS/MULU, DIVS/DIVU) , c'est là leur
unique int‚rèt.
+
unique intérèt.
   
 
Les instructions MULS et DIVS peuvent bien entendu aussi oppèrer
 
Les instructions MULS et DIVS peuvent bien entendu aussi oppèrer
Line 887: Line 888:
 
CLR destination (.B),[.W],(.L)
 
CLR destination (.B),[.W],(.L)
 
--------------------
 
--------------------
L'instruction CLR permet d'‚teindre tous les BITS de l'op‚rande
+
L'instruction CLR permet d'éteindre tous les BITS de l'opérande
 
destination (CLeaR).
 
destination (CLeaR).
 
 
Les 3 tailles d'op‚rantion sont possibles.
+
Les 3 tailles d'opérantion sont possibles.
   
Les modes d'adressage autoris‚s pour l'op‚rande destination sont:
+
Les modes d'adressage autorisés pour l'opérande destination sont:
 
-----------
 
-----------
 
dn
 
dn
Line 905: Line 906:
   
 
Le bit Z du CCR est mis à 1, les bits N,V,C à 0 , le bit X n'est pas
 
Le bit Z du CCR est mis à 1, les bits N,V,C à 0 , le bit X n'est pas
affect‚. ---
+
affecté. ---
   
 
Exemple d'utilisation:
 
Exemple d'utilisation:
Line 915: Line 916:
 
%1111011100000000 .
 
%1111011100000000 .
   
NB: .L'instruction CLR.x est logiquement ‚quivalente à l'instruction
+
NB: .L'instruction CLR.x est logiquement équivalente à l'instruction
 
--- 'MOVEQ.x #0,destination' mais est curieusement moins rapide !
 
--- 'MOVEQ.x #0,destination' mais est curieusement moins rapide !
 
 
Line 928: Line 929:
 
-------------------
 
-------------------
 
 
Permet d'effectuer un AND (et) logique entre ses deux op‚randes.
+
Permet d'effectuer un AND (et) logique entre ses deux opérandes.
   
C.à.d qu'on ajoute les 2 op‚randes cod‚es en Binaire en se fixant
+
C.à.d qu'on ajoute les 2 opérandes codées en Binaire en se fixant
 
une règle selon laquelle:
 
une règle selon laquelle:
   
Line 938: Line 939:
 
0+1 donne 0
 
0+1 donne 0
   
Et cela pour chacun des bits des 2 op‚randes de l'instruction.
+
Et cela pour chacun des bits des 2 opérandes de l'instruction.
 
 
 
Exemple: MOVE.B #%11101011,d0; %11101011
 
Exemple: MOVE.B #%11101011,d0; %11101011
Line 948: Line 949:
   
 
Pour la première syntaxe possible de AND, les modes d'adressage
 
Pour la première syntaxe possible de AND, les modes d'adressage
possibles pour l'op‚rande 'source' sont:
+
possibles pour l'opérande 'source' sont:
 
------
 
------
 
dn
 
dn
Line 963: Line 964:
 
d(pc,rn)
 
d(pc,rn)
   
Pour la seconde forme de AND,les modes d'adressage autoris‚s pour
+
Pour la seconde forme de AND,les modes d'adressage autorisés pour
l'op‚rande 'destination' sont:
+
l'opérande 'destination' sont:
 
-----------
 
-----------
 
dn
 
dn
Line 977: Line 978:
   
 
 
Seuls les bits N et Z du CCR sont affect‚s par cette instruction.
+
Seuls les bits N et Z du CCR sont affectés par cette instruction.
 
---
 
---
   
Line 988: Line 989:
 
-------------------
 
-------------------
 
 
Permet d'effectuer un OR (ou) logique entre ses deux op‚randes.
+
Permet d'effectuer un OR (ou) logique entre ses deux opérandes.
   
C.à.d qu'on ajoute les 2 op‚randes cod‚es en Binaire en se fixant
+
C.à.d qu'on ajoute les 2 opérandes codées en Binaire en se fixant
 
une règle selon laquelle:
 
une règle selon laquelle:
   
Line 998: Line 999:
 
0+0 donne 0
 
0+0 donne 0
   
Et cela pour chacun des bits des 2 op‚randes de l'instruction.
+
Et cela pour chacun des bits des 2 opérandes de l'instruction.
 
 
 
Exemple: MOVE.B #%11101011,d0; %11101011
 
Exemple: MOVE.B #%11101011,d0; %11101011
Line 1,008: Line 1,009:
   
 
Pour la première syntaxe possible de OR, les modes d'adressage
 
Pour la première syntaxe possible de OR, les modes d'adressage
possibles pour l'op‚rande 'source' sont:
+
possibles pour l'opérande 'source' sont:
 
------
 
------
 
dn
 
dn
Line 1,023: Line 1,024:
 
d(pc,rn)
 
d(pc,rn)
   
Pour la seconde forme de OR,les modes d'adressage autoris‚s pour
+
Pour la seconde forme de OR,les modes d'adressage autorisés pour
l'op‚rande 'destination' sont:
+
l'opérande 'destination' sont:
 
-----------
 
-----------
 
dn
 
dn
Line 1,037: Line 1,038:
   
 
 
Seuls les bits N et Z du CCR sont affect‚s par cette instruction.
+
Seuls les bits N et Z du CCR sont affectés par cette instruction.
 
---
 
---
 
 
Line 1,046: Line 1,047:
 
 
 
Permet d'effectuer un EOR (ou exclusif) logique entre ses deux
 
Permet d'effectuer un EOR (ou exclusif) logique entre ses deux
op‚randes.
+
opérandes.
   
C.à.d qu'on ajoute les 2 op‚randes cod‚es en Binaire en se fixant
+
C.à.d qu'on ajoute les 2 opérandes codées en Binaire en se fixant
 
une règle selon laquelle:
 
une règle selon laquelle:
   
Line 1,056: Line 1,057:
 
1+0 donne 1
 
1+0 donne 1
   
Et cela pour chacun des bits des 2 op‚randes de l'instruction.
+
Et cela pour chacun des bits des 2 opérandes de l'instruction.
 
 
 
Exemple: MOVE.B #%11101011,d0; %11101011
 
Exemple: MOVE.B #%11101011,d0; %11101011
Line 1,066: Line 1,067:
   
   
Les modes d'adressage autoris‚s pour l'op‚rande 'destination' sont:
+
Les modes d'adressage autorisés pour l'opérande 'destination' sont:
 
-----------
 
-----------
 
dn
 
dn
Line 1,079: Line 1,080:
   
 
 
Seuls les bits N et Z du CCR sont affect‚s par cette instruction.
+
Seuls les bits N et Z du CCR sont affectés par cette instruction.
 
---
 
---
   
Line 1,086: Line 1,087:
 
-------------------
 
-------------------
 
 
Permet d'effectuer un NOT (n‚gation) logique.
+
Permet d'effectuer un NOT (négation) logique.
   
NOT calcule le compl‚ment à 1 d'un nombre. (NEG le compl‚ment à 2)
+
NOT calcule le complément à 1 d'un nombre. (NEG le complément à 2)
 
 
Les modes d'adressage possibles pour l'op‚rande 'source' sont:
+
Les modes d'adressage possibles pour l'opérande 'source' sont:
 
------
 
------
 
dn
 
dn
Line 1,103: Line 1,104:
   
 
 
Seuls les bits N et Z du CCR sont affect‚s par cette instruction.
+
Seuls les bits N et Z du CCR sont affectés par cette instruction.
 
---
 
---
   
 
 
 
 
Les instructions AND,OR,EOR sont complèt‚es par les 3 instructions
+
Les instructions AND,OR,EOR sont complètées par les 3 instructions
logiques imm‚diates:
+
logiques immédiates:
   
 
ANDI #BBB,destination (.B),[.W],(.L)
 
ANDI #BBB,destination (.B),[.W],(.L)
Line 1,118: Line 1,119:
 
---------------------------------------
 
---------------------------------------
 
.Ces instructions ont un r“le commun à leurs instructions
 
.Ces instructions ont un r“le commun à leurs instructions
compl‚mentaires mais elles admettent une donn‚e imm‚diate
+
complémentaires mais elles admettent une donnée immédiate
comme op‚rande source. ----------------
+
comme opérande source. ----------------
 
------
 
------
L'op‚randes destination admet les modes d'adressage:
+
L'opérandes destination admet les modes d'adressage:
 
-----------
 
-----------
 
dn
 
dn
Line 1,132: Line 1,133:
 
d(an,rn)
 
d(an,rn)
 
 
Seuls les bits N et Z du CCR sont affect‚s par ces 3 instructions.
+
Seuls les bits N et Z du CCR sont affectés par ces 3 instructions.
 
---
 
---
NB: L'op‚rande destination peut aussi être: 'SR' ou 'CCR'.
+
NB: L'opérande destination peut aussi être: 'SR' ou 'CCR'.
-- Mais dans le cas o— l'op‚rande destination est CCR, l'exectution
+
-- Mais dans le cas o— l'opérande destination est CCR, l'exectution
de ces instruction n‚cessitent qu'on soit en MODE SUPERVISEUR !
+
de ces instruction nécessitent qu'on soit en MODE SUPERVISEUR !
 
----------------
 
----------------
 
Exemple: ANDI.B #%11111011,sr
 
Exemple: ANDI.B #%11111011,sr
Line 1,143: Line 1,144:
 
 
 
 
Je r‚pète: ATTENTION!
+
Je répète: ATTENTION!
 
Le CCR ne peut ètre atteint qu'en MODE SUPERVISEUR , sinon ceci
 
Le CCR ne peut ètre atteint qu'en MODE SUPERVISEUR , sinon ceci
provoquerait l'execution d'une proc‚dure d'exception et l'arrêt
+
provoquerait l'execution d'une procédure d'exception et l'arrêt
 
du programme.
 
du programme.
 
Avec les modes d'adressage SR ou CCR ,les instructions ANDI,
 
Avec les modes d'adressage SR ou CCR ,les instructions ANDI,
ORI,EORI sont donc des instructions qui n‚cessitent que l'on
+
ORI,EORI sont donc des instructions qui nécessitent que l'on
 
soit un mode superviseur si l'on modifie le CCR ,c'est l'unique
 
soit un mode superviseur si l'on modifie le CCR ,c'est l'unique
 
manière d'atteindre le CCR.
 
manière d'atteindre le CCR.
Line 1,159: Line 1,160:
 
-----------------------
 
-----------------------
   
Sauve le registre d'‚tat SR à l'adresse destination.
+
Sauve le registre d'état SR à l'adresse destination.
   
Le contenu du CCR n'est pase affect‚ par l'instruction.
+
Le contenu du CCR n'est pase affecté par l'instruction.
 
---
 
---
Les modes d'adressage autoris‚s pour l'op‚rande destination sont:
+
Les modes d'adressage autorisés pour l'opérande destination sont:
 
-----------
 
-----------
 
dn
 
dn
Line 1,184: Line 1,185:
 
dest DS.W 1
 
dest DS.W 1
   
le mot point‚ par 'dest' contiendra le SR.
+
le mot pointé par 'dest' contiendra le SR.
   
   
Line 1,191: Line 1,192:
 
------------------
 
------------------
   
Restaure le CCR contenu dans (à) l'op‚rande source.
+
Restaure le CCR contenu dans (à) l'opérande source.
   
Le CCR est charg‚ avec sa nouvelle valeur, le SR n'est pas affect‚.
+
Le CCR est chargé avec sa nouvelle valeur, le SR n'est pas affecté.
 
--- --
 
--- --
Les modes d'adressage autoris‚s pour l'op‚rande source sont:
+
Les modes d'adressage autorisés pour l'opérande source sont:
 
------
 
------
 
dn
 
dn
Line 1,219: Line 1,220:
 
aaa DS.B 1 ;CCR
 
aaa DS.B 1 ;CCR
 
 
le CCR est charg‚ avec le mot point‚ par 'aaa'.
+
le CCR est chargé avec le mot pointé par 'aaa'.
   
   
Line 1,226: Line 1,227:
 
--------------------
 
--------------------
   
TeST compare l'op‚rande destination à 0 et modifie les bits du
+
TeST compare l'opérande destination à 0 et modifie les bits du
CCR en cons‚quence.
+
CCR en conséquence.
 
---
 
---
Les 3 tailles d'op‚ration sont possibles.
+
Les 3 tailles d'opération sont possibles.
   
Les modes d'adressage autoris‚s pour l'op‚rande destination sont:
+
Les modes d'adressage autorisés pour l'opérande destination sont:
 
-----------
 
-----------
 
dn
 
dn
Line 1,243: Line 1,244:
 
d(an,rn)
 
d(an,rn)
   
Les bits N,Z du CCR sont affect‚s en fonction du r‚sultat de la
+
Les bits N,Z du CCR sont affectés en fonction du résultat de la
comparaison ,Les bits V et C sont mis à 0 ,X n'est pas affect‚.
+
comparaison ,Les bits V et C sont mis à 0 ,X n'est pas affecté.
 
 
 
Exemple d'utilisation:
 
Exemple d'utilisation:
Line 1,258: Line 1,259:
 
---------------------------
 
---------------------------
   
CoMPare l'op‚rande destination à l'op‚rande source en effectuant la
+
CoMPare l'opérande destination à l'opérande source en effectuant la
 
soustraction 'destination' - 'source' et modifie les bits du CCR en
 
soustraction 'destination' - 'source' et modifie les bits du CCR en
cons‚quence. ---
+
conséquence. ---
 
 
Les 3 tailles d'op‚ration sont possibles.
+
Les 3 tailles d'opération sont possibles.
   
Les modes d'adressage autoris‚s pour l'op‚rande source sont:
+
Les modes d'adressage autorisés pour l'opérande source sont:
 
------
 
------
 
dn
 
dn
Line 1,279: Line 1,280:
 
d(pc,rn)
 
d(pc,rn)
   
Les modes d'adressage autoris‚s pour l'op‚rande destination sont:
+
Les modes d'adressage autorisés pour l'opérande destination sont:
 
-----------
 
-----------
 
dn
 
dn
Line 1,291: Line 1,292:
   
   
Les bits N,Z,V,C du CCR sont affect‚s en fonction du r‚sultat de
+
Les bits N,Z,V,C du CCR sont affectés en fonction du résultat de
la comparaison ,Le bit X n'est pas affect‚.
+
la comparaison ,Le bit X n'est pas affecté.
 
 
 
Exemple d'utlisation:
 
Exemple d'utlisation:
Line 1,300: Line 1,301:
 
CMP.B d0,d1
 
CMP.B d0,d1
   
L'instruction CMP sera utilis‚e avec les instructions du type B**
+
L'instruction CMP sera utilisée avec les instructions du type B**
et DB** que nous ‚tudierons plus loin.
+
et DB** que nous étudierons plus loin.
   
   
Line 1,308: Line 1,309:
 
--------------------------
 
--------------------------
   
CoMPare l'op‚rande destination à l'op‚rande source imm‚diate en
+
CoMPare l'opérande destination à l'opérande source immédiate en
 
effectuant la soustraction 'destination' - 'source' et modifie
 
effectuant la soustraction 'destination' - 'source' et modifie
les bits du CCR en cons‚quence.
+
les bits du CCR en conséquence.
 
---
 
---
Les 3 tailles d'op‚ration sont possibles.
+
Les 3 tailles d'opération sont possibles.
   
Les modes d'adressage autoris‚s pour l'op‚rande destination sont:
+
Les modes d'adressage autorisés pour l'opérande destination sont:
 
-----------
 
-----------
 
dn
 
dn
Line 1,326: Line 1,327:
   
   
Les bits N,Z,V,C du CCR sont affect‚s en fonction du r‚sultat de
+
Les bits N,Z,V,C du CCR sont affectés en fonction du résultat de
la comparaison ,Le bit X n'est pas affect‚.
+
la comparaison ,Le bit X n'est pas affecté.
 
 
 
Exemple d'utilisation:
 
Exemple d'utilisation:
Line 1,333: Line 1,334:
 
CMPI.L #3,d3
 
CMPI.L #3,d3
   
Compare le contenu du registre de donn‚e d3 à 3.
+
Compare le contenu du registre de donnée d3 à 3.
   
   
Line 1,340: Line 1,341:
 
-------------------
 
-------------------
   
CoMPare le registre d'adresse 'an' à l'op‚rande source en effectuant
+
CoMPare le registre d'adresse 'an' à l'opérande source en effectuant
 
la soustraction 'an' - 'source' et modifie les bits du CCR en con-
 
la soustraction 'an' - 'source' et modifie les bits du CCR en con-
s‚quence. ---
+
séquence. ---
   
Seules les tailles d'op‚ration .W et .L sont possibles.
+
Seules les tailles d'opération .W et .L sont possibles.
   
Les modes d'adressage autoris‚s pour l'op‚rande source sont:
+
Les modes d'adressage autorisés pour l'opérande source sont:
 
------
 
------
 
dn
 
dn
Line 1,362: Line 1,363:
   
   
Les bits N,Z,V,C du CCR sont affect‚s en fonction du r‚sultat de
+
Les bits N,Z,V,C du CCR sont affectés en fonction du résultat de
la comparaison ,Le bit X n'est pas affect‚.
+
la comparaison ,Le bit X n'est pas affecté.
 
 
 
Exemple d'utilisation:
 
Exemple d'utilisation:
Line 1,376: Line 1,377:
 
----------------------
 
----------------------
   
CoMPare l'op‚rande destination à l'op‚rande source en effectuant
+
CoMPare l'opérande destination à l'opérande source en effectuant
 
la soustraction 'destination' - 'source' et modifie les bits du
 
la soustraction 'destination' - 'source' et modifie les bits du
CCR en cons‚quence.
+
CCR en conséquence.
   
Les 3 tailles d'op‚ration sont possibles.
+
Les 3 tailles d'opération sont possibles.
   
Le mode d'adressage autoris‚ pour l'op‚rande destination et pour
+
Le mode d'adressage autorisé pour l'opérande destination et pour
l'op‚rande destination est le mode POSTINCREMENTE.
+
l'opérande destination est le mode POSTINCREMENTE.
 
--------------
 
--------------
Les bits N,Z,V,C du CCR sont affect‚s en fonction du r‚sultat de
+
Les bits N,Z,V,C du CCR sont affectés en fonction du résultat de
la comparaison ,Le bit X n'est pas affect‚.
+
la comparaison ,Le bit X n'est pas affecté.
   
 
 
Line 1,395: Line 1,396:
 
MOVE #5,d3
 
MOVE #5,d3
   
BBB CMPM.B (a1)+,(a2)+ ;CMPM l'octet point‚ par a1 à l'octet point‚
+
BBB CMPM.B (a1)+,(a2)+ ;CMPM l'octet pointé par a1 à l'octet pointé
;par a2 et incr‚mente d'une unit‚ les 2
+
;par a2 et incrémente d'une unité les 2
 
;registres d'adresses.
 
;registres d'adresses.
 
DBF d3,BBB ;boucle 6 fois
 
DBF d3,BBB ;boucle 6 fois
   
DATA ;table des donn‚es (octets)
+
DATA ;table des données (octets)
   
 
TAB DC.B 1,2,3,4,5,6
 
TAB DC.B 1,2,3,4,5,6
Line 1,411: Line 1,412:
 
-------------
 
-------------
 
 
L'instruction admet diff‚rents Codes Condition (**) qui peuvent
+
L'instruction admet différents Codes Condition (**) qui peuvent
 
changer l'action de B**.
 
changer l'action de B**.
   
B** oppère un saut à l'adresse point‚e par le 'label' si le
+
B** oppère un saut à l'adresse pointée par le 'label' si le
code condition demand‚ est justifi‚ après une CoMParaison ,
+
code condition demandé est justifié après une CoMParaison ,
 
sinon le programme continue normalement.
 
sinon le programme continue normalement.
   
Line 1,425: Line 1,426:
 
Bgt si A>B (Greater Than) | Bbi (Higher)
 
Bgt si A>B (Greater Than) | Bbi (Higher)
 
Beq si A=B (EQual) | Beq (EQual)
 
Beq si A=B (EQual) | Beq (EQual)
Blt si A<B (Less Than) | Bcs (inf‚rieur)
+
Blt si A<B (Less Than) | Bcs (inférieur)
Bne si A est diff‚rent de B (Not Equal) | Bne (Not Equal)
+
Bne si A est différent de B (Not Equal) | Bne (Not Equal)
Bge si A >= B (Greater or Equal) | Bcc (sup. ou ‚gal)
+
Bge si A >= B (Greater or Equal) | Bcc (sup. ou égal)
Ble si A <= B (Less or Equal) | Bls (inf. ou ‚gal)
+
Ble si A <= B (Less or Equal) | Bls (inf. ou égal)
 
 
   
 
L'instruction B** teste en fait les bits du CCR:
 
L'instruction B** teste en fait les bits du CCR:
   
Beq test si le bit Z du CCR est à 1 (CPM soustrait les op‚randes
+
Beq test si le bit Z du CCR est à 1 (CPM soustrait les opérandes
 
pour les tester)
 
pour les tester)
   
   
 
On retrouve aussi les Codes de condition qui ne tiennent que compte
 
On retrouve aussi les Codes de condition qui ne tiennent que compte
de certains bits du CCR et non pas du r‚sultat d'une comparaison :
+
de certains bits du CCR et non pas du résultat d'une comparaison :
 
 
 
Bmi si le bit N du CCR est à 1
 
Bmi si le bit N du CCR est à 1
(Donc N‚gatif)
+
(Donc Négatif)
   
 
Bpl si le bit N du CCR est nul OU si le bit Z du CCR est à 1
 
Bpl si le bit N du CCR est nul OU si le bit Z du CCR est à 1
Line 1,447: Line 1,448:
 
 
 
Bvc si le bit V du CCR est nul
 
Bvc si le bit V du CCR est nul
(Donc si il n'y a pas d‚bordement)
+
(Donc si il n'y a pas débordement)
   
 
Bvs si le bit V du CCR est à 1
 
Bvs si le bit V du CCR est à 1
(Donc si il y a d‚bordement)
+
(Donc si il y a débordement)
   
 
Bcc si le bit C du CCR est à 1
 
Bcc si le bit C du CCR est à 1
Line 1,464: Line 1,465:
 
CMPI #4,d0 ;Compare -16 à 4
 
CMPI #4,d0 ;Compare -16 à 4
 
BEQ egal ;Si c'est ègal (Z=1) on saute en 'egal'
 
BEQ egal ;Si c'est ègal (Z=1) on saute en 'egal'
BMI negatif ;Si c'est n‚gatif (N=1) on saute en 'negatif'
+
BMI negatif ;Si c'est négatif (N=1) on saute en 'negatif'
   
 
DATA
 
DATA
Line 1,487: Line 1,488:
 
Permet d'effectuer une boucle:
 
Permet d'effectuer une boucle:
   
Le nombre de passages est contenu dans le registre de donn‚e dn.
+
Le nombre de passages est contenu dans le registre de donnée dn.
 
L'adresse a laquelle le saut pour la boucle doit d'effectuer est
 
L'adresse a laquelle le saut pour la boucle doit d'effectuer est
 
un label.
 
un label.
L'instruction admet aussi diff‚rents codes condition (**) qui
+
L'instruction admet aussi différents codes condition (**) qui
peuvent op‚rer un d‚branchement de la boucle si ils sont
+
peuvent opérer un débranchement de la boucle si ils sont
v‚rifi‚s.
+
vérifiés.
   
 
Les Codes condition possibles sont les mêmes qu'avec l'instruction
 
Les Codes condition possibles sont les mêmes qu'avec l'instruction
 
B** .
 
B** .
   
DB** teste d'abord la condition ** ,si celle-ci est v‚rifi‚e il y
+
DB** teste d'abord la condition ** ,si celle-ci est vérifiée il y
a d‚branchement de la boucle et le programme continue à l'instruc-
+
a débranchement de la boucle et le programme continue à l'instruc-
tion suivante, sinon , le registre dn est d‚cr‚ment‚ d'1:
+
tion suivante, sinon , le registre dn est décrémenté d'1:
 
Si dn vaut -1 il y a arrèt de la boucle et le programme continue à
 
Si dn vaut -1 il y a arrèt de la boucle et le programme continue à
 
la prochaine instruction.
 
la prochaine instruction.
Si dn est positif ou nul, il s'oppère un saut à l'adresse point‚e
+
Si dn est positif ou nul, il s'oppère un saut à l'adresse pointée
 
par le label.
 
par le label.
   
Le CCR n'est pas modifi‚ par DB**
+
Le CCR n'est pas modifié par DB**
 
---
 
---
   
Line 1,519: Line 1,520:
 
MOVE #7,d1 ;7 dans d1
 
MOVE #7,d1 ;7 dans d1
   
boo MOVE.W (a0)+,d2 ;pose le MOT point‚ par a0 dans le MOT de poids
+
boo MOVE.W (a0)+,d2 ;pose le MOT pointé par a0 dans le MOT de poids
;faible de d2 en mode postincr‚ment‚
+
;faible de d2 en mode postincrémenté
DBMI d1,boo ;teste si N=1 (mi), d‚cr‚mente d1 et saute en
+
DBMI d1,boo ;teste si N=1 (mi), décrémente d1 et saute en
 
;'boo' si d1 est positif ou nul.
 
;'boo' si d1 est positif ou nul.
 
MOVE.W d2,res ;pose le MOT de poids faible de d2 en 'res'
 
MOVE.W d2,res ;pose le MOT de poids faible de d2 en 'res'
Line 1,531: Line 1,532:
 
BSS
 
BSS
   
res DS.W 1 ;r‚serve 1 mot en 'res'
+
res DS.W 1 ;réserve 1 mot en 'res'
   
 
END
 
END
   
La condition MI (N=1) a ‚t‚ v‚rifi‚e au bout de 5 passages en 'boo',
+
La condition MI (N=1) a été vérifiée au bout de 5 passages en 'boo',
il y a eu d‚branchement de la boucle avant l'execution des 8 pass-
+
il y a eu débranchement de la boucle avant l'execution des 8 pass-
ages pr‚vus car on a pos‚ le MOT -2 dans d2: Ceci avait pour effet
+
ages prévus car on a posé le MOT -2 dans d2: Ceci avait pour effet
 
de mettre le bit N du CCR à 1 et par là mème de sortir de la boucle
 
de mettre le bit N du CCR à 1 et par là mème de sortir de la boucle
car la condition MI a ‚t‚ v‚rifi‚e.
+
car la condition MI a été vérifiée.
 
 
A la fin du programme: d2=-2, a0 pointe le mot ‚gal à 0, d1=3
+
A la fin du programme: d2=-2, a0 pointe le mot égal à 0, d1=3
et 'res' pointe sur le mot ‚gal à -2
+
et 'res' pointe sur le mot égal à -2
   
   
Line 1,550: Line 1,551:
 
------------------
 
------------------
   
L'instruction S** admet elle aussi les diff‚rents Codes condition.
+
L'instruction S** admet elle aussi les différents Codes condition.
   
Elle teste si la condition ** est v‚rifi‚e.
+
Elle teste si la condition ** est vérifiée.
   
Si elle s'avère vraie, l'OCTET qui se trouve à l'adresse point‚e
+
Si elle s'avère vraie, l'OCTET qui se trouve à l'adresse pointée
par l'op‚rande destination est mis à -1 (soit $FF ou %11111111)
+
par l'opérande destination est mis à -1 (soit $FF ou %11111111)
   
 
Si elle s'avère fausse, l'OCTET est mis à 0 ($00 ou %00000000)
 
Si elle s'avère fausse, l'OCTET est mis à 0 ($00 ou %00000000)
   
Il faudra bien entendu r‚serv‚ cet Octet ! (avec DS.B 1 par exp)
+
Il faudra bien entendu réservé cet Octet ! (avec DS.B 1 par exp)
   
Les modes d'adressage possibles pour l'op‚rande destination sont:
+
Les modes d'adressage possibles pour l'opérande destination sont:
 
-----------
 
-----------
   
Line 1,575: Line 1,576:
   
   
Le CCR n'est pas affect‚ par S**
+
Le CCR n'est pas affecté par S**
 
---
 
---
 
 
Line 1,586: Line 1,587:
 
;met le à 0 (ici d1=d0 on le met donc à -1)
 
;met le à 0 (ici d1=d0 on le met donc à -1)
 
TST.B res ;Compare loctet de 'res' à 0 (0=faux pour S**)
 
TST.B res ;Compare loctet de 'res' à 0 (0=faux pour S**)
BEQ fin ;si il est ‚gal à 0:va en 'fin'
+
BEQ fin ;si il est égal à 0:va en 'fin'
 
BNE egal ;sinon (Not Equal) va en 'egal'
 
BNE egal ;sinon (Not Equal) va en 'egal'
   
Line 1,613: Line 1,614:
 
</pre>
 
</pre>
 
Back to [[ASM_Tutorial]]
 
Back to [[ASM_Tutorial]]
  +
[[Category: ASSEMBLEUR 68000 sur ATARI ST Part 1 ]]

Latest revision as of 01:49, 17 December 2023



                         -------------------------
                            CHAPITRE    QUATRE

                         LES INSTRUCTIONS DU 68000

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



                     *** LES INSTRUCTIONS DU 68000 ***
                     ---------------------------------

- Voilà un chapitre qui est consacré en entier aux différentes 
  instructions de l'assembleur 68000.

- Maintenant que vous savez, grƒce aux modes d'adressage,atteindre les
  données en mémoire, nous allons nous interesser aux instructions qui
  permettent de modifier,déplacer... donc de se servir des données.

- Pour chaque instruction, je vous donnerais:
 
  .La syntaxe pour l'instruction et ses opérandes.
  .Ses effets,son but.
  .Les modes d'adressages autorisés pour les opérandes.
  .L'effet de l'instruction au niveau des registres et notament au 
   niveau du CCR.
  .Et bien sur des exemples d'utilisation...

- De nouvelles notions apparaitront dans les explications conscernant
  les instructions, elles seront détaillées,expliquées et commentées.



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

                    *** LES INSTRUCTIONS DU 68000 ***
                    ---------------------------------

     
   MOVE       source,destination   :(.B),[.W],(.L)
   -----------------------------
   Les 3 tailles d'opérations sont autorisées pour cette instruction,
   La taille [.W] est prise par défaut.
   
   L'opérande 'source' est copiée (et demeure inchangée) à (dans) 
   l'opérande 'destination'

   Les modes d'adressages autorisés pour l'opérande source sont:
                                                    ------
     dn       (registres de données)
     an       (registres d'adresses)
     BBBB
     BB
     #BBB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)

   Les modes d'adressage autorisés pour l'opérande destination sont:
                                                   -----------
     dn
     an
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)


   Au niveau du CCR: Seuls les Bits N et Z sont affectés 
                ---


   Exemple d'utilisation:
   ----------------------  
     Move.l    #1456701,d0

     On pose le L-M égal à 1256701 dans le registre de donnée d0

       

   MOVEQ        #D,dn       
   ------------------
   L'opérande source est une donnée immédiate,signée,contenue dans un
   octet (-128<= D <128)
   L'opérande destination est un registre de donnée

   On copie la donnée source,signée,contenue dans un octet dans un 
   registre de donnée après avoir ETENDU LE SIGNE DU REGISTRE:
   
      C.à.d. que la donnée est placée dans l'octet de poids faible du 
   registre Dn et que le MSB a été étendu (copié) jusqu'au 31° bit du
   registre,ceci afin que le registre de donnée soit affecté en entier
   par le  'chargement' de la donnée et que le signe de la donnée soit
   conservé.

   L'opérande source admet donc le mode d'adressage:
              ------
   #BBB   ( -128<= BBB <128 )

   L'opérande destination admet est un registre de donnée.
              -----------              ------------------


   Seuls les Bits N et Z du CCR sont affectés par cette instruction
                            ---  

   Exemple:
   --------
   MOVEQ  #%01100101,d0

   On pose l'octet 01100101 dans d0:

   d0= :          00000000000000000000000001100101
          Bit nr 31                       .
                  .                       .    
             MSB (0) <---------------MSB (0)   

   Il y a eu extension du signe de d0 (ici MSB=0 car 01100101>0)

   NB:Moveq se distingue de Move par une plus grande rapidité, mais
   -- n'oubliez pas les conditions d'utilisation de Moveq !



   MOVEA      source,an   :(.W),(.L)
   --------------------
   L'instruction Movea complète l'instruction Move car elle accepte un
   Registre d'Adresse pour opérande destination.
   
   Sur la plupart des assembleurs,la syntaxe MOVE  source,an est
   acceptée et automatiquement traduite par  MOVEA source,an

   Si l'opérande source utilise la taille d'opérantion .W, il y a
   extension du signe du registre d'adresse an.
   La taille .B n'est pas autorisée pour MOVEA.


   Les modes d'adressage autorisés pour l'opérande source sont:
                                                   ------
     dn
     an  
     BBBB
     BB
     #BBB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)


   L'opérande destination est un registre d'adresse
              -----------        ------------------
   L'instruction MOVEA n'influence pas le CCR.
                                          ---

   Exemple d'utilisation:
   ----------------------
   MOVEA.L   #etiq,a5

   Le registre d'adresse a5 est chargé avec l'adresse pointée par le
   label 'etiq'



   LEA    source,an      : [.L]
   ----------------
                   
   Cette instruction se lit:'Load Effective Address'

   Seule la taille d'opération .L est possible,elle est d'ailleurs prise
   par défaut.

   Elle permet de poser l'adresse pointée par l'opérande source dans
   un registre d'adresse.

   L'opérande source admet les modes d'adressage:
              ------

     BBBB
     BB     
     (an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)

   L'opérande destination est un registre d'adresse
              -----------        ------------------             
   
   L'instruction LEA n'influence pas le CCR
                                        ---

   Exemple d'utilisation:
   ----------------------
   LEA    etiq,a2

   On pose l'adresse pointée par le label 'etiq' dans le registre
   d'adresse a2.
   En fait,cela peut aussi se faire avec MOVE.L  #etiq,a2 ,  mais
   c'est moins rapide.         



   CLR    destination    :(.B),[.W],(.L)
   ------------------

   Cette instruction se lit: 'CLeaR  destination'  

   Et permet de mettre à 0 tous les bits de l'opérande destination.
   
   Elle admet les 3 tailles d'opération.

   Les modes d'adressages autorisés pour l'opérande destination sont:      
                                                    -----------
     dn 
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)

       
   Le bit Z du CCR est mis à 1 , les Bits N,V,C à 0.
               ---

   Exemple d'utilisation:
   ----------------------
   CLR.W   D0

   Les 16 Bits du MOT de poids faible de d0 sont mis à 0.             


   NEG       destination     : (.B),[.W],(.L)
   ---------------------  

   Permet d'effectuer la NEGation de l'opérande destination.
 
   Les 3 tailles d'opération sont possibles.

   L'opérande destination est soustraite de 0, ceci a pour effet de
   changer le signe de l'opérande:Les Bits qui étaient activés sont
   étteints et les Bits qui étaient etteints sont activés.
   
   L'opérande destination admet les modes d'adressage suivants:
              -----------
     dn       
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)


   Tous les Bits du CCR sont affectés par la NEGation en fonction du
   résultat obtenu. ---


   Exemple d'utilisation:
   ----------------------
   MOVE   #%1010101010101010,d0
   NEG.W  d0

   On obtient le MOT %0101010101010101 dans d0



   EXT       dn           : [.W],(.L)
   ------------

   Permet d'obtenir une EXTension du signe de l'opérande destination.

   La taille .B n'est pas autorisée.

   Dans le cas de EXT.W  dn:
   Le MSB (bit n°7) du registre de donnée est étendu jusqu'au bit n°15   
   
   Dans le cas de EXT.L  dn:
   Le MSB (bit n°15) du registre de donnée est étendu jusqu'au bit n°31

   Ceci permet de prolonger le contenu du registre de donnée sur un MOT
   ou sur un L-M en préservant le signe de ce registre. 


   L'opérande destination ne peut ètre qu'un registre de donnée.
              -----------                    ------------------

   Les Bits N et Z du CCR sont positionnés suivant le résultat de
   l'opérantion.      ---


   Exemple d'utilisation:
   ----------------------
   MOVE.W   #%0001011001010010,d5
   EXT.L    d5

   Le MSB (ici 0) sera copié du bit n°16 au bit n°31, d5 contiendra donc
   un L-M :%00000000000000000001011001010010 et non plus un MOT.


   EXG     rn,rm
   -------------

   EXG permet d'échanger le contenu de 2 registres dn ou an.

   La taille .L est prise par défaut

   L'opérande source est un registre de donnée ou d'adresse
              ------        --------          
   L'opérande destination est un registre de donnée ou d'adresse
              -----------        --------

   Le CCR n'est pas affecté par EXG
      ---
   Exemple d'utilisation:
   ----------------------
   MOVE.L   #$FF,d0
   MOVE.L   #$A2,d1
   EXG      d1,d0

   D0 contiendra le L-M $A2 et d1 le L-M $FF.



   SWAP     dn  
   -----------

   Echange les 2 MOTS du L-M contenu dans le registre de donnée dn

   L'opérande destination doit être un registre de donnée.
              -----------              ------------------                     
   Les Bits N et Z du CCR sont affectés en fonction du résultat obtenu.
                      ---

   Exemple d'utilisation:
   ----------------------
   MOVE.L     #%11111111111111110000000000000000,d3
   SWAP       d3

   D3 contiendra le L-M :%00000000000000001111111111111111

   Remarquez que le signe du registre dn n'est pas conservé et qu'il
   peut être changé !




   ADD      dn,destination     :(.B),[.W],(.L)
   -----------------------
ou

   ADD         source,dn       :(.B),[.W],(.L)
   ---------------------  

   Ajoute l'opérande source DANS l'opérande destination ( l'opérande
   source est donc inchagée et le résultat se trouve dans l'opérande
   destination! )

   Les 3 tailles d'opération sont acceptées.


   Les modes d'adressage autorisés pour l'opérande source si ADD
   s'écrit: ADD.x  source,dn  sont:                ------          
            ----------------  
     dn
     an  
     BBBB
     BB
     #BBB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)

    Si l'opérande source est un registre d'adresse, la taille .B n'est
    pas autorisée,si la taille est .W,il y a EXTension du signe de an.


   Les modes d'adressage autorisés pour l'opérande destination si ADD
   s'écrit ADD.x  dn,destination sont:             -----------    
           --------------------- 

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


 
    Tous le Bits du CCR peuvent réagir à l'opération ADD en fonction
    du résultat obtenu.

    Exemple d'utilisation:
    ----------------------
    ADD.B  d0,d1
 
    L'octet de poids faible du registre de donnée d0 est ajouté a
    l'octet de poids faible de d1,le résultat est dans d1:
    d0=d0, d1=d1+d0



    ADDI     #BBB,destination     :(.B),[.W],(.L)
    -------------------------

    ADDI se lit: 'ADD Immediate'

    Les 3 tailles d'opération sont autorisées.
 
    La donnée immédiate source est ajouté à l'opérande destination.
              --------- ------
    Les modes d'adressage qui sont autorisés pour l'opérande 
    destination sont:
    -----------
    
     dn
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)


    Les 5 codes du CCR sont affectés par ADDI
                   ---      
    Exemple d'utilisation:
    ----------------------
    ADDI.W   #12,(a0)

    On ajoute le mot 12 au mot pointé par le registre d'adresse a0.



    ADDQ     #BBB,destination   :(.B),[.L],(.L)      
    -------------------------

    La donnée immédiate non signée #BBB est ajoutée DANS l'opérande
    destination.

    Il faut obligatoirement que  1<= #BBB <=8

    L'opérande destination admet les modes d'adressage:

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

     Si l'opérande destination est un registre d'adresse an,la taille
     .B est interdite,si on utilise la taille .W il y aura EXTension
     du signe de an sur un L-M.


     Les 5 Bits du CCR sont modifiés par ADDQ en fonction du résultat.
                   ---

     Exemple d'utilisation:
     ----------------------  
     ADDQ.W   #3,d0

     Ajoute le mot 3 au mot de poids faible de d0.
     
     Remarque:ADDQ est plus rapide que ADDI, ceci explique le nom
     -------- de l'instruction:ADD Quick
              Attention tout de même à ce que 1<= #BBB <=8

   
  
   ADDA       source,an     :(.W),(.L)
   --------------------

   Cette instructon se lit: 'ADD Adress'

   Elle complète ADD car ici l'opérande destination est un registre
   d'adresse.                           -----------        --------
   ---------
   Seuls les tailles .W et .L sont autorisées.

   ADDA ajoute l'opérande source au registre d'adresse an.

   Les modes d'adressages autorisés pour l'opérande source sont:
                                                    ------
     dn  
     an  
     BBBB
     BB
     #BBB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)
     
   Le CCR n'est pas modifié par ADDA
      ---
  
   Exemple d'utilisation:
   ----------------------
   ADDA.L    #2,a0

   a0 est incrémenté de 2 unités.



   SUB       dn,destination     :(.B),[.W],(.L)
   ------------------------
ou

   SUB            source,dn     :(.B),[.W],(.L)
   ------------------------  

   Retranche l'opérande source DANS l'opérande destination ( l'opérande
   source est donc inchagée et le résultat se trouve dans l'opérande
   destination! )

   Les 3 tailles d'opération sont acceptées.


   Les modes d'adressage autorisés pour l'opérande source si SUB
   s'écrit: SUB.x  source,dn  sont:                ------          
            ----------------  
     dn
     an  
     BBBB
     BB
     #BBB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)

    Si l'opérande source est un registre d'adresse, la taille .B n'est
    pas autorisée,si la taille est .W,il y a EXTension du signe de an.


   Les modes d'adressage autorisés pour l'opérande destination si SUB
   s'écrit SUB.x  dn,destination sont:             -----------    
           --------------------- 

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


 
    Tous le Bits du CCR peuvent réagir à l'opération SUB en fonction
    du résultat obtenu.

    Exemple d'utilisation:
    ----------------------
    SUB.B  d0,d1
 
    L'octet de poids faible du registre de donnée d0 est retranché a
    l'octet de poids faible de d1,le résultat est dans d1:
    d0=d0, d1=d1-d0



    SUBI     #BBB,destination     :(.B),[.W],(.L)
    -------------------------

    SUBI se lit: 'SUBtract Immediate'

    Les 3 tailles d'opération sont autorisées.
 
    La donnée immédiate source est retranchée à l'opérande destination.
              --------- ------
    Les modes d'adressage qui sont autorisés pour l'opérande 
    destination sont:
    -----------
    
     dn
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)


    Les 5 codes du CCR sont affectés par SUBI
                   ---      
    Exemple d'utilisation:
    ----------------------
    SUBI.W   #12,(a0)

    On retranche le mot 12 au mot pointé par le registre d'adresse a0.


    SUBQ     #BBB,destination   :(.B),[.L],(.L)      
    -------------------------

    La donnée immédiate non signée #BBB est retranchée DANS l'opérande
    destination.

    Il faut obligatoirement que  1<= #BBB <=8

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

     Si l'opérande destination est un registre d'adresse an,la taille
     .B est interdite,si on utilise la taille .W il y aurra EXTension
     du signe de an sur un L-M.


     Les 5 Bits du CCR sont modifiés par SUBQ en fonction du résultat.
                   ---

     Exemple d'utilisation:
     ----------------------  
     SUBQ.W   #3,d0

     Retranche le mot 3 au mot de poids faible de d0.
     
     Remarque:SUBQ est plus rapide que SUBI, ceci explique le nom
     -------- de l'instruction:SUBtarct Quick
              Attention tout de même à ce que 1<= #BBB <=8

   
  
   SUBA       source,an     :(.W),(.L)
   --------------------

   Cette instructon se lit: 'SUBtract Adress'

   Elle complète SUB car ici l'opérande destination est un registre
   d'adresse.                           -----------        --------
   ---------
   Seuls les tailles .W et .L sont autorisées.

   SUBA ajoute l'opérande source au registre d'adresse an.

   Les modes d'adressages autorisés pour l'opérande source sont:
                                                    ------
     dn  
     an  
     BBBB
     BB
     #BBB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)
     
   Le CCR n'est pas modifié par SUBA
      ---
  
   Exemple d'utilisation:
   ----------------------
   SUBA.L    #2,a0

   a0 est décrémenté de 2 unités (comme avec .W, -(a0) ).


   
   MULS    source,dn    
   -----------------

   Permet une MULtiplication Signée de l'opérande source DANS le 
   registre de donnée dn.

   L'entier relatif 'source' est étendu sur 16 bits et il est multi-
   plié par le MOT de poids faible de dn.   -------
               ---
   Le résultat est dans dn et c'est un L-M, entier relatif SIGNE.
                                        ---                ------
   L'opérande source admet les modes d'adressage:
              ------
     dn  
     BBBB
     BB
     #BBB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)

    Les bits V et C du CCR sont mis à 0,les bits N,Z sont positionnés
    suivant le résultat, X n'est pas affecté.

    Exemple d'utilisation:
    ----------------------
    MOVE.W     #3,D0
    MULS       #-5,D0

    D0 contiendra le L-M égal à 3*(-5)=-15


  
   MULU    source,dn    
   -----------------

   Permet une MULtiplication non signée (Unsigned) de l'opérande source
   DANS le registre de donnée dn.

   L'entier relatif 'source' est étendu sur 16 bits et il est multi-
   plié par le MOT de poids faible de dn.   -------
               ---
   Le résultat est dans dn et c'est un L-M,entier relatif NON SIGNE.
                                       ---                ----------
   L'opérande source admet les modes d'adressage:
              ------
     dn  
     BBBB
     BB
     #BBB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)

    Les bits V et C du CCR sont mis à 0,les bits N,Z sont positionnés
    suivant le résultat, X n'est pas affecté.

    Exemple d'utilisation:
    ----------------------
    MOVE.W   #4,d2     
    MULU     #3,d2

    D2 contiendra le L-M égal à 4*3=12

   
   DIVS    source,dn    
   -----------------

   Permet une Division Signée du registre de donnée dn par l'entier 
   relatif étendu sur 1 mot 'source'.

   L'entier relatif 'source' est étendu sur 16 bits et c'est le diviseur
   du registre de donnée dn.                -------
      
   Le résultat est dans dn et c'est un L-M, entier relatif SIGNE tel que:
                                       ---                 -----
   Le quotient occupe le mot de poids faible de dn.
      --------         
   Le reste (si il y en a) a le signe du dividende et occupe le mot de 
      -----  
   poids fort de dn.

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

    Le bit C du CCR est mis à 0,les bits N,Z,V sont positionnés suivant
    le résultat, le bit X n'est pas affecté.

    Exemple d'utilisation:
    ----------------------  
    MOVE.W   #4,D2     
    MOVE.W   #12,D0
    DIVS     D2,D0
    MOVE.L   D0,RES

    BSS

RES DS.W     1
QUO DS.W     1

    Le mot pointé par QUO contient 3 et le mot pointé par RES contient
    0 car il n'y a pas de reste.

    NB:.Pour atteindre facilement les 2 mots (reste/quotient) du registre
    --  de donnée destination, on peut par exemple utiliser l'instruction
        'SWAP dn' vue précédement.

       .Si on pratique une division par 0, ceci entraine une procédure
        d'exception et interromps l'execution du programme !
        (J'expliquerai plus tard ce que sont les procédures d'exception.)

       
   DIVU    source,dn    
   -----------------

   Permet une Division NON SIGNEE du registre de donnée dn par l'entier 
   relatif étendu sur 1 mot 'source'.

   L'entier relatif 'source' est étendu sur 16 bits et c'est le diviseur
   du registre de donnée dn.                -------
     
   Le résultat est dans dn et c'est un L-M, entier relatif NON SIGNE
   tel que:                            ---                 ---------
  
   Le quotient occupe le mot de poids faible de dn.
      --------         
   Le reste (si il y en a) occupe le mot de poids fort de dn.
      -----

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

    Le bit C du CCR est mis à 0,les bits N,Z,V sont positionnés suivant
    le résultat, le bit X n'est pas affecté.


    NB:.Il faut bien veiller à ce que les données ('source' et 'dn') sont
    --  positives et à ce que l'opérande source soit différente de 0 !

       .Les Instructions qui oppèrent sur des donnnées non signées sont
        plus rapides que leurs instructions complémentaires qui opèrent
        sur des données signées (MULS/MULU, DIVS/DIVU) , c'est là leur
        unique intérèt.

        Les instructions MULS et DIVS peuvent bien entendu aussi oppèrer
        sur des instructions positives.


   CLR      destination  (.B),[.W],(.L)
   --------------------
   L'instruction CLR permet d'éteindre tous les BITS de l'opérande  
   destination (CLeaR).
   
   Les 3 tailles d'opérantion sont possibles.

   Les modes d'adressage autorisés pour l'opérande destination sont:
                                                   -----------
     dn
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)


   Le bit Z du CCR est mis à 1, les bits N,V,C à 0 , le bit X n'est pas
   affecté.    ---

   Exemple d'utilisation:
   ----------------------
   MOVE.W    #%1111011101110110,d0
   CLR.B     d0
 
   L'octet de poids faible de d0 est mis à 0, d0 contiendra donc le mot:
   %1111011100000000 .

   NB: .L'instruction CLR.x est logiquement équivalente à l'instruction 
   ---  'MOVEQ.x  #0,destination' mais est curieusement moins rapide !
   



   AND  source,dn       (.B),[.W],(.L)
   --------------
   ou 

   AND  dn,destination  (.B),[.W],(.L)
   -------------------
  
   Permet d'effectuer un AND (et) logique entre ses deux opérandes.   

   C.à.d qu'on ajoute les 2 opérandes codées en Binaire en se fixant
   une règle selon laquelle:

   1+1 donne 1
   1+0 donne 0
   0+0 donne 0
   0+1 donne 0

   Et cela pour chacun des bits des 2 opérandes de l'instruction.
   
   Exemple:  MOVE.B     #%11101011,d0;  %11101011
   -------   MOVE.B     #%10101000,d1;  %10101000
             AND.B      d0,d1        ;   ||||||||
                                         ||||||||
                                         ''''''''
             on obtient l'octet:        %10101000

   Pour la première syntaxe possible de AND, les modes d'adressage 
   possibles pour l'opérande 'source' sont:
                              ------
     dn      
     an
     BBBB
     BB
     #BBB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)

   Pour la seconde forme de AND,les modes d'adressage autorisés pour 
   l'opérande 'destination' sont:
               -----------
     dn
     an
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)

    
    Seuls les bits N et Z du CCR sont affectés par cette instruction.         
                             ---                             


   OR   source,dn       (.B),[.W],(.L)
   --------------
   ou 

   OR   dn,destination  (.B),[.W],(.L)
   -------------------
  
   Permet d'effectuer un OR (ou) logique entre ses deux opérandes.   

   C.à.d qu'on ajoute les 2 opérandes codées en Binaire en se fixant
   une règle selon laquelle:

   1+1 donne 1
   1+0 donne 1
   0+1 donne 1
   0+0 donne 0

   Et cela pour chacun des bits des 2 opérandes de l'instruction.
   
   Exemple:  MOVE.B     #%11101011,d0;  %11101011
   -------   MOVE.B     #%10101000,d1;  %10101000
             OR.B      d0,d1         ;   ||||||||
                                         ||||||||
                                         ''''''''
             on obtient l'octet:        %11101011

   Pour la première syntaxe possible de OR, les modes d'adressage 
   possibles pour l'opérande 'source' sont:
                              ------
     dn      
     an
     BBBB
     BB
     #BBB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)

   Pour la seconde forme de OR,les modes d'adressage autorisés pour 
   l'opérande 'destination' sont:
               -----------
     dn
     an
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)

    
    Seuls les bits N et Z du CCR sont affectés par cette instruction.         
                             ---                             
        


   EOR  dn,destination  (.B),[.W],(.L)
   -------------------
  
   Permet d'effectuer un EOR (ou exclusif) logique entre ses deux 
   opérandes.   

   C.à.d qu'on ajoute les 2 opérandes codées en Binaire en se fixant
   une règle selon laquelle:

   1+1 donne 0
   0+0 donne 0
   0+1 donne 1
   1+0 donne 1

   Et cela pour chacun des bits des 2 opérandes de l'instruction.
   
   Exemple:  MOVE.B     #%11101011,d0;  %11101011
   -------   MOVE.B     #%10101000,d1;  %10101000
             EOR.B      d0,d1        ;   ||||||||
                                         ||||||||
                                         ''''''''
             on obtient l'octet:        %01000011


   Les modes d'adressage autorisés pour l'opérande 'destination' sont:
                                                    -----------
     dn
     an
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)

    
    Seuls les bits N et Z du CCR sont affectés par cette instruction.         
                             ---                             


   NOT  dn,destination  (.B),[.W],(.L)
   -------------------
  
   Permet d'effectuer un NOT (négation) logique.   

   NOT calcule le complément à 1 d'un nombre. (NEG le complément à 2)
    
   Les modes d'adressage possibles pour l'opérande 'source' sont:
                                                    ------
     dn
     an
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)

    
    Seuls les bits N et Z du CCR sont affectés par cette instruction.         
                             ---                             

    
    
    Les instructions  AND,OR,EOR sont complètées par les 3 instructions
    logiques immédiates:

    ANDI    #BBB,destination (.B),[.W],(.L)
    ------------------------
    ORI     #BBB,destination (.B),[.W],(.L)
    ------------------------
    EORI    #BBB,destination (.B),[.W],(.L)
    ---------------------------------------
    .Ces instructions ont un  r“le commun à leurs instructions
     complémentaires mais elles admettent une donnée immédiate 
     comme opérande source.                   ----------------
                    ------
     L'opérandes destination admet les modes d'adressage:
                 -----------
     dn
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)
    
    Seuls les bits N et Z du CCR sont affectés par ces 3 instructions.         
                             --- 
    NB: L'opérande destination peut aussi être: 'SR' ou 'CCR'.
    --  Mais dans le cas o— l'opérande destination est CCR, l'exectution 
        de ces instruction nécessitent qu'on soit en MODE SUPERVISEUR !
                                                    ----------------
        Exemple:  ANDI.B  #%11111011,sr
        -------  
        met à 0 le bit Z du SR sans changer les autres bits du SR. 
        
        
        Je répète: ATTENTION! 
        Le CCR ne peut ètre atteint qu'en MODE SUPERVISEUR , sinon ceci 
        provoquerait l'execution d'une procédure d'exception et l'arrêt 
        du programme.
        Avec les modes d'adressage SR ou CCR ,les instructions ANDI, 
        ORI,EORI sont donc des instructions qui nécessitent que l'on 
        soit un mode superviseur si l'on modifie le CCR ,c'est l'unique
        manière d'atteindre le CCR.
        Ce sont donc des INSTRUCTIONS PRIVILEGIEES dans ce cas.
        Le SR est par contre aussi disponible en mode utilisateur.
       


    MOVE     sr,destination  
    -----------------------

    Sauve le registre d'état SR à l'adresse destination.

    Le contenu du CCR n'est pase affecté par l'instruction.
                  ---  
    Les modes d'adressage autorisés pour l'opérande destination sont:
                                                    -----------   
     dn
     an
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)


     Exemple d'utilisation:
     ----------------------
     MOVE   sr,dest

     BSS

dest DS.W   1

     le mot pointé par 'dest' contiendra le SR.



    MOVE     source,sr  
    ------------------

    Restaure le CCR contenu dans (à) l'opérande source.

    Le CCR est chargé avec sa nouvelle valeur, le SR n'est pas affecté.
       ---                                        --
    Les modes d'adressage autorisés pour l'opérande source sont:
                                                    ------
     dn
     an
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)


     Exemple d'utilisation:
     ----------------------
     MOVE   sr,dest             ;sauve le SR avec Z=0
     CLR    d0                  ;ici le bit Z du CCR est mis à 1 (CLeaR)
     MOVE   aaa,ccr             ;on recharge le CCR de 'aaa': Z=0   
    
     BSS

dest DS.B   1  ;SR
aaa  DS.B   1  ;CCR
   
     le CCR est chargé avec le mot pointé par 'aaa'.


     
     TST      destination    (.B),[.W],(.L)
     --------------------

     TeST compare l'opérande destination à 0 et modifie les bits du
     CCR en conséquence.
     ---
     Les 3 tailles d'opération sont possibles.

     Les modes d'adressage autorisés pour l'opérande destination sont:
                                                     -----------
     dn
     an
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)

    Les bits N,Z du CCR sont affectés en fonction du résultat de la
    comparaison ,Les bits V et C sont mis à 0 ,X n'est pas affecté.
         
    Exemple d'utilisation:
    ---------------------- 
    MOVE.W     #5,d0     ;d0=5
    TST.W      d0        ;le bit Z du CCR est mis à 0 car d0=5
    SUB        #5,d0     ;d0=5-5=0
    TST.W      d0        ;le bit Z du CCR est mis à 1 car d0=0
  
     

     CMP      source,destination    (.B),[.W],(.L)
     ---------------------------

     CoMPare l'opérande destination à l'opérande source en effectuant la
     soustraction 'destination' - 'source' et modifie les bits du CCR en
     conséquence.                                                 ---
                                                            
     Les 3 tailles d'opération sont possibles.

     Les modes d'adressage autorisés pour l'opérande source sont:
                                                     ------
     dn
     an        (taille .B interdite)
     BBBB
     BB
     #BBB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)

    Les modes d'adressage autorisés pour l'opérande destination sont:
                                                    -----------
     dn
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)


    Les bits N,Z,V,C du CCR sont affectés en fonction du résultat de 
    la comparaison ,Le bit X n'est pas affecté.
         
    Exemple d'utlisation:
    --------------------- 
    MOVE.B     #2,d0
    MOVE.B     #98,d1
    CMP.B      d0,d1

    L'instruction CMP sera utilisée avec les instructions du type B**
    et DB** que nous étudierons plus loin.



     CMPI      #BBB,destination    (.B),[.W],(.L)
     --------------------------

     CoMPare l'opérande destination à l'opérande source immédiate en
     effectuant la soustraction  'destination' - 'source' et modifie 
     les bits du CCR en conséquence.
                 ---   
     Les 3 tailles d'opération sont possibles.

     Les modes d'adressage autorisés pour l'opérande destination sont:
                                                     -----------
     dn
     BBBB
     BB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)


    Les bits N,Z,V,C du CCR sont affectés en fonction du résultat de 
    la comparaison ,Le bit X n'est pas affecté.
         
    Exemple d'utilisation:
    ---------------------- 
    CMPI.L   #3,d3

    Compare le contenu du registre de donnée d3 à 3.



     CMPA      source,an    [.W],(.L)
     -------------------

     CoMPare le registre d'adresse 'an' à l'opérande source en effectuant
     la soustraction  'an' - 'source' et modifie les bits du CCR en con-
     séquence.                                               ---

     Seules les tailles d'opération .W et .L sont possibles.

     Les modes d'adressage autorisés pour l'opérande source sont:
                                                     ------
     dn
     an
     BBBB
     BB
     #BBB
     (an)
     (an)+
     -(an)
     d(an)
     d(an,rn)
     d(pc)
     d(pc,rn)


    Les bits N,Z,V,C du CCR sont affectés en fonction du résultat de 
    la comparaison ,Le bit X n'est pas affecté.
         
    Exemple d'utilisation:
    ---------------------- 
    CMPA.L   a2,a3

    Compare le contenu du registre d'adresse a3 au contenu du regitre
    d'adresse a2.


     CMPM       (an)+,(am)+    (.B),[.W],(.L)
     ----------------------

     CoMPare l'opérande destination à l'opérande source en effectuant
     la soustraction  'destination' - 'source' et modifie les bits du
     CCR en conséquence.

     Les 3 tailles d'opération sont possibles.

     Le mode d'adressage autorisé pour l'opérande destination et pour
     l'opérande destination est le mode POSTINCREMENTE.
                                        --------------                                                   
     Les bits N,Z,V,C du CCR sont affectés en fonction du résultat de 
     la comparaison ,Le bit X n'est pas affecté.

         
     Exemple d'utilisation:
     ----------------------
     LEA      TAB,a1     ;pose l'adresse de 'TAB' dans a1
     LEA      BAT,a2     ;et l'adresse de 'BAT' dans a2
     MOVE     #5,d3

BBB  CMPM.B   (a1)+,(a2)+     ;CMPM l'octet pointé par a1 à l'octet pointé
                              ;par a2 et incrémente d'une unité les 2
                              ;registres d'adresses.
     DBF      d3,BBB          ;boucle 6 fois

     DATA                     ;table des données (octets)     

TAB  DC.B      1,2,3,4,5,6
BAT  DC.B      6,5,4,3,2,1




     B**     label      (Branch & Condition Code)
     -------------
     
     L'instruction admet différents Codes Condition (**) qui peuvent
     changer l'action de B**. 

     B** oppère un saut à l'adresse pointée par le 'label' si le
     code condition demandé est justifié après une CoMParaison ,
     sinon le programme continue normalement.


     Les ** sont:

     B**         Si A et B sont SIGNES            | Sinon, syntaxe:
     ---------------------------------------------+----------------
     Bgt  si   A>B  (Greater Than)                | Bbi  (Higher)
     Beq  si   A=B  (EQual)                       | Beq  (EQual)   
     Blt  si   A<B  (Less Than)                   | Bcs  (inférieur)   
     Bne  si   A est différent de B   (Not Equal) | Bne  (Not Equal)   
     Bge  si   A >= B (Greater or Equal)          | Bcc  (sup. ou égal)   
     Ble  si   A <= B (Less or Equal)             | Bls  (inf. ou égal)
                                                  

     L'instruction B** teste en fait les bits du CCR:

     Beq test si le bit Z du CCR est à 1 (CPM soustrait les opérandes
                                          pour les tester)


     On retrouve aussi les Codes de condition qui ne tiennent que compte
     de certains bits du CCR et non pas du résultat d'une comparaison :
     
     Bmi  si le bit N du CCR est à 1  
          (Donc Négatif)

     Bpl  si le bit N du CCR est nul OU si le bit Z du CCR est à 1 
          (Donc Positif ou nul)
 
     Bvc  si le bit V du CCR est nul 
          (Donc si il n'y a pas débordement)

     Bvs  si le bit V du CCR est à 1
          (Donc si il y a débordement)

     Bcc  si le bit C du CCR est à 1

     Bcs  si le bit C du CCR est nul


     Exemple d'utilisation:
     ----------------------
     MOVE.W    #4,d3     ;d3=4
     MOVE.W    dat,d0    ;d0=-20
     ADD       d3,d0     ;d0=-20+4=-16
     CMPI      #4,d0     ;Compare -16 à 4
     BEQ       egal      ;Si c'est ègal (Z=1) on saute en 'egal'
     BMI       negatif   ;Si c'est négatif (N=1) on saute en 'negatif'

     DATA

dat  DC.W      -20 


     Dans notre exemple, le programme sautera en 'negatif', ceci serait
     le cas même si il n'y avait pas de 'CMPI #4,d0' car avec Bmi, seul
     le bit N du CCR intervient, il n'y a pas besoin de comparaison,
     contrairement à Beq.

     NB: Le saut au label destination s'effectue par le chargement de
     --  la valeur du PC à ce label dans le PC actuel.




     DB**    dn,label
     ----------------

     Permet d'effectuer une boucle:

     Le nombre de passages est contenu dans le registre de donnée dn.
     L'adresse a laquelle le saut pour la boucle doit d'effectuer est
     un label.
     L'instruction admet aussi différents codes condition (**) qui 
     peuvent opérer un débranchement de la boucle si ils sont
     vérifiés.

     Les Codes condition possibles sont les mêmes qu'avec l'instruction
     B** .

     DB** teste d'abord la condition ** ,si celle-ci est vérifiée il y
     a débranchement de la boucle et le programme continue à l'instruc-
     tion suivante, sinon , le registre dn est décrémenté d'1:
     Si dn vaut -1 il y a arrèt de la boucle et le programme continue à
     la prochaine instruction.
     Si dn est positif ou nul, il s'oppère un saut à l'adresse pointée
     par le label.

     Le CCR n'est pas modifié par DB**
        ---

     NB:DB** admet aussi les codes condition suivant:
     --
        .DBf  = toujours faux, il n'y a pas de comparaison ou de test
 
        .DBt  = toujours vrai, idem

     Exemple d'utilisation:
     ----------------------
     LEA       dat,a0    ;adresse de 'dat' dans a0
     MOVE      #7,d1     ;7 dans d1

boo  MOVE.W    (a0)+,d2  ;pose le MOT pointé par a0 dans le MOT de poids
                         ;faible de d2 en mode postincrémenté
     DBMI      d1,boo    ;teste si N=1 (mi), décrémente d1 et saute en
                         ;'boo' si d1 est positif ou nul.
     MOVE.W    d2,res    ;pose le MOT de poids faible de d2 en 'res'

     DATA

dat  DC.W      1,5,486,0,-2,0,4,8,100,20,5   ;11 mots
 
     BSS

res  DS.W      1                        ;réserve 1 mot en 'res'

     END

     La condition MI (N=1) a été vérifiée au bout de 5 passages en 'boo',
     il y a eu débranchement de la boucle avant l'execution des 8 pass-
     ages prévus car on a posé le MOT -2 dans d2: Ceci avait pour effet
     de mettre le bit N du CCR à 1 et par là mème de sortir de la boucle
     car la condition MI a été vérifiée.
 
     A la fin du programme: d2=-2, a0 pointe le mot égal à 0, d1=3 
     et 'res' pointe sur le mot égal à -2




    S**    Destination
    ------------------

    L'instruction S** admet elle aussi les différents Codes condition.

    Elle teste si la condition ** est vérifiée.

    Si elle s'avère vraie, l'OCTET qui se trouve à l'adresse pointée 
    par l'opérande destination est mis à -1 (soit $FF ou %11111111)

    Si elle s'avère fausse, l'OCTET est mis à 0 ($00 ou %00000000)

    Il faudra bien entendu réservé cet Octet ! (avec DS.B 1 par exp)

    Les modes d'adressage possibles pour l'opérande destination sont:
                                                    -----------

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


    Le CCR n'est pas affecté par S**
       ---
 
    Exemple d'utilisation:
    ---------------------- 
     MOVE      #3,d0     ;mot 3 dans d0
     MOVE      #3,d1     ;mot 3 dans d1
     CMP.W     d0,d1     ;compare les mots de poids faible de d1 et d0
     SEQ       res       ;Si c'est Egal:met L'octet de 'res' à -1 sinon
                         ;met le à 0 (ici d1=d0 on le met donc à -1)
     TST.B     res       ;Compare loctet de 'res' à 0 (0=faux pour S**)
     BEQ       fin       ;si il est égal à 0:va en 'fin'
     BNE       egal      ;sinon (Not Equal) va en 'egal'

     BSS

res  DS.W      1         ;l'octet pour S**

     END

     Dans notre exemple: Le programme va sauter en 'egal'.


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



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



        

Back to ASM_Tutorial