L'ASSEMBLEUR DU 68HC11


Se faire payer en passant des pubs sur votre page web

 Mode d'adressage

Le CPU exécute à tout instant une instruction associée à une opérande.

Opérande : Donnée intervenant lors d'une opération arithmétique

Le mode d'adressage c'est le moyen donné au CPU pour trouver le lieu exact où se trouve l'opérande.

La capacité d'adressage du CPU est celle du PC ( 16 bits ) c'est à dire 216¨= 65536 adresses soit en héxadécimal de $0000 à $FFFF.

Les divers type de mode d'adressage sont décrits ci dessous

ADRESSAGE IMMEDIAT [#]

L'opérande située immédiatement aprèe l'instruction

Adresse

Données

Syntaxe

$00AB

86

LDAA #$4A

$00AC

4A

 

 

Dans cet exemple l'accumulateur A est chargé avec la donnée située immédiatement après l'instruction LDAA, le résultat de cette instruction est :   A <- $4A

ADRESSAGE ETENDU [> ou pas de symbole]

La donnée est située à l'adresse indiquée après l'instruction

Adresse

Données

Syntaxe

$00AB

86

LDAA $A23C

$00AC

A2

 

$00AD

3C

 

 

Adresse

Données

$A23C

5B

 

Dans cet exemple l'accumulateur A est chargé avec la donnée située à l'adresse indiquée après l'instruction LDAA, le résultat de cette instruction est : A <- $5B

ADRESSAGE DIRECT[>]

L'opérande est située à l'adresse don't la partie basse est indiquée après l'instruction, la partie haute étant sous entendue et égale à $00

Adresse

Données

Syntaxe

$00AB

96

LDAA $A7

$00AC

A7

 

 

Adresse

Données

$00A7

4F

 

Dans cet exemple l'accumulateur A est chargé avec la donnée située à l'adresse don't la partie basse est indiquée après l'instruction LDAA, le résultat de cet instruction est : A <- $4F

ADRESSAGE INHERENT ou IMPLICITE

L'instruction se suffit à elle même

Adresse

Données

Syntaxe

$00AE

55

COMB

 

Accumulateur B

82

 

Dans cet exemple l'accumulateur B contient $82 est après instruction, la donnée sera complémentée à 1, le résultat de cette instruction est:  B <- $7D

ADRESSAGE INDEXE

La Donnée est située à l'adresse correspondant à la somme du registre utilisée et de la valeur numérique.

Adresse

Données

Syntaxe

$00AB

EC

LDAA $10,X

$00AC

10

 

 

Registre X

$1000

 

Adresse

Données

$1010

$AE

 

Dans cet exemple l'accumulateur A est chargé par la Donnée située à l'adresse :
 $1010 = X + $10 ( avec X = $1000 )  A <- $AE

ADRESSAGE RELATIF

La Donnée est située à l'adresse correspondant à l'étiquette donnée.
Lors de l'écriture du programme assembleur, on ne mettra que des noms d'étîquettes à 8 lettres maximum, celui-ci se chargera defaire le calcul du déplacement. [enfait ce déplacement correspond à 1'@ de l'instruction suivante additionné du déplacement 1

Adresse

Données

Syntaxe

$002F

26

BNE TEMPO1

$0030

11

Valeur de déplacement

$0031

 

Pour aller à TEMPO1

 

TEMPOI      LDY #$02A3    @ $0042               18CE 0042

Dans cet exemple si le résultat de la dernière instruction n'est pas nul ( Branch if Not Equal « to Zero » ), le compteur de Programme ( PC ) sautera à l'adresse TENPO1.

Remarque concernant l'adressage relatif :


La valeur du déplacement étant un nombre signé codé sur un octet,. le bit de signe étant le bit de poids fort la valeur du nombre est donc codée sur 7 bits ce qui donne un déplacement compris entre -128 et +127 octets.
L'étiquette est un nom que l'on place dans le programme source afin que l'assembleur ait des points de repères pour calculer les déplacements.

ADRESSAGE SPECIAL

Manipulation de Bit


ESSAIO        BCLR          PORTB,X,%00 1 1 000 1       * Mise à 0 de PB5, PB4 et PBO
Adresse de la Donnée (Direct ou Indexé) + octet position bit (masque)
ESSAII        BSET          $IC,%l 1 10 0100            *Mise à 1 de Bit7, 6, 5, 2 de la dame à 1'@ $001C
Adresse opérande (Direct ou Indexé) + octet position bit (masque)

Branchement sur test de Bit d'une variable ( donnée )


TESTI        BRCLR         ADCTL,X,%1000 0000,TEMPO         * Le programme fait un saut à l'étiquette TEMPO2 si le bit 7 du registre ADCTL (indexé grâce à X ) vaut 0
,4dresse opérande (Direct ou Indexé) + octet position bit (masque) + déplacement

TEST2         BRSET        $3C,%00110000,TEMP02  *Le programme fait un saut à l'étiquetteTEMPO2
si les bits 5 et 4 valent 1. La donnée se trouve à l'adresse $003C.
Adresse opérande (Direct ou Indexé) +octet position bit (masque) + déplacement

Jeu d'instructions

Bientôt disponible

Directive d'assemblage

Elle n'ont aucune influence sur le programme proprement dit mais elles orientent le processus d'assemblage.

Processus d'assemblage : Passage du programme texte en programme binaire compréhensible par le 68HC11  

Directive       ORG $@  Indique le début ( origine ) du programme ou de la localisation de variables
 
Directive       EQU             Equivalence: Associe un nom à une donnée ou une adresse.
EX :
REGBAS  EQU     $1000
PORTC   EQU     $03

Directive       FDB,FDD,FCC         Forin Constant Byte, Double Byte, Character.
Allocation et mise en place d'octets dans une zone précise en mémoire.
Ex:
PUBIL.          FCC « VIVE »        ici PUBL correspond à une chaîne de caractères qui est situé en mémoire.

Directive       RMB             Reserve Memory Byte: Réserver un Octet en Mémoire.

EX:

CAPT           RMB   2       2 octets alloués pour une variable appelé CAPT dont on ne connaît pas la valeur      

Constitution d'un programme assembleur

TITRE
Fonctionnalité du Programme ( rôle )
Registres concernés       Variables d'entrées sorties a Opérations effectuées.
Définition des étiquettes « symboles » utilisées
            **** EQU ****
                     ORG $@              Origine RAM si l'on veut affecter des variables de traitement

            **** RMB $****
            **** FDB $****          Emplacement des variables de travail
            **** Programme ****
                ORG $@              Origine du programme
Initialisation des variables et périphériques.
Instruction assembleur ou programme à proprement parler
Initialisation des différents vecteurs d'interruptions

Augmenter le traffic de votre site jusqu'à 50 000 visites