L'assembleur du 68HC11
1) Introduction.
2) Syntaxe.
3) Modes d'adressages.
4) Le jeu d'instruction.
1) Introduction:
L'assembleur est un langage de bas niveaux, qui permet de programmer le microcontroleur 68HC11.
Une syntaxe STRICTE doit être observée pour que le logiciel puisse assembler correctement, c'est à dire convertir le code source assembleur (ficher avec extention .ASM), pour pouvoir ensuite télécharger le programme dans le microcontroleur puis l'exécuter.
Il faut un logiciel spécialisé pour réaliser ces opérations (bien que l'édition puisse faire dans votre éditeur de texte favori, notepad par exemple !).
De nombreux logiciels existent, certains payants et d'autres
gratuits !
Rendez vous à la rubrique
TELECHARGEMENT
2) Syntaxe:
Voici la syntaxe à respecter :
LABEL MNEMONIQUE OPERANDE COMMANTAIRE
Le champ
LABEL
est une étiquette, qui permet de fixer un point du programme pour pouvoir ensuite l'appeler ou de définir une equivalence.
Le champ
MNEMONIQUE
est le nom "ecourté" de l'instruction à éxécuter.
Le champ
OPERANDE
est la valeur ou l'adresse en relation avec le MNEMONIQUE.
Le champ
COMMENTAIRE
est comme son nom le laisse entendre destiné à placer des remarques pour organiser le programme surtout lorsque celui-ci devient conséquent.
3) Modes d'adressages:
4) Le jeu d'instruction:
Voici le jeu d' instruction du 68HC11.
Elles sont classées, cliquez dessus pour avoir la description détaillée de celles-ci :
I) Les instuctions logiques :
AND
ORA
EOR
COM
II) Décalages et rotations :
ASL
ASR
LSL
LSR
ROL
ROR
III) Tests et manipulations de bits :
BIT
BCLR
BSET
IV) Opérations arithmétiques :
* D'addition
ABA
ABX
ABY
ADC
ADD
* De soustraction
SBC
SUB
NEG
* D'incrémentation et décrémentation :
INC
INX
INY
INS
DEC
DEX
DEY
DES
* De comparaison
CMP
CPD
CPX
CPY
CBA
* De multiplication et division :
MUL
FDIV
IDIV
* De test :
TST
IV) Chargement, stockage, transfert et échange :
CLR
LD
ST
PUL
PSH
TAB
TBA
TAP
TPA
TSX
TXS
TSY
TYS
XGDX
XGDY
V) De branchement :
BRA
BRN
BCC
BCS
BEQ
BNE
BMI
BRCLR
BRSET
BGE
BGT
BHI
BHS
BLE
BLO
BLS
BLT
BSR
BVC
BVS
VI) Contrôle :
NOP
STOP
WAI
SWI
RTI
RTS
CLI
CLC
CLV
SEC
SEV
Voici la description détaillée des insctructions :
I) Les instuctions logiques :
AND
Cette instruction réalise un
ET
logique bit à bit entre le contenu d'un accumulateur (A ou B) et une case mémoire, puis place le résultat dans ce même accumulateur.
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le résultat à son bit de poids fort à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 0
ORA
Cette instruction réalise un
OU
logique bit à bit entre le contenu d'un accumulateur (A ou B) et une case mémoire, puis place le résultat dans ce même accumulateur.
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le résultat à son bit de poids fort à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 0
EOR
Cette instruction réalise un
OU EXCLUSIF
logique bit à bit entre le contenu d'un accumulateur (A ou B) et une case mémoire, puis place le résultat dans ce même accumulateur.
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le résultat à son bit de poids fort à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 0
COM
Cette instruction réalise une
COMPLEMENTATION
bit à bit d'un accumulateur (A ou B) ou d' une case mémoire, puis place le résultat dans ce même accumulateur, ou case mémoire.
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le résultat à son bit de poids fort à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 0
C : passe à 1
II) Décalages et rotations :
ASL
Cette instruction réalise un
DECALAGE
vers la gauche d'un accumulateur (A ou B) ou d' une case mémoire, puis place le résultat dans ce même accumulateur, ou case mémoire, il rentre un 0 dans le poids faible
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le résultat à son bit de poids fort à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 si après l'opération, N est à 1 et C est à 0 ou si N est à 0 et C est à 1.
C : passe à 1 si, avant l'opération le bit de poids fort de l'opérande était égal à 1.
ASR
Cette instruction réalise un
DECALAGE
vers la droite d'un accumulateur (A ou B) ou d' une case mémoire, puis place le résultat dans ce même accumulateur, ou case mémoire, b0 (poids faible) sort dans la CARRY et b7 reste inchangé
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le résultat à son bit de poids fort à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 si après l'opération, N est à 1 et C est à 0 ou si N est à 0 et C est à 1.
C : passe à 1 si, avant l'opération le bit de poids faible de l'opérande était égal à 1.
LSL
Cette instruction réalise un
DECALAGE
vers la gauche d'un accumulateur (A ou B) ou d' une case mémoire, puis place le résultat dans ce même accumulateur, ou case mémoire, b7 (poids fort) sort dans la CARRY et un 0 rentre dans b0 (poids faible), cette instruction est identique à ASL.
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le résultat à son bit de poids fort à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 si après l'opération, N est à 1 et C est à 0 ou si N est à 0 et C est à 1.
C : passe à 1 si, avant l'opération le bit de poids fort de l'opérande était égal à 1.
LSR
Cette instruction réalise un
DECALAGE
vers la droite d'un accumulateur (A ou B) ou d' une case mémoire, puis place le résultat dans ce même accumulateur, ou case mémoire, b0 (poids faible) sort dans la CARRY et un 0 rentre dans b7 (poids fort)
Voici les bits du CCR qui sont modifiés :
N : passe à 0.
Z : passe à 1 si le résultat est nul.
V : passe à 1 si après l'opération, N est à 1 et C est à 0 ou si N est à 0 et C est à 1.
C : passe à 1 si, avant l'opération le bit de poids faible de l'opérande était égal à 1.
ROL
Cette instruction réalise un
DECALAGE
vers la gauche d'un accumulateur (A ou B) ou d' une case mémoire, puis place le résultat dans ce même accumulateur, ou case mémoire, b7 (poids fort) sort dans la CARRY et la CARRY précédente rentre dans b0 (poids faible)
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le résultat à son bit de poids fort à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 si après l'opération, N est à 1 et C est à 0 ou si N est à 0 et C est à 1.
C : passe à 1 si, avant l'opération le bit de poids fort de l'opérande était égal à 1.
ROR
Cette instruction réalise un
DECALAGE
vers la droite d'un accumulateur (A ou B) ou d' une case mémoire, puis place le résultat dans ce même accumulateur, ou case mémoire, b0 (poids faible) sort dans la CARRY et la CARRY précédente rentre dans b7 (poids fort)
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le résultat à son bit de poids fort à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 si après l'opération, N est à 1 et C est à 0 ou si N est à 0 et C est à 1.
C : passe à 1 si, avant l'opération le bit de poids faible de l'opérande était égal à 1.
III) Tests et manipulations de bits :
BIT
Cette instruction réalise un
ET
logique entre le contenu d'un accumulateur (A ou B) et le contenu d'un case mémoire, puis positionne les bits du CCR s'il y a lieu, sans modifier le contenu de l'accumulateur ni de la mémoire.
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le résultat de poids fort du ET est à 1.
Z : passe à 1 si le résultat du ET est nul.
V : passe à 0.
BCLR
Cette instruction réalise un
POSITIONNEMENT à 0
des bits spécifiés dans le masque par des
1
, les autres bits ne subissent aucune modification.
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le résultat de poids fort du ET est à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 0.
BSET
Cette instruction réalise un
POSITIONNEMENT à 1
des bits spécifiés dans le masque par des
1
, les autres bits ne subissent aucune modification.
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le résultat de poids fort du ET est à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 0.
IV) Opérations arithmétiques :
* D'addition
ABA
Cette instruction réalise une addition de A et B et place le résultat dans A.
Voici les bits du CCR qui sont modifiés :
H : passe à 1 s'il y a retenue du bit 3 vers le bit 4.
N : passe à 1 si le bit de poids fort du résultat est à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 s'il y a un débordement arithmétique en complément à 2.
C : passe à 1 s'il y a retenue depuis le bit 7.
ABX
Cette instruction réalise une addition de B (considéré comme non-signé) et X et place le résultat dans X.
Les bits du CCR ne sont pas modifiés .
ABY
Cette instruction réalise une addition de B (considéré comme non-signé) et Y et place le résultat dans Y.
Les bits du CCR ne sont pas modifiés .
ADCA
Cette instruction réalise une addition de A, de la Carry et d'une case mémoire et place le résultat dans A
Voici les bits du CCR qui sont modifiés :
H : passe à 1 s'il y a retenue du bit 3 vers le bit 4.
N : passe à 1 si le bit de poids fort du résultat est à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 s'il y a un débordement arithmétique en complément à 2.
C : passe à 1 s'il y a retenue depuis le bit 7.
ADCB
Cette instruction réalise une addition de B, de la Carry et d'une case mémoire et place le résultat dans B
Voici les bits du CCR qui sont modifiés :
H : passe à 1 s'il y a retenue du bit 3 vers le bit 4.
N : passe à 1 si le bit de poids fort du résultat est à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 s'il y a un débordement arithmétique en complément à 2.
C : passe à 1 s'il y a retenue depuis le bit 7.
ADDA
Cette instruction réalise une addition de A et du contenu d'une case mémoire et place le résultat dans A.
Voici les bits du CCR qui sont modifiés :
H : passe à 1 s'il y a retenue du bit 3 vers le bit 4.
N : passe à 1 si le bit de poids fort du résultat est à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 s'il y a un débordement arithmétique en complément à 2.
C : passe à 1 s'il y a retenue depuis le bit 7.
ADDB
Cette instruction réalise une addition de B et du contenu d'une case mémoire et place le résultat dans B.
Voici les bits du CCR qui sont modifiés :
H : passe à 1 s'il y a retenue du bit 3 vers le bit 4.
N : passe à 1 si le bit de poids fort du résultat est à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 s'il y a un débordement arithmétique en complément à 2.
C : passe à 1 s'il y a retenue depuis le bit 7.
* De soustraction
SBCA
Cette instruction soustrait la Carry et le contenu d'une case mémoire et place le résultat dans A.
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le bit de poids fort du résultat est à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 s'il y a un débordement arithmétique en complément à 2.
C : passe à 1 si la valeur absolue de la case mémoire ajoutée à la Carry est suppérieure à la valeur de A.
SBCB
Cette instruction soustrait la Carry et le contenu d'une case mémoire et place le résultat dans B.
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le bit de poids fort du résultat est à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 s'il y a un débordement arithmétique en complément à 2.
C : passe à 1 si la valeur absolue de la case mémoire ajoutée à la Carry est suppérieure à la valeur de B.
SUBA
Cette instruction soustrait le contenu d'une case mémoire et place le résultat dans A.
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le bit de poids fort du résultat est à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 s'il y a un débordement arithmétique en complément à 2.
C : passe à 1 si la valeur absolue de la case mémoire est suppérieure à la valeur absolue de A.
SUBB
Cette instruction soustrait le contenu d'une case mémoire et place le résultat dans B.
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le bit de poids fort du résultat est à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 s'il y a un débordement arithmétique en complément à 2.
C : passe à 1 si la valeur absolue de la case mémoire est suppérieure à la valeur absolue de B.
NEG
Cette instruction réalise un changement de signe ou complément à 2 de l'opérande spécifié (A, B ou le contenu d'une case mémoire)
* D'incrémentation et décrémentation :
INC
Cette instruction augmente de 1 A(INCA), B(INCB) ou une case mémoire.
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le bit de poids fort du résultat est à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 s'il y a un débordement arithmétique en complément à 2.
INX
Cette instruction augmente de 1 le contenu de X.
Voici le bit du CCR qui est modifié :
Z : passe à 1 si le résultat est nul.
INY
Cette instruction augmente de 1 le contenu de Y.
Voici le bit du CCR qui est modifié :
Z : passe à 1 si le résultat est nul.
INS
Cette instruction augmente de 1 le contenu de S.
Aucun bit du CCR n'est modifié
DEC
Cette instruction diminue de 1 A(DECA), B(DECB) ou une case mémoire.
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le bit de poids fort du résultat est à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 s'il y a un débordement arithmétique en complément à 2.
DEX
Cette instruction diminue de 1 le contenu de X.
Voici le bit du CCR qui est modifié :
Z : passe à 1 si le résultat est nul.
DEY
Cette instruction diminue de 1 le contenu de Y.
Voici le bit du CCR qui est modifié :
Z : passe à 1 si le résultat est nul.
DES
Cette instruction diminue de 1 le contenu de S.
Aucun bit du CCR n'est modifié
* De comparaison
CMP
Cette instruction compare un accumulateur (A ou B) et une valeur ( ou d'une adresse pointant sur une case mémoire ).
Pour cela, est retranchée la valeur de la case mémoire à celle de l' accumulateur (A -M ou B - M).
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le bit de poids fort de la soustraction est à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 s'il y a un débordement arithmétique en complément à 2.
C : passe à 1 si la valeur absolue de la case mémoire est suppérieure à la valeur de l'accumulateur.
CPD
Cette instruction compare l'accumulateur D et une valeur 16 bits ( ou d'une adresse pointant sur deux cases mémoire ).
Pour cela, est retranchée la valeur des cases mémoire à celle de l' accumulateur D.
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le bit de poids fort de la soustraction est à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 s'il y a un débordement arithmétique en complément à 2.
C : passe à 1 si la valeur absolue de la case mémoire est suppérieure à la valeur de l'accumulateur.
CPX
Cette instruction compare le registre X et une valeur 16 bits ( ou d'une adresse pointant sur deux cases mémoire ).
Pour cela, est retranchée la valeur des cases mémoire à celle du registre X.
Voici les bits du CCR qui sont modifiés :
N : passe à 1 si le bit de poids fort de la soustraction est à 1.
Z : passe à 1 si le résultat est nul.
V : passe à 1 s'il y a un débordement arithmétique en complément à 2.
C : passe à 1 si la valeur absolue de la case mémoire est suppérieure à la valeur de l'accumulateur.
CPY
CBA
* De multiplication et division :
MUL
FDIV
IDIV
* De test :
TST
IV) Chargement, stockage, transfert et échange :
CLR
LD
ST
PUL
PSH
TAB
TBA
TAP
TPA
TSX
TXS
TSY
TYS
XGDX
XGDY
V) De branchement :
BRA
BRN
BCC
BCS
BEQ
BNE
BMI
BRCLR
BRSET
BGE
BGT
BHI
BHS
BLE
BLO
BLS
BLT
BSR
BVC
BVS
VI) Contrôle :
NOP
STOP
WAI
SWI
RTI
RTS
CLI
CLC
CLV
SEC
SEV