Université du Québec École de technologie supérieure GPA770: Microélectronique appliquée Éric Granger B.1b-1 CONTENU DU COURS
Université du Québec École de technologie supérieure GPA770: Microélectronique appliquée Éric Granger B.1b-2 Sommaire de la Section B.1 B.1 Langage assembleur et programmation structurée: 1)Processus d’assemblage 2)Directives de compilation 3)Modes d’adressage 4)Jeu d’instructions 5)Boucles 6)Piles 7)Sous-routines: appel et passage de paramètres 8)Sous-routines utilitaires du D-BUG12 9)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) compact mais 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 étiquetteop-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.1 B.1 Langage assembleur et programmation structurée: 1)Processus d’assemblage 2)Directives de compilation 3)Modes d’adressage 4)Jeu d’instructions 5)Boucles 6)Piles 7)Sous-routines: appel et passage de paramètres 8)Sous-routines utilitaires du D-BUG12 9)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 programme 2.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 SP on 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: $ $0FFF) Exemple: étiquetteop-codeopé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 pile 1.SP – 1 → SP 2.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 pile 1.SP – 2 → SP 2.(A:B), (IX H :IX L ) ou (IY H :IY L ) → (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 CCR 1.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 IY 1.(mém(SP): mém(SP+1)) → (A:B), (IX H :IX L ) ou (IY H :IY L ) 2.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? étiquetteop-codeopé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.1 B.1 Langage assembleur et programmation structurée: 1)Processus d’assemblage 2)Directives de compilation 3)Modes d’adressage 4)Jeu d’instructions 5)Boucles 6)Piles 7)Sous-routines: appel et passage de paramètres 8)Sous-routines utilitaires du D-BUG12 9)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écalage dé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-routine permet d’aller à une adresse quelconque de la mémoire avec tous les modes d’adressage plus lent, consomme plus de mémoire Instruction pour retourner d’une sous-routine RTS : retourner d’une sous-routine et restaurer le PC ré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 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 simple mais, 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 ROM RAMStart:EQU $0800 ; début RAM ORG RAMStart NUM_ONE:DC.B$23 ; début constantes NUM_TWO: DC.B $3F ORG ROMStart ; début programme Début:LDS #$1000 ; initialise le SP LDAA NUM_ONE LDAB NUM_TWO BSR SWAP ; brancher vers sous-routine STAA NUM_ONE STAB NUM_TWO FIN:BRAFIN
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: étiquetteop-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émoire retour – 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écution peut 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 étiquetteop-codeopé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:BRAFIN
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: étiquetteop-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.1 B.1 Langage assembleur et programmation structurée: 1)Processus d’assemblage 2)Directives de compilation 3)Modes d’adressage 4)Jeu d’instructions 5)Boucles 6)Piles 7)Sous-routines: appel et passage de paramètres 8)Sous-routines utilitaires du D-BUG12 9)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 permanence consiste de sous-routines. Sous-routines: manipuler et visualiser la mémoire et les registres du CPU exécuter et déverminer le programme afficher un message ou le contenu mémoire à l’écran écrire des données en mémoire initialiser 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 bits le 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 JSR 4.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 étiquetteop-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.1 B.1 Langage assembleur et programmation structurée: 1)Processus d’assemblage 2)Directives de compilation 3)Modes d’adressage 4)Jeu d’instructions 5)Boucles 6)Piles 7)Sous-routines: appel et passage de paramètres 8)Sous-routines utilitaires du D-BUG12 9)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ème bien 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 complexe pseudo-code: décrit la fonction de haut-niveau de chaque partie simple diagramme 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équence groupe d’instructions qui s’exécutent un après l’autre. 2.‘if-then-else’: effectue un décision entre deux ou plusieurs options permet 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’