SOMMAIRE
1  ) DÉFINITION page 2
2  ) L’ÉDITION         page 3
2.1 ) LANGAGE DE L’ ASSEMBLEUR X68C11 page 3
2.1.1)   LA SYNTAXE DE L’ASSEMBLEUR X68C11       page 3
2.1.1.1) Label ou étiquette       page 3
2.1.1.2) Adressage     page 3
2.1.1.3) ) Types          page 4
2.1.1.4) ) Opérations       page 4
2.1.2)   ) DIRECTIVES D’ASSEMBLAGE  page 4
2.1.2.1) Contrôle de stockage page 4
2.1.2.2) ) Définitions  page 5
2.1.2.3) ) Mode          page 5
2.2Â ) INSTRUCTIONS DU ?C 68HC11page 6
2.2.1)Â Â Â ) ADRESSAGE Â Â Â Â Â Â Â Â Â page 6
2.2.2)   ) CHARGEMENT, MÉMORISATION        page 6
ET TRANSFERT
2.2.3)Â Â Â ) MANIPULATION ET TEST DE BITSÂ Â Â Â Â Â page 6
2.2.4)   ) OPÉRATIONS MATHÉMATIQUES        page 7
2.2.5)   OPÉRATIONS LOGIQUES page 7
2.2.6)Â Â Â )MULTIPLICATION ET DIVISIONÂ Â Â Â Â Â Â Â Â Â page 8
2.2.7)   ) DÉCALAGES ET ROTATIONS    page 8
2.2.8)Â Â Â ) STRUCTURE
page 8
2.2.9)   ) INSTRUCTIONS SUR LE REGISTRE D’ÉTAT  page 8
3Â Â ) INCLUSION DE FICHIERÂ page 9
4Â Â ) ASSEMBLAGEpage 9
5) REGLAGE DES PARAMETRES DE COMMUNICATIONÂ Â Â Â Â Â Â Â Â Â Â Â Â Â Â page 10
6 ) DEBUGGERÂ Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â page 10
1 ) DÉFINITION
Pour réaliser et utiliser un programme, il est nécessaire de suivre l’algorithme suivant
Elle consiste à écrire un programme ( suite d’instructions ) à l’aide d’un éditeur de texte. Elle utilise le langage de l’assembleur X68C11et la syntaxe du µC68HC11.
On lance l’édition à l’aide d’une commande du logiciel WinHC11.
Une ligne d’instruction se présente sous la forme suivante :
ETIQUETTE             CODE OPERATOIRE          OPERANDE                ; ; ‘’commentaire’’
2.1 ) LANGAGE DE L’ ASSEMBLEUR X68C11
Distingue les majuscules des minuscules. Il est de règle de les mettre toujours en majuscule. Un label doit être déclaré dans son champ label ( colonne 1 ) , sinon les sauts relatifs sur ce label ne pourront pas être calculés et donc forcés à l’adressage étendu.
Mode | Code opérande | Opérande | Le code opérande est ... |
Inhérent | Implicitement contenue dans l’instruction | absent | |
Immédiat | #Label #Valeur | Valeur :sur 8 ou 16 bits suivant l’instruction. | l’opérande lui-même |
Etendu | Label | l’adresse de l’opérande | |
Direct | < Label | l’adresse de l’opérande Utilisé lorsque l’opérande est situé en page 0. L’adressage direct peut être automatique en utilisant les directives ‘Absolute’ et ‘relative’ lors des réservations de mémoire. | |
Label | |||
Indexé | Offset,X | l’index utilisé et le décalage. L’adresse de l’opérande est calculée par : X + Offset       (en non signé) | |
Offset,Y | |||
Bases | ex : | ||
Décimal | LDAA #35 | ||
$ | Hexadécimal | LDAA #$2A | |
@ | Octal | LDAAÂ #@25 | |
% | Binaire | LDAAÂ #%10010111 | |
’ | ASCII | LDAA #’K’ |
L’INSTRUCTION SINONerreur.
+ , - | arithmétique | ldab    #$46+5 | & , ^ | ET , OU | ldab    #$46&$F0 | |
* , / | en non signé | ldab      #3562/60 | .XOR. | Xor | ldab     #$.$F0 | |
! | complément | ldab    #!$45 | ||||
** | Exp ; 2**12 = 212 | ldab #73728/2**9 |
Les opérations ne travaillent que sur des entiers sans limite de dimension, alors il faut faire les * et + avant les / et - pour garder la précision. Le résultat doit être compatible avec son utilisation.
Directive | Signification | Exemples | |
ORG | origine des labels | ORG | $B600 |
END | fin d’assemblage | END | |
FCB | stocke des octets en mémoire. | MEM1FCB | $55 |
MEM2FCB | 21,%01101011,$E7 | ||
Mess1 FCB | ‘I am happy !’ | ||
FDB | comme FCB sur des mots de 16 bits | MEM3FDB | $55AA |
FCC | stocke une chaîne de caractères délimitée par un même caractère. | Mess2 FCC Mess3 FCC | /I’m happy !/ *Vitesse (m/s) = * |
RMB | réserve des bytes en mémoire | TAB     RMB | 4 |
Directive | Signification | Exemples | |
EQU | définit une constante | CONST1 |     EQU   $B600 |
VAR | comme EQU mais redéfinissable en cours de programme. Utilisé lors des déclarations des variables locales stockées dans la pile. | CPTR |     VAR  2 |
Directive | Signification | Exemples |
INCLUDE | permet d’inclure un fichier DOS. Un seul niveau d’inclusion. | INCLUDE |
ABSOLUTE : : : | Pour encadrer les labels qui doivent être adressés en direct sur la page 0 | ABSOLUTE                ORG   0 LAB1 ... ... |
RELATIVE | On peut s ‘en passer mais alors l’adressage direct doit être explicite. | RELATIVE BRSET <Ad,M,Rel |
2.2 ) INSTRUCTIONS DU ?C 68HC11
UN jeu complet des instructions est donné en annexe
Les instructions sont données à l’aide de mnémoniques
Dans les instructions ‘ad’ peut être : rien  :Inhérent.
#Valeur         :Immédiat.
Label :Etendu, ou direct automatique en page 0.
Offset,X         :Indexé sur X ou Y avec offset constant 8 bits, non signé.
‘rel’ représente l’adressage relatif exclusivement réservé pour les branchements.
Fonction | Mnémonique | |
Mise à 0 | d’un octet mémoire | CLR    ad |
de l’accu A ou B | CLRr | |
Charge | l’accu A ou B | LDAr ad |
D, X , Y ou S | LDr ad | |
Mémorise | l’accu A ou B | STAr ad |
D, X, Y ou S | STr ad | |
Transfert | A dans B ou l’inverse | TAB ou  TBA |
A dans CCR ou l’inverse | TAP ou  TPA | |
SP+1Â dans X ou Y | TSr | |
X-1 ou Y-1 dans SP | TrS | |
Echange D avec X ou Y | XGDr | |
Tire A, B, X ou Y de la pile | PULr | |
Pousse A, B, X ou Y dans la pile | PSHr |
Fonction | Mnémonique |
Bit Test A ou B avec la mémoire | BITr  ad |
Bits mis à                                 Zéro | BCLR  ad, msk |
Un | BSETÂ Â ad, msk |
Branche si bit(s) égal              Zéro | BRCLR  ad, msk, rel |
Un | BRSETÂ ad, msk, rel |
Fonction | Mnémonique | ||
Addition | de l’accu B à A , à X ou Y (non signé) | ABr | |
d’une mémoire à A ou B (8 bits) à D (16bits) | ADDr ad | ||
avec retenue à A ou B | ADCr ad | ||
Soustrait | mém. à A ou B sans retenue à D (16bits) | SUBr ad | |
mém. à A ou B avec retenue | SBCr ad | ||
B Ã A | SBA | ||
Ajustement décimal de A (après une addition, pas une incrémentation) | DAA | ||
Incrémente | un octet mémoire | INC ad | |
A ou B | INCr | ||
S, X ou Y | INr | ||
Décrémente | un octet mémoire | DEC ad | |
A ou B | DECr | ||
S, X ou Y | DEr | ||
Complément à 2 | d’un octet mémoire | NEG ad | |
de A ou B | NEGr | ||
Compare | A Ã B | CBA | |
A ou B à une mémoire | CMPr ad | ||
D, X ou Y à la mémoire | CPr ad | ||
Test si zéro ou négatif            d’un octet | TST ad | ||
de A ou B | TSTr | ||
Fonction | Mnémonique | |
mémoire ET A ou B | ANDr  ad | |
mémoire OU A ou B | ORAr  ad | |
mémoire OU EX A ou B | EORr  ad | |
Bit test mémoire ET A ou B | BITr  ad | |
Complémente              mémoire | COM   ad | |
A ou B | COMr |
Fonction | Mnémonique | |
Multiplication :Â A x B => D | MUL | |
Division fractionnaire : D : X => X ; r => D Num, Dénom = entiers 16bits, Résult et Reste= fractionnaires 16 bits: $.xxxx | FDIV | |
Division entière : D : X =>X ; r => D Num, Dénom, Résult et Reste = entiers 16bits | IDIV |
Fonction | Mnémonique | |
Mise à zéro du bit C, I, V | CLb | |
Mise à un du bit C, I, V | SEb |
Fonction | Mnémonique | ||
Décalage | à gauche | d’un octet | ASL ad |
Arithmétique Décalage logique Rotation | à gauche (? ASL) à droite C à gauche | de A, B ou D d’un octet deA ou B d’un octet de A, B ou D d’un octet de A, B ou D d’un octet de A ou B d’un octet de A ou B | ASLr ASR ad ASRr LSL ad LSLr LSR ad LSRr ROL ad ROLr ROR ad RORr |
Fonction | Mnémonique | |
Branche à un sous-programme | BSR rel | |
Saut à un sous-programme | JSR ad | |
Retour de sous-programme | RTS | |
Retour d’interruption | RTI | |
Interruption programmée | SWI | |
Attente d’interruption | WAI | |
Pas d’opération | NOP | |
Arrête l’horloge | STOP |
2.2.9 ) INSTRUCTIONS SUR LE REGISTRE D’ETAT
Fonction | Mnémonique | ||||
Saut | JMPÂ Â Â Â Â ad | ||||
Branche | toujours | BRAÂ Â Â Â rel | |||
jamais | BRNÂ Â Â Â rel | ||||
si      non retenue | (C = 0) | BCC rel | |||
retenue | (C = 1) | BCS rel | |||
# 0 | (Z = 0) | BNE rel | |||
= 0 | (Z = 1) | BEQ rel | |||
? 0 | (N = 0) | BPL rel | |||
< 0 | (N = 1) | BMI rel | |||
pas de dépassement (V = 0) | BVC rel | ||||
dépassement (V = 1) | BVS rel | ||||
Après opération de comparaison o si ?                        (signé) | u soustraction BGE rel | ||||
          ?                   (non signé) | BHS rel | ? BCC | |||
(signé) | BGT rel | ||||
                                 (non signé) | BHI rel | ||||
(signé) | BLE rel | ||||
          ?                   (non signé) | BLS rel | ||||
(signé) | BLT rel | ||||
                              (non signé) | BLO rel | ? BCS | |||
si     bits à  0 | BRCLR ad,msk,rel | ||||
bits à  1 | BRSET ad,msk,rel |
Pour inclure un fichier mnémonique dans votre programme, par exemple le fichier de configuration des 64 octets du µC68HC11 ( ), il faut ajouter la ligne suivante dans votre programme : pour la version Winhc11         INCLUDE ;table des registres de sortie pour la version Winhc12 INCLUDE   ;table des registres de sortie
Il faut aussi définir le chemin d’accès au fichier inclus par la commande
Il s’effectue à l’aide d’une commande du logiciel WinHC11.
* Choix du port série de l’ordinateur ( com1 / com2 )
* Choix de la fréquence du quartz : 7372800Hz
*Â Choix du talker : : Bootstrap en PROM $FE00
Il s’effectue à l’aide d’une commande du logiciel WinHC11.
Une aide est disponible dans le logiciel.