Upload
roxanne-chabert
View
106
Download
0
Embed Size (px)
Citation preview
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-1
CONTENU DU COURS
A. MISE EN CONTEXTE
B. CONCEPTS LOGICIELS
(PROGRAMMATION EN ASSEMBLEUR ET
EN C)
C. CONCEPTS MATÉRIELS
(COMPOSANTS D’UN MICROCONTRÔLEUR)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-2
Sommaire de la Section B.1B.1 Langage assembleur et programmation
structurée:
1) Processus d’assemblage2) Directives de compilation3) Modes d’adressage4) Jeu d’instructions5) Boucles6) Piles7) Sous-routines: appel et passage de paramètres8) Sous-routines utilitaires du D-BUG129) Programmation structurée
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-3
B.1(5) Boucles
déf.: structure logicielle qui permet de réaliser le contrôle de flots (i.e., itérations) dans un programme
équivalence en langage C:• for(expression){calculs répétitifs}• while(expression){calculs répétitifs}• do{calculs répétitifs} while(expression)
Utilité de la boucle:
remplace une série de calculs répétitifs par un programme (code machine) compactmais nécessite des calculs supplémentaires (e.g., compteur, tests d’arrêt)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-4
B.1(5) Boucles
Étapes pour réaliser une boucle while ou for:1. initialiser les conditions liées à l’expression de la
boucle (compteurs, etc.)
2. évaluer l’expression de la boucle (e.g., comparer la valeur du compteur avec une limite)
3. sortir de la boucle si l’expression est fausse
4. effectuer les calculs répétitifs spécifiés
5. réviser les conditions liées à l’expression de la boucle (e.g., incrémenter le compteur)
6. retourner à l’étape 2
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-5
B.1(5) Boucles
Étapes pour réaliser une boucle do-while:
1. initialiser les conditions liées à l’expression de la boucle (compteurs, etc.)
2. effectuer les calculs répétitifs spécifiés
3. réviser les conditions liées à l’expression de la boucle (e.g., incrémenter le compteur)
4. évaluer l’expression de la boucle (e.g., comparer la valeur du compteur avec une limite)
5. sortir de la boucle si l’expression est fausse
6. retourner à l’étape 2
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-6
B.1(5) Boucles
Exemple: calculer la somme de 10 nombres
étiquette op-code opérant(s) commentaires
LDAB #$00 ; remise à 0 de B
LDX #$800 ; initialise l’index IX
LDAA #$00 ; initialise compteur de boucles
CHECK: CMPA #$0A ; condition: (A) = $OA?
BEQ STOP ; si oui, sortir de la boucle
ADDB 0,X ; effectuer une somme: B+(IX)
INX ; incrémenter l’index IX
INCA ; incrémenter le compteur
BRA CHECK ; prochaine itération de boucle
STOP: STAB SUM ; stocker B dans variable SUM
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-7
Sommaire de la Section B.1B.1 Langage assembleur et programmation
structurée:
1) Processus d’assemblage2) Directives de compilation3) Modes d’adressage4) Jeu d’instructions5) Boucles6) Piles7) Sous-routines: appel et passage de paramètres8) Sous-routines utilitaires du D-BUG129) Programmation structurée
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-8
B.1(6) Piles
déf.: structure FILO en mémoire RAM qui est réservée pour stocker des variables temporaires
Utilité:1. programmeur: permet le stockage temporaire des
registres du CPU lors de l’exécution d’un programme2. CPU: permet de gérer l’exécution de sous-routines et RSI
SP − pointeur de pile à 16-bits:contient l’adresse mémoire du sommet de la pile mécanisme qui contrôle l’accès à la pile
sommet de la pile ≡ adresse mémoire correspondant au dernier élément placé/repéré sur la pile
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-9
B.1(6) Piles
Structure de données First-In, Last-Out (FILO):
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-10
B.1(6) Piles
Opérations pour la gestion d’une pile:
PUSH – des données sont placées au sommet:avant qu’un octet de données soit placé au sommet, le contenu de SP est décrémenté de 1:
SP = SP – 1
PULL – des données sont pris du sommet:après qu’un octet soit repéré du sommet, le contenu de SP est incrémenté de 1:
SP = SP + 1
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-11
B.1(6) Piles
Initialisation d’une pile:le programmeur déclare l’emplacement initial du SPon déclare comme (adresse max + 1) dans la plus grande plage de RAM:
MC9S12C32 en labo – prendre l’adresse $1000 (car 2 koctets de RAM: $0800 - $0FFF)
Exemple:
étiquette op-code opérant(s) commentaires
STACKTOP EQU $1000 ; directive
.... .... ....
LDS #STACKTOP ; initialise le SP au début
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-12
B.1(6) Piles
PUSH − placer le contenu de registres CPU au sommet de la pile
PSHA, PSHB et PSHC: instructions pour placer le contenue de A, B, et CCR dans 1 octet au sommet de la pile1. SP – 1 → SP2. A, B ou CCR → mém(SP)
PSHD, PSHY et PSHX: instructions pour placer le contenue de D, IX, et IY dans 2 octets au sommet de la pile1. SP – 2 → SP2. (A:B), (IXH:IXL) ou (IYH:IYL) → (mém(SP): mém(SP+1))
les instructions PSHx ne modifient pas le CCR
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-13
B.1(6) Piles
PULL − repérer le contenu au sommet de la pile dans des registres CPU
PULA, PULB et PULC: instructions pour prendre 1 octet du sommet de la pile, et le charger dans A, B et CCR1. mém(SP) → A, B ou CCR 2. SP + 1 → SP
PULD, PULY et PULX: instructions pour prendre 2 octets du sommet de la pile, et les charger dans D, IX et IY1. (mém(SP): mém(SP+1)) → (A:B), (IXH:IXL) ou (IYH:IYL)
SP + 2 → SP
Attention, l’instruction PULC modifie le CCR
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-14
B.1(6) Piles
Exemple: décrire la fonction de ce code?
étiquette op-code opérant(s) commentaires
LDS #$1000 ; initialise SP
LDAA #$12 ; valeur 8 bits → A
LDAB #$A1 ; valeur 8 bits → B
PSHA ; A → octet de pile
PSHB ; B → octet de pile
PULA ; octet de pile → A
PULB ; octet de pile → B
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-15
Sommaire de la Section B.1B.1 Langage assembleur et programmation
structurée:
1) Processus d’assemblage2) Directives de compilation3) Modes d’adressage4) Jeu d’instructions5) Boucles6) Piles7) Sous-routines: appel et passage de paramètres8) Sous-routines utilitaires du D-BUG129) Programmation structurée
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-16
B.1(7) Sous-routines
déf.: un module indépendant et séparé du programme principal, qui est conçu pour effectuer une tâche spécifique
équivalent à une fonction en langage C
Utilité de la sous-routine:réutilisation: on conçoit un programme générique une fois, et on peut l’appeler dans un programme quelconque
lisibilité: permet de remplacer une tâche répétitive par un appel de sous-routine
ressources: donne un code plus compacte, mais nécessite des calculs supplémentaires
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-17
B.1(7) Sous-routines
Caractéristiques d’une bonne sous-routine:
conservation de l’état du CPU: elle devrait conserver (restaurer) les registres pertinents du CPU lors de l’appel (le retour)
portabilité et indépendance des données et du code:
elle devrait être générique et indépendante du programme principal (et d’autres programmes)
elle devrait éviter les adresses mémoire spécifiques, et les modes DIR et EXT (utilisation de variables locales)
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-18
B.1(7) Sous-routines
Étapes d’un appel:
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-19
B.1(7) Sous-routines
Instructions pour appeler une sous-routine:
BSR: stocker le PC et brancher à une sous-routine brancher vers l’adresse indiquée par une valeur de décalagedécalage entre -128 et 127 adresses (nombre signé de 8 bits) utilise normalement une étiquette, plutôt qu’une valeur numérique
JSR: stocker le PC et aller à une sous-routinepermet d’aller à une adresse quelconque de la mémoire avec tous les modes d’adressageplus lent, consomme plus de mémoire
Instruction pour retourner d’une sous-routine
RTS: retourner d’une sous-routine et restaurer le PCrécupérer l’adresse de retour de la sous-routine de la pile
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-20
B.1(7) Sous-routines
Sous-routine A
Programme principal, passe des paramètres
Programme principal peut
recevoir un paramètre
Sous routine A reçoit des paramètres ... Action 1 Action 2 Action 3 .... peut retourner des paramètres RTS
N.B. les bits d’état du CCR sont modifiés.
Passage de paramètres:
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-21
B.1(7) Sous-routines
Techniques pour passage de paramètres:Technique 1 – passage par valeur: utilise les accumulateurs (A et B) et les indexes (IX et IY) pour transmettre la valeurs des paramètres
appel – la sous-routine accède à une copie des valeurs originales dans A, B, IX ou IY retour – la sous-routine peut retourner des valeurs au programme principal dans les mêmes registres
Avantages et inconvénients:commun et simplemais, petit nombre et dimensions de valeurs qu’on peut passer (6 octets max.)besoin de coordination entre programme principal et sous-routine pour éviter l’écrasement aux registres
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-22
B.1(7) Sous-routines
Exemple: passage par valeur
étiquette op-code opérant(s) commentaires
ROMStart: EQU $4000 ; début ROMRAMStart: EQU $0800 ; début RAM
ORG RAMStartNUM_ONE: DC.B $23 ; début constantesNUM_TWO: DC.B $3F
ORG ROMStart ; début programme
Début: LDS #$1000 ; initialise le SP
LDAA NUM_ONELDAB NUM_TWOBSR SWAP ; brancher vers sous-routineSTAA NUM_ONESTAB NUM_TWO
FIN: BRA FIN
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-23
B.1(7) Sous-routines
sous-routine SWAP:
étiquette op-code opérant(s) commentaires
SWAP: PSHA ; stocke A → octet de pile
PSHB ; stocke B → octet de pile
PULA ; restaure octet de pile → A
PULB ; restaure octet de pile → B
RTS ; retour de sous-routine
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-24
B.1(7) Sous-routines
Techniques pour passage de paramètres:Technique 2 – passage par référence: fournit les adresses mémoire qui contiennent les valeurs des paramètres
appel – la sous-routine accède à ces valeurs à partir de leurs adresses mémoireretour – la sous-routine peut retourner des valeurs dans des adresses référencées pendant l’exécution
Avantages et inconvénients:peut passer un grand nombre de valeurs (bon pour des listes)pratique si on veut modifier les valeurs originales pendant l’exécutionpeut corrompre la mémoire
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-25
B.1(7) Sous-routines
Exemple: passage par référence
étiquette op-code opérant(s) commentaires
ORG $800
FIRST: DS.B 10 ; source
SECOND: DS.B 10 ; destination
ORG $4000
; début constantes
NUM_DATA: DC.B $0A ; nombre de bytes à copier
; début programme
Début: LDS #$1000 ; initialise le SP
LDAA NUM_DATA ; $0A → A
LDX #FIRST ; source: $800 → IX
LDY #SECOND ; destination: $80A→ IY
JSR COPY ; saute vers la sous-routine
FIN: BRA FIN
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-26
B.1(7) Sous-routines
sous-routine COPY:
étiquette op-code opérant(s) commentaires
;PASSAGE PAR VALEUR
COPY: CMPA #$00 ; vérifier la condition d’arrêt
BEQ DONE ; si A = $00, DONE
;PASSAGE PAR RÉFÉRENCE
LDAB 1,X+ ; charger de source, post incré.
STAB 1,Y+ ; stocker en destin., post incré.
DECA
BRA COPY
DONE: RTS ; retour de sous-routine
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-27
Sommaire de la Section B.1B.1 Langage assembleur et programmation
structurée:
1) Processus d’assemblage2) Directives de compilation3) Modes d’adressage4) Jeu d’instructions5) Boucles6) Piles7) Sous-routines: appel et passage de paramètres8) Sous-routines utilitaires du D-BUG129) Programmation structurée
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquée B.1b-28
B.1(8) Sous-routines D-BUG12
D-BUG12: programme analyse/déverminage du 68HC12
réside dans la mémoire ROM en permanenceconsiste de sous-routines.
Sous-routines:manipuler et visualiser la mémoire et les registres du CPU exécuter et déverminer le programmeafficher un message ou le contenu mémoire à l’écran écrire des données en mémoireinitialiser l’adresse d’une RSI
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-29
B.1(8) Sous-routines D-BUG12
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-30
B.1(8) Sous-routines D-BUG12
Sous-routines utilitaires communes:getchar: retourne un caractère tapé au clavier dans le registre B. putchar: transmet le caractère contenu dans le registre B au terminal.
out2hex: traduit l’octet hexadécimal de l’argument en code ASCII et le transmet au terminal. out4hex: traduit deux octets hexadécimaux en code ASCII et les transmet au terminal.
printf: transmet un phrase débutant à l’adresse de l’argument jusqu’à la rencontre du caractère terminateur hexadécimal $00.
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-31
B.1(8) Sous-routines D-BUG12
Passage de paramètres aux routines utilitaires de D-BUG12 : sous-routine(1, 2, 3, ..., n)
on traite les paramètres comme des valeurs à 16 ou 8 bitsle 68HC12 utilise le registre D pour le premier paramètre et la pile pour les autres
Étapes principales:1. les paramètres doivent être placés dans D et sur la pile.2. l’adresse de vecteur de la sous-routine doit être chargé
dans IX ou IY.3. invoquer la sous-routine avec l’instruction JSR4. ajuster le SP avec les instructions PULX ou LEAS
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-32
B.1(8) Sous-routines D-BUG12
Exemple: Utilisez l’utilitaire sous-routine out2hex() pour afficher 45 sur l’écran d’ordinateur
doit stocker $0045 (conversion de 8 à 16 bits) dans (D) avant d’exécuter la sous-routine
étiquette op-code opérant(s) commentaires
LDD #$0045 ;valeur à afficher
LDX $FE16 ; adresse de sous-routine
JSR 0,X ; appel la sous-routine
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-33
Sommaire de la Section B.1B.1 Langage assembleur et programmation
structurée:
1) Processus d’assemblage2) Directives de compilation3) Modes d’adressage4) Jeu d’instructions5) Boucles6) Piles7) Sous-routines: appel et passage de paramètres8) Sous-routines utilitaires du D-BUG129) Programmation structurée
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-34
B.1(9) Programmation structurée
Objectifs d’un programmeur:
contraintes de performance pour obtenir un code efficace:
écrire le programme le plus compact − minimiser la l’espace mémoire consomméécrire le programme le plus rapide − minimiser le nombre le cycle machines ou temps d’exécution
style de programmation:écrire un programme qui est facile à comprendre, avec commentaires, etc.écrire un programme qui est flexible et facile à modifier.
rencontrer l’échéancier du projet
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-35
B.1(9) Programmation structurée
Conception structurée:objectif: outils pour transformer les besoins d’un système en plan pour réaliser le systèmebien comprendre les besoins...
Conseils pour la conception de programmes:1. concevoir selon la technique ‘diviser pour régner’
diviser un programme en petites parties combiner les parties pour résoudre le problème original
2. réfléchir à l’organisation des données en mémoire outil: carte de mémoire
3. réfléchir à la façon de traiter les données outil: diagramme de flots de données
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-36
B.1(9) Programmation structurée
Technique ‘diviser pour régner’:
diviser une tâche complexe en petites sous-tâches, résoudre les sous-tâches, et combiner pour résoudre la tâche originale
conception de haut-à-bas, mise en oeuvre bas-à-haut
avantages de cette technique:permet de se concentrer sur chaque sous-tâche séparément, plutôt que d’aborder une tâche complexe d’un coup plus facile de tester et d’évaluer chaque sous-tâche de façon individuelle
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-37
B.1(9) Programmation structurée
Exemple − écrire un bon rapport technique:1. préparer un sommaire pour donner une bonne vue
d’ensemble (dès le début)2. écrire le rapport un paragraphe/section à la fois
Conception structurée: on peut diviser un programme en parties (i.e., sous-routines) ‘simples’ et les combiner, pour ensuite concevoir un programme complexepseudo-code: décrit la fonction de haut-niveau de chaque partie simplediagramme de flots de données: pour définir la relation fonctionnelle entre les parties simples
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-38
B.1(9) Programmation structurée
Diagramme de flots de données:
outil graphique pour: visualiser le traitement des données, la relation entre les parties fonctionnelles, etc. documenter le flux du programme
construit en connectant des symboles primaires avec des arcs dirigés (flèches)
symboles primaires: représentent les actions prises sur les données
arcs dirigés: indique la progression dans le programme
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-39
B.1(9) Programmation structurée
Symboles primaires d’un diagramme de flots de données:
Flux
Début Fin
Séquence d’actions Décision
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-40
B.1(9) Programmation structurée
Structures fondamentales dans un programme:1. séquence:
effectue une tâche après l’autre en séquencegroupe d’instructions qui s’exécutent un après l’autre.
2. ‘if-then-else’: effectue un décision entre deux ou plusieurs optionspermet de tester une condition, pour décider du groupe d’instructions à effectuer
3. ‘do-while’: répète son traitement aussi longtemps qu’une condition ne soit satisfaite
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-41
B.1(9) Programmation structurée
Exemple: structure de flot de données ‘if-then’
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-42
B.1(9) Programmation structurée
Exemple: structure de flot de données ‘if-then-else’
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-43
B.1(9) Programmation structurée
Exemple: structure de flot de données ‘do-while’
Université du Québec
École de technologie supérieure GPA770: Microélectronique appliquéeÉric Granger
B.1b-44
B.1(9) Programmation structurée
Exemple: structure de flot de données ‘while’