COURS : STRUCTURE D’UN PROGRAMME EN ASSEMBLEUR
LYCEE LA FAYETTE 1
STRUCTURE D’UN PROGRAMME ASSEMBLEUR
Un programme assembleur est organisé en plusieurs parties distinctes :
- Les définitions utiles à la génération du code assembleur par le logiciel (telles que
les références du PIC utilisé)
- La définition des MACRO s’il y en a ;
- La définition des constantes et des variables ;
- L’implémentation du vecteur RESET ;
- L’écriture des sous-routines ;
- L’écriture du programme principal.
Remarques importantes :
- La notation des nombres hexadécimaux et binaires peut varier d’un logiciel à
l’autre (exemple, 02h ou 0x02 pour l’hexadécimal ; B’000000001’ ou
000000001B pour le binaire)
- Les définitions relatives au PIC, ainsi que la déclaration des macros peuvent
également varier d’un logiciel à l’autre.
; ----------------------------------------------
; EXEMPLE DE PROGRAMME
;-----------------------------------------------
LIST p=16C57C
#include <p16C5X.inc>
MACRO1 MACRO
BCF STATUS,RP0
BCF STATUS,RP1
ENDM
#DEFINE CONSTANTE1 3
VARIABLE1 EQU 0x20
ORG 0x7FF
GOTO PROGRAMME
ORG 0x000
SROUTINE1 MOVLW 0x0E
TRIS PORTA
RETLW 0
ORG 0x200
PROGRAMME CALL SROUTINE1
GOTO PROGRAMME
END
Définition du PIC
Définition de(s) MACRO(S)
Définition de(s) VARIABLE(S)
et de(s) CONSTANTE(S)
Implémentation du vecteur
RESET
Sous-routine(s)
Programme principal
FIN du fichier source
ETIQUETTES
INSTRUCTIONS
COURS : STRUCTURE D’UN PROGRAMME EN ASSEMBLEUR
LYCEE LA FAYETTE 2
I. DEFINITIONS RELATIVES AU PIC
Les deux premières lignes qui définissent le PIC à utiliser sont propres au logiciel MPLAB
utilisé. On indique qu’il faut créer le programme pour un PIC 16C57C de la famille 16C5X.
II. DEFINITION DES MACROS
Une macro permet de rendre plus simple l’écriture d’un programme. En effet, le programme,
dès lors qu’il trouvera le nom d’une macro, la remplacera par la suite des instructions qu’elle
contient.
Le programmateur, s’il utilise souvent la même suite d’instructions, à intérêt à utiliser les
macros afin d’éviter de recopier plusieurs fois la même chose.
La définition d’une MACRO se fait :
- En donnant le nom de la MACRO ;
- En écrivant les instructions que doit exécuter la MACRO ;
- En indiquant au logiciel que la définition de la MACRO est terminée (ENDM)
Les deux programmes suivants sont strictement identiques si MACRO1 a été définie comme
précédemment :
DEBUT BCF STATUS,RP0
BCF STATUS,RP1
MOVLW 0x03;
BCF STATUS,RP0
BCF STATUS,RP1
MOVLW 0x04;
BCF STATUS,RP0
BCF STATUS,RP1
GOTO DEBUT
END
DEBUT MACRO1
MOVLW 0x03;
MACRO1
MOVLW 0x04;
MACRO1
GOTO DEBUT
END
LIST p=16C57C
#include <p16C5X.inc>
COURS : STRUCTURE D’UN PROGRAMME EN ASSEMBLEUR
LYCEE LA FAYETTE 3
III. DEFINITION DES VARIABLES ET DES CONSTANTES
Une variable est une donnée dont la valeur est enregistrée en mémoire RAM à une adresse
précise : l’exemple ci-dessous déclare une variable, nommée VARIABLE1, et dont l’adresse
en mémoire RAM est 0x20.
On peut donc écrire et lire une variable ; les données seront lues ou écrites en RAM.
Une constante est une valeur fixe, elle n’est pas enregistrée en mémoire RAM. Le logiciel
remplace juste le nom de la constante par sa valeur. Par exemple, la ligne ci-dessous déclare
une constante, nommée CONSTANTE1, dont la valeur est 3 :
Les deux programmes suivants sont strictement identiques si CONSTANTE1 a été définie
comme précédemment :
IV. IMPLEMENTATION DU VECTEUR RESET
Lors d’un RESET, le PIC commence à exécuter le programme à une adresse particulière
nommée « vecteur RESET ».
Par exemple, suite à un reset, le PIC 16C57C commence l’exécution du programme à
l’adresse 0x7FF (cette adresse peut changer en fonction de la référence du PIC utilisé).
L’adresse EPROM (c'est-à-dire l’adresse de la mémoire de données) à laquelle se trouvent
les instructions est définie par la fonction : ORG (adresse)
Le programme suivant permet donc, lors d’un RESET, de demander au PIC d’aller lire les
instructions sur programme situées à partir de l’étiquette PROGRAMME via l’instruction
GOTO.
DEBUT MOVLW 3
GOTO DEBUT
END
DEBUT MOVLW CONSTANTE1
GOTO DEBUT
END
VARIABLE1 EQU 0x20
#DEFINE CONSTANTE1 3
ORG 0x7FF
GOTO PROGRAMME
ORG 0x200
PROGRAMME GOTO PROGRAMME
Le PIC exécute cette instruction
lors du RESET
Le début du programme se situe
en 0x200
COURS : STRUCTURE D’UN PROGRAMME EN ASSEMBLEUR
LYCEE LA FAYETTE 4
V. LES SOUS-ROUTINES
Une sous-routine est un morceau de programme que le PIC va exécuter pendant le
déroulement du programme principal. Lors de l’appel d’une sous-routine :
- Le PIC va où se trouve la sous-routine ; il laisse donc en suspend l’exécution du
programme principal pendant un temps ;
- Il exécute le programme contenu dans la sous-routine ;
- A la fin de la sous-routine, il retourne à l’endroit du programme principal, juste
après l’appel de la sous-routine.
Une sous-routine est toujours écrite avant le programme principal en mémoire EPROM. La
fin du programme d’une sous-routine se termine par RETLW 0.
Exemple : La sous-routine nommée SROUTINE1 se trouve à l’adresse 0x000 :
Exemple d’utilisation d’une sous-routine : Dans un programme principal, pour appeler une
sous-routine on utilise l’instruction :
CALL NOM_DE_LA_SOUS_ROUTINE
ORG 0x000
SROUTINE1 MOVLW 0x0E
TRIS PORTA
RETLW 0
ORG 0x7FF
GOTO PROGRAMME
ORG 0x000
SROUTINE1 MOVLW 0x0E
TRIS PORTA
RETLW 0
ORG 0x200
PROGRAMME MOLVW 0x03
TRIS PORTB
MOLW 0x04
TRIS PORTC
CALL SROUTINE1
….
….
….
….
END
: RESET
: Exécution du
programme
: SAUT vers
le programme
: Appel de
SROUTINE1
: Exécution de la sous-
routine
: Retour vers
le programme
: Exécution de la suite du
programme
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !