Vous êtes sur la page 1sur 22

Le micro contrleur 68HC11 et son assembleur : notions de base

S. Caut et O. Bachelier

mars 2003
1

GENERALITES SUR LES MICRO CONTRLEURS

1.1

Pourquoi utiliser un micro contrleur ?

Un micro contrleur (C) est un circuit intgr qui, en lui-mme, n'a pas de fonction spcique ou particulire ddie. On ne peut pas pour autant dire qu'il ne sait rien faire car il dispose d'un ensemble de fonctions prdnies appel jeu d'instructions. Ce dernier permet au En eet, le moire. Pour mettre en oeuvre un

C d'eectuer un certain nombre d'actions

(ET logique, OU logique, additions d'entiers...) principalement sur sa mmoire.

manipule des donnes qui sont stockes dans des zones de m-

C,

il est donc ncessaire d'crire un programme

et de l'y implanter an que le

puisse excuter les instructions composant

le programme. Un programme est donc une squence d'instructions excutes l'une aprs l'autre. Pour crire un programme correct, il convient de savoir quel est le langage compris par le

(nous y reviendrons plus tard). on peut considrer un petit exemple. Soient

Pour comprendre l'utilit d'un trois interrupteurs

C,

I1 , I2 , I3

et trois lampes

L1 , L3

et

L3 .

Problme 1 :

Ki

allume

Li , i {1; 2; 3}.

Solution 1 : un simple petit montage lectrique sut. Problme 2 : les trois interrupteurs ensemble allument
actionns,

L1 ,

Si seuls

I1

et

I3

sont

L3

s'allume. Si

I1

ou

I2

sont actionns,

L2

doit s'allumer.

Solution 2 : Il sut de mettre en place une logique cble avec des portes comme
celle de la gure ci-dessous.

GENERALITES SUR LES MICRO CONTRLEURS

L1 I1 I2 I3 L3
Problme 3 : si les trois interrupteurs sont actionns,
secondes puis se met clignoter. Si seuls

L2

L1

s'allume pendant cinq

I1

et

I3
et

(mais pas

I2 )

sont actionns,

L1

s'allume et

L2

clignote pendant 10s. Si

I1

I2

sont actionns,

L1

et

L3

clignotent en phase alors que

L2

clignote en opposition.

Solution 3 : pour un tel problme, il est draisonnable d'envisager un montage


lectrique ou encore une logique cble. En revanche, il est tout fait judicieux de programmer un micro contrleur cet eet. Sur la gure 2, on voit quelles sont les possibilits pour construire une fonction Entres/Sorties. Le traitement par

C correspond des fonctions sophistiques.

GENERALITES SUR LES MICRO CONTRLEURS

Montage Electronique

Entres

Cable

Traitement par un microcontroleur

1.2

Architecture d'un microcontrleur

L'architecture d'un

est rsume par la gure ci-aprs.

Sorties

Logique

GENERALITES SUR LES MICRO CONTRLEURS

Mmoires P
RAM ROM EPROM EEPROM

Priphriques
Liaisons "srie" Liaisons parallles Timer ...etc...

Bus de donnes Bus dadresse Lignes de controle (R/W,E...)

On constate que dans un

C, un microprocesseur (P) fonctionne en interaction

avec des zones de mmoire et un certain nombre de priphriques par l'intermdiaire de lignes de commande ou de bus. Tout ce fonctionnement est cadenc par une l'intrieur du

horloge et chaque action eectue

requiert un certain nombre de cycles d'horloge.

Toutes ces entits sont regroupes en un seule circuit intgr (une puce). Le rle de quelques unes de ces entits est dtaill ci-dessus.

1.2.1 Le rle du P
Sa seule fonction est de prendre des donnes provenant de priphriques ou de la mmoire, de leur faire subir un traitement, puis de les renvoyer sur des priphriques ou dans la mmoire. Il se compose plus prcisment des lments suivants : 1. un

e A.L.U. ou Unit Arithmtique et Logique : c'est un organe qui


P
(addition, soustraction,multpilications,

permet de faire des oprations arithmtiques et logiques lmentaires sur les donnes manipules par le divisions, Et logique, OU logique, ...). 2.

des registres de travail :


dont le

ce sont des zones de mmoire spciques

dispose pour pouvoir excuter les diverses instructions (ex :

oprations lmentaires de l'A.L.U.) 3.

la logique de contrle : c'est un organe du P qui lui permet de grer


les donnes circulant sur les lignes de contrle.

GENERALITES SUR LES MICRO CONTRLEURS

4.

la logique d'adresse :

elle permet au

de grer les informations

mettre sur le bus d'adresse. 5.

le registre d'instruction dcodeur : c'est lui qui doit interprter les


direntes instructions du programme et renseigner ainsi l'unit de commande.

6.

l'unit de commande : elle contrle l'ensemble du fonctionnement du


P
et active au bon moment les dirents lments.

1.2.2 Le rle des bus et des lignes


Le bus d'adresse est un ensemble de lignes lectriques (16 pour le 68HC11) permettant de faire circuler sur chacune des lignes une information boolenne (ou binaire) c'est--dire de type 0 ou 1 (On parle de bit (abrviation de Binary

Digit). Un octet se dnit par une information de 8 bits et un mot par une information de 16 bits).
Sur ce bus, peuvent donc circuler la mmoire o :  soit se trouve une donne que le

216

informations direntes qui sont en fait

les direntes adresses. Une adresse est un nombre correspondant un octet de

doit rcuprer ;

 soit ce dernier doit envoyer une donne. Le

bus de donnes est un ensemble de lignes lectriques (8 pour le 68HC11)


P
manipule (des nombres,

sur lequel circulent les informations utiles que le des codes de caractres,...) autres que les adresses.

Les lignes de contrle servent entre autres spcier si les donnes sont lues (R) partir de la mmoire ou si elles sont crites en mmoire (W).

1.2.3 Les direntes mmoires


Il existe dans un

C,

des mmoires de natures direntes :

 La RAM (Read Access Memory) : c'est une zone de mmoire dans laquelle le

peut lire ou crire tout instant de l'excution d'un programme.

On y trouve les donnes utiles l'excution de ce programme telles que les variables ;  La ROM (Read Only Memory) : c'est une zone de mmoire dans laquelle le le

P C

ne peut que lire. On peut y trouver des informations prdnies sur qui ne peuvent ni ne doivent tre modies (telles que le programme

dans la plupart des applications industrielles) ;

GENERALITES SUR LES MICRO CONTRLEURS

 L'EPROM (Electrical Programmable Read Only Memory) : c'est une ROM dans laquelle on peut crire en dehors de l'excution par un procd bien particulier et qui ne pourra plus tre modie. C'est dans ce bloc-mmoire que l'on crit le programme excuter. Si on utilise une EPROM, cela signie que le E2 qui sera utilis en TP).  l'EEPROM (Erasable Electrical Programmable Only Memory) : elle est comparable l'EPROM mais on peut la reprogrammer c'est--dire renouveler les instructions qui s'y trouvent, ceci toujours en dehors de l'excution. En pratique, le programme sera charg dans l'EEPROM par un logiciel. C'est le type de ROM prsent sur le 68HC811E2.

est entirement et dnitivement ddi

l'application correspondant au programme (il n'y en a pas dans le 68HC11

1.2.4 Les priphriques


Ce sont des organes du

qui permettent d'tendre les fonctions de base.Ils

sont capables d'changer des informations binaires avec le Parmi eux, on trouve entre autres  le

P.

Timer qui utilise l'horloge an de permettre au P de grer des propriphriques de liaison (srie ou parallle) qui permettent au C CAN (Conver-

cessus qui font intervenir le temps avec prcision ;  les

d'changer des donnes avec l'environnement extrieur (captuers, actionneurs) ;  dans le cadre plus gnral de cet change avec l'extrieur, les

tisseurs Analogiques Numriques) qui permettent de convertir une tension analogique provenant d'un signal extrieur en une donne numrique exploitable par le qui mettent vers l'extrieur, sous forme d'une tension analogique, une donne numrique fournie par le  la

P et les CNA (Convertisseurs Numriques Analogiques) P.

logique d'interruption ; une interruption est un vnement engenP


en pleine excution d'un programme. La

dr par l'extrieur, qui survient inopinment et qui doit tre immdiatement pris en compte par le ce cas de gure. logique d'interruption est un organe du

charg d'assister le

dans

1.3

Les applications du

De taille rduite, les

C sont prsents partout ou du moins dans la quasi-totalit

des appareils lectriques un peu sophistiqus c'est--dire ralisant plusieurs fonctions direntes (en particulier des fonctions d'achage). Les secteurs industriels

GENERALITES SUR LES MICRO CONTRLEURS

qui utilisent les

C sont nombreux : lectromnager, Hi Fi, automobile, cartes P.

puces, appareils mdicaux, domotique, automates en tous genres, ...et bien sr n'importe quel ordinateur personnel comporte un

Les principaux fabricants de ce type de composants sont Intel (le Pentium), Motorola (le

des ordinateurs Apple, le

68HC11), Thomson, NEC, Toshiba,


P ?

Texas Instruments (calculatrices), PIC de Microchips...

1.4

Savez-vous parler le langage du

1.4.1 Le langage machine La reprsentation binaire


Il n'est pas facile de communiquer directement avec un nous ne parlons pas la mme langue. le

parle le

binaire (la base 2) ou plus


C,
soit 0V (le "0") soit

P.

Soyons honnte,

prcisment, il ne comprend et n'interprte que des informations binaires, c'est-dire composes de 0 et de 1.Ces deux valeurs correspondent en fait aux deux niveaux de tension que l'on peut rencontrer dans un mentation (le "1"). Ainsi, chaque chire du code (donc forcment un 0 ou un 1) est appel un niveau suprieur de tension (entre 2 et 5V) dpendant de la tension d'ali-

bit (pour

binary digit).
Une information code sur 4 bits (exemples : 0011 ou encore 1111) est appel

quartet. On peut obtenir 24 = 16 codages binaires dirents qui peuvent tre


de 0 15 sur un seul quartet :

interprtes de diverses faons. Par exemple, on peut coder les nombres entiers

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 0 1 2 3 4 5 6 7 8 9 1010 1011 1100 1101 1110 1111 10 11 12 13 14 15
Une information code sur 8 bits (exemples : 00110101 ou encore 10101111) est appel

octet (byte en anglais). On peut obtenir 28 = 256 codages binaires mot (word).Exemple :

dirents qui peuvent tre interprtes de diverses faons. Par exemple, on peut coder les nombres entiers de 0 255 sur un seul octet. Une information code sur 2 octets (16 bits) est appel un 1101010100001111.

La reprsentation hexadcimale

GENERALITES SUR LES MICRO CONTRLEURS

Comme il est parfois fastidieux d'crire les informations (le plus souvent des nombres) en binaire, on lui prfre une criture en

base hexadcimale (base

16). Ainsi, un quartet peut tre reprsent comme son interprtation en nombre de la base 16. Ceci revient noter les 16 quartets dirents ainsi :

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 0 1 2 3 4 5 6 7 8 9 1010 1011 1100 1101 1110 1111 A B C D E F
Le langage machine est celui que comprend rellement le d'excution est rapide. Pour tre compris par un duit en langage machine.

crit en langage machine est directement interprt par le

C. Tout programme P donc le temps

P,

tout langage doit tre tra-

Remarque : Lorsque, dans un programme en Assembleur, une valeur est prcde du caractre '$', ceci signie qu'elle est donne en hexadcimal. Si le programme est en langage C, le '$' est rempalc par '0x'.

1.4.2 Le Langage mnmonique


Il s'agit d'un langage un peu plus accessible pour l'tre humain. Il est trs utilis car les programmes crits en ce langage ncessitent peu de mmoire lors de leur stockage. Comme tout langage, il est traduit en langage machine par un programme appel Assembleur. Pour cette raison, par abus de langage, on appelle le langage mnmonique

Assembleur.

L'assembleur reste rapide d'excution. Il est extrmement rare de programmer en langage machine mais si le temps d'excution et la taille du programme sont des facteurs prpondrants dans le choix du programmeur, l'assembleur est un choix judicieux. Chaque fabricant voire chaque

a son propre Assembleur. Nous tudierons

celui du 68HC11 lors des TD et TP.

1.4.3 Les langages structurs


L'assembleur reste nanmoins dicile d'utilisation lorsque les fonctions ralises sont sophistiques. On prfre alors programmer dans des langages disposant de structures toutes faites ( nralement situes dans des On utilise un

les tests, les boucles) et de fonctions prdnies gbibliothques.

compilateur pour traduire le langage structur en langage ma-

chine mais ce dernier peut gnrer beaucoup de code machine. En consquence, un langage structur ncessite plus de mmoire et induit des temps d'excution plus longs. Malgr l'existence de compilateurs optimisant leur traduction,

GENERALITES SUR LES MICRO CONTRLEURS

le langage mnmonique reste le meilleur moyen de crer des programmes courts et rapides lorsque la dicult du problme pos le permet. Parmi les langages structurs connus, on peut citer le Basic, Fortran, le C, le Pascal, l'ADA, les langages orients objet (C++,ADA orient objet, JAVA...), etc... Nous tudierons le langage C en TD et TP.

1.4.4 Les langages spciques


Il s'agit l de langages que l'on n'utilise que dans des cadres trs particuliers. Il en existe de nombreuses sortes. Certains s'utilisent avec des logiciels (langage MATLAB, langage LabView, HTML, macros EXCEL, ...). Ces langages subissent dirents niveaux d'interprtation, direntes conversions mais nissent toujours sous la forme d'un code binaire.

1.4.5 En rsum
Les paragraphes prcdents sont rsums par la gure ci-aprs.

Langages spcifiques Logiciel avec interprteur

Langages structurs Compilateur Assembleur Assembleur Langage Machine

Implantation

Micro controleur

LE C 68HC11

10

2
2.1

LE C 68HC11
Structure du 68HC11

Comme dj vu plus haut, le

68HC11 intgre en un mme circuit dirents

lments que l'on retrouve dans tous les  le

savoir :

(que l'on appelle parfois CPU) ;

 les mmoires ;  les interfaces Entre/Sorties (dont la logique d'interruption). Mais il comprend aussi un certain nombre de ressources que l'on ne retrouve pas toujours sur d'autres  des timers ;  des CAN, CNA ;  des liaisons sries synchrone et asynchrone ;  des extensions mmoire. D'aspect gnral, le 68HC11 se prsente comme un petit carr de silicium biseaut sur un angle et comportant 52 broches pouvant tre connectes des composants extrieurs (gure ci-dessous).

C,

savoir :

LE C 68HC11

11

LE C 68HC11

12

Mais le schma gnral du

est donn par la gure 5.

2.2

La mmoire du 68HC11E2

Dans l'tude des problmes que nous rencontrerons

en pratique, nous serons

amener distinguer trois zones de mmoire selon leurs adresses :  $0000$0055 : la RAM ou seront stockes les donnes utilises et cres par le programme.  $1000$103F : les registres de fonctions dont l'utilisation doit tre apprhende au fur et mesure que leur utilisation est ncessaire (voir tableau registres de fonctions).  $F800$FFFF : l'EPROM dans lequel le programme sera tlcharg.

LE C 68HC11
Les entres/sorties du 68HC11

13

2.3

Ce paragraphe est ddi l'tude des changes d'information entre le l'environnement extrieur au moyen de ports d'entre/sortie.

et

2.3.1 Les ports d'entres et les ports de sorties A l'exception du port D qui comprend seulement 6 lignes d'entre/sortie, les
4 autres ports en comportent 8. Ces lignes autorisent :  soit le transfert d'une information de type 0 ou 1 provenant de l'extrieur vers le

: on parle alors de lignes d'entre.

 soit le transfert d'une information du mme type du on parle alors de lignes de sortie.

vers l'extrieur :

Certaines lignes peuvent tre congures en entre ou en sortie. Ces informations, codes sur 8bits, peuvent circuler des ports vers le

vers les ports par le

bus de donnes.Les

ou du

5 ports sont appels PORTA,

PORTB, PORTC, PORTD et PORTE.

2.3.2 Conguration des entres/sorties


Comme nous venons de le voir, certaines lignes sont toujours des ligne de d'entre, d'autres, toujours des lignes de sortie. Enn, certaines peuvent tre d'entre ou de sortie. On le voit bien sur le schma de l'architecture globale du 68HC11.  Le PORTB (adresse $1004) ne se congure pas. Toutes ses lignes sont de sortie.  Le PORTE (adresse $100A) ne se congure pas. Toutes ses lignes sont d'entre.  Le PORTA (adresse $1000) possde 3 lignes d'entre, 3 lignes de sortie et deux lignes d'entre/sortie qu'il reste congurer si l'on veut les utiliser. Ainsi, si l'on dcompose le PORTA en 8 bits de PA0 PA7, chaque bit correspond une ligne. Les lignes PA7 et PA3 peuvent tre choisies en entre ou en sortie. Ce choix est eectu en imposant les bits DDRA7 et DDRA3 du registre de fonction PACTL (adresse $1026). Voir gure ciaprs. Un bit 1 congure la ligne en sortie alors que ce mme bit 0 congure la ligne en entre.

LE C 68HC11

14

PORTA ($1000)

PA7 PA6

PA5 PA4

PA3 PA2

PA1

PA0

PACTL ($1026)

DDRA7 1 0

DDRA3 1 0

 Le PORTC (adresse $1003) est entirement congurable en entre/sortie ; La conguration de ses lignes se fait par une criture dans le registre DDRC (adresse $1007). Voir gure ci-dessous.

PORTC ($1003)

PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0

DDRC ($1007)

1 0

1 0

1 0

1 0

1 0

1 0

1 0

1 0

 Le PORTD (adresse $1008) comporte 6 lignes congurables par l'criture dans le registre DDRD (adresse $1009). Voir gure ci-aprs.

PORTD ($1008)

PD5 PD4 PD3 PD2 PD1PD0

DDRD ($1009)

1 0

1 0

1 0

1 0

1 0

1 0

LE C 68HC11
Les registres internes

15

2.4

Est prsent, dans ce paragraphe, l'intrt de plusieurs registres trs utiles dans le fonctionnement du 68HC11.

2.4.1 Les registres de 8 bits Les accumulateurs : Il existe deux registres appels accumulateurs correspondant un octet. Ils sont nots A et B et servent faire toutes sortes de manipulations sur des donnes de 8 bits. On peut y stocker temporairement une valeur, faire une opration sur cette valeur l'intrieur de l'accumulateur ou encore utiliser cet accumulateur pour ranger la donne en mmoire. La concatnation des accumulateurs A et B constituent ce qui est appel le registre D (voir gure ci-dessous).

A D

Le registre CCR : il s'agit d'un registre qui est susceptible d'tre modi
chaque fois qu'une instruction est excute. Il se prsente comme suit :

CCR

On peut s'attarder sur quelques bits de CCR qui seront peut-tre utiliss dans le cadre de cet enseignement : 

C (Carry) : c'est le bit de retenue. Il est mis 1 lorsque le rsultat d'une


instruction gnre une retenue (ce peut tre une opration arithmtique, une rotation ou encore une complmentation).

V (Overow)

: c'est le bit de dbordement. Il est mis 1 lorsqu'une

opration arithmtique gnre un dbordement de l'accumulateur utilis.   

Z (Zero) : il est mis 1 lorsque le rsultat de l'instruction est nul. N (Negatif) : il est mis 1 lorsque le rsultat de l'instruction est ngatif. I (Interrupt) : C'est le bit des interruptions. Mis 1, il inhibe les interruptions c'est--dire la prise en compte immdiate d'vnements extrieurs survenant pendant l'excution d'un programme.

LE JEU D'INSTRUCTIONS : ASSEMBLEUR 68HC11

16

Il est inutile pour l'instant d'aborder la signication des bits restants.

2.4.2 Les registres de 16 bits


Il en existe cinq qui sont ici numrs :  

le registre D : c'est la concatnation de A et B dj mentionne. le registre X : a l'instar de A et B, c'est un registre tout faire mais il
peut manipuler une donne de deux octets. Par ailleurs, il est trs utile en tant qu'

index lorsque le P excute une instruction utilisant un adressage

index (nous y reviendrons). 

Le registre Y : il joue le mme rle que X si ce n'est que toute instruction utilisant Y plutt que X se code sur un octet supplmentaire donc son excution est alors plus lente.

le registre SP (Stack Pointer) : c'est que l'on appelle le pointeur de pile. Il indique en permanence la prochaine adresse libre de la pile. La pile
est une zone de mmoire que l'on peut utiliser pour ranger momentanment des donnes avant de s'en servir nouveau selon un principe

LIFO

(Last In First Out : dernier entr, premier sorti). On peut donc empiler puis dpiler des donnes ce qui signie que la pile est de taille variable. Le registre SP indique en quelque sorte la hauteur de la pile.Il existe des instructions pour empiler puis dpiler des donnes. 

Le registre PC (Program Counter) : ce registre appel compteur ordinal contient l'adresse de la prochaine instruction du programme qui
sera excute. Il permet donc au

de grer la squence des instructions

du programme, en particulier lorsque des boucles interviennent.

Le Jeu d'instructions : ASSEMBLEUR 68HC11


C
68HC11 en langage mnmonique. Comme il a dj t

Cette partie a pour but de donner quelques bases pour l'initiation la programmation d'un aussi l'on parle d' dans ce qui suit. mentionn, chaque constructeur voire chaque

Assembleur 68HC11. C'est celui qui est prsent brivement

utilise son propre Assembleur

3.1

Le programme

3.1.1 Un programme, quesaco ?


Il s'agit d'une suite d'instructions qui sont excutes en squence, c'est--dire l'une aprs l'autre (toutefois, il peut arriver que l'excution reprenne une instruction antrieure et ce plusieurs fois : c'est ce qu'on appelle une

boucle).

LE JEU D'INSTRUCTIONS : ASSEMBLEUR 68HC11

17

Il convient donc de fournir au

une suite d'instructions comprhensible par

lui, donc dans un langage adquat.

3.1.2 Programme Source/Programme objet


Lorsque le programmeur dite un chier pour y crire une suite d'instructions dans le p

langage mnmonique (l'assembleur), il cre ce que l'on appelle un rogramme source. Comme nous l'avons vu propos des dirents langages,
Il n'est donc pas

ce programme, s'il doit tre compris par un lecteur averti, ne l'est pas par le

P.
Le

excutable.

ne comprend que le

langage machine.

Il est donc indispensable que

le programme source soit traduit en langage machine. C'est le rle de l'assembleur qui convertit le programme source en un est interprtable par le

programme objet. Ce dernier

et donc excutable. Ainsi le programmeur crit-il un

programme source en assembleur avant de le faire assembler en un programme objet qui peut tre implant dans l'EEPROM puis excut. C'est de l'criture d'un programme source en assembleur dont il est question dans cette partie.

3.1.3 Comment crire un programme ?


Il importe de prendre de bonnes habitudes en programmation, entre autres de faire prcder l'criture d'un programme par la conception d'un organigramme. C'est une sorte de schma qui rsume la structure du programme. Ne pas faire d'organigramme, c'est risquer de srieuses dsillusions lors de la phase de tests du programme. La dmarche de conception d'un programme est rsume par l'organigramme ci-aprs.

LE JEU D'INSTRUCTIONS : ASSEMBLEUR 68HC11

18

Formulation dun cahier des charges Ecriture programme source

Dcomposition en sousproblmes Assemblage en programme objet

Ecriture organigramme complet Chargement dans une RAM pour tester

Eciture organigramme sousproblme i NON NON test OK ?

Dernier OUI sousproblme OUI Chargement dans lEPROM

Les rectangles correspondent aux actions eectuer et les losanges aux dirents tests et boucles prsents dans un programme. En pratique, on peut retrouver des instructions trs prcises l'intrieur de ces rectangles et losanges. Il est trs important, confront un problme, de l'analyser consciencieusement et de le dcomposer en divers sous-problmes plus faciles rsoudre.

3.2

Le logiciel

Par logiciel, on entend gnralement tout simplement programme. L'acception premire est un peu dirente : il s'agit en ralit de l'ensemble des instructions qui peuvent tre utilises par un

et qu'on appelle aussi jeu d'instruc-

tions. Lorsque ce dernier est exprim en langage mnmonique, on parle aussi d'Assembleur. Nous abordons ici quelques aspects de cet assembleur.

LE JEU D'INSTRUCTIONS : ASSEMBLEUR 68HC11

19

Remarque : le mot Assembleur dsigne donc trois concepts sensiblement dirents :


1. le langage mnmonique ; 2. l'ensemble des instructions qui composent ce langage (la nuance est faible) ; 3. l'outil qui convertit un programme source en un programme objet.

3.2.1 Structure d'une instruction


Une instruction est compose de deux parties distinctes et conscutives :  un oprateur (obligatoire) ;  un ou plusieurs oprandes (facultatif ). Certaines instructions ne ncessitent pas d'oprandes. Ce sont des oprations sur registre. La nature des oprateurs et oprandes conduit classer les instructions du logiciel selon dirents modes d'adressage.

3.2.2 Les quivalences et les tiquettes


Lorsque dans l'criture d'un programme, une valeur (qui peut d'ailleurs tre une adresse) revient de manire rcurrente ou bien a une signication toute particulire que l'on veut faire apparatre dans le programme, on peut ds le dbut de ce dernier crire une ligne telle que :

REG_BASE = $1000
Cette instruction signie l'assembleur que, dans le suite du programme, il devra comprendre $1000 chaque fois qu'il rencontrera REG_BASE. Par ailleurs, l'on est parfois amen identier une ligne particulire laquelle le compteur ordinal est susceptible de revenir lors de l'excution du programme (au cours de l'excution d'une boucle notamment). L'on peut alors baptiser cette ligne an de rendre lisible le programme source.

Exemple :

RETOUR LDAA #S1000 Lorsque l'on envisage un retour


P
de repartir la ligne RETOUR.

l'instruction LDAA #$1000 (dont la comprhension n'est pas ncessaire ici), on peut spcier au

3.2.3 Les modes d'adressage


Adressage inhrent
C'est un mode d'adressage qui se passe d'oprande. Il correspond des oprations sur registre.

LE JEU D'INSTRUCTIONS : ASSEMBLEUR 68HC11

20

Exemple :

CLRA eace le contenu de l'accumulateur A.

Adressage immdiat
L'oprande manipul se trouve directement aprs l'oprateur et n'est pas spci par l'intermdiaire d'une adresse mais directement par sa valeur comme l'indique le symbole #.

Exemple :

LDAA #$12 L'accumulateur est charg avec une donne corres-

pondant 12 en hexadcimal.

Adressage tendu
Cette fois-ci, la donne n'est pas spcie directement mais au travers de son adresse en mmoire (le symbole # est absent) ou bien la donne manipule (dj prsente dans l'accumulateur) va agir sur le contenu d'une adresse.

Exemples :
1/

LDAA $0035 L'accumulateur A reoit le contenu


de l'adresse 35 (en hexadcimal comme l'indique le symbole $).

2/

STAA $0035 Le contenu de A est charg l'adresse


$35.

3/

ADDA $0035

Le contenu de $35 est ajout

celui de A et le rsultat est mis dans A.

Adressage direct
Analogue l'adressage tendu ; la seule dirence est que l'adresse mentionne est spcie seulement sur un octet, le poids fort tant alors considr comme nul.

Exemple :

LDAA $35 L'accumulateur A reoit le contenu de l'adresse $35.

Adressage index
Ce mode se rapproche quelque peu de l'adressage tendu mais l'adresse est partiellement contenue dans un registre ( de cet index.

X ou Y). Tout dpend donc du contenu

Exemple :

(adressage immdiat).

LDX #$1000 le registre X reoit la valeur hexadcimale 1000 LDAA $05,X L'accumulateur est charg avec une vaA

leur situe l'adresse gale la somme du dplacement indiqu (soit $5) et du contenu de X (soit $1000). Ainsi, l'instruction prcdente se rsume

($1005) (Les parenthses signient contenu de).

LE JEU D'INSTRUCTIONS : ASSEMBLEUR 68HC11

21

Adressage relatif
C'est un mode d'adressage que l'on retrouve lors des tests ou des boucles qui ncessitent une rupture (avec un ventuel retour en arrire) dans la squence d'instruction. Pour faciliter l'criture du programme dans un tel cas, on ne spcie pas explicitement l'adresse laquelle le

PC doit se rendre mais une tiquette.

Exemple :
LDAA Retour DECA BNE Retour 003A

Dans ce petit extrait de programme, la premire ligne charge de l'adresse $3A, puis on dcrmente le contenu de doit revenir la ligne indique par

A avec le contenu A la deuxime ligne et la


P

troisime ligne signie que si ce contenu ne devient pas gal zro, alors le

Retour.

3.2.4 Instructions sur bits


Il existe quelques instructions spciales qui permettent d'utiliser l'information prsente non par sur un octet entier mais sur un ou plusieurs bits de cet octet. De mme, d'autres instructions, permettent de modier partiellement un octet. Ces instructions utilisent des masques. En voici quelques unes.

L'instruction BSET :

Exemple :

BSET 4F,53

Dans cette instruction, le premier oprande ($4F) est une adresse et le second (03), un masque. L'instruction agit sur une donne d'un octet situe en mmoire l'adresse $4F. Le masque (ici 3) correspond la valeur 01010011. Ceci signie que sur les 8bits de l'adresse $4F, tous ceux correspondant un masque, doivent tre imposs

1.

1 dans le

Ainsi si la valeur en $4F tait E4, elle deviendra F7.

L'instruction BCLR :

0 les bits 1 dans le masque. Ainsi, si l'adresse 4F contient initialement la valeur FF, BCLR 4F,53 va modier cette valeur en AC.
Elle fonctionne de la mme manire que BSET mais en imposant spcis par un

L'instruction BRSET :

LE JEU D'INSTRUCTIONS : ASSEMBLEUR 68HC11

22

Il s'agit de tester un ou plusieurs bits d'une adresse pour savoir si un branchement est ralis ou pas.

Exemple :

BRSET 4F,53,branchement 1.

Dans cette expression, on teste si les bits correspondant au masque sont

Si c'est le cas, le compteur ordinal PC se rend l'adresse branchement. Cette dernire peut tre indique soit explicitement, soit par une tiquette de branchement. Ainsi, si l'adresse 4F contient FF, le branchement a lieu alors que si elle contient F0, il n'a pas lieu.

L'instruction BRCLR :
Elle fonctionne de manire analogue l'instruction BRSET mais le branchement a lieu si les bits indiqus par le masque sont

0.

Remarque : L'adresse est code sur un octet. C'est un adressage direct. L'adressage tendu ne peut tre utilis ici. En revanche, on peut utiliser l'adressage index (exemples : BCLR 01,X,53 ou BRCLR 5,X,53,F830 ).