1 / 44

CONTENU DU COURS

CONTENU DU COURS. Sommaire de la Section B.1. B.1 Langage assembleur et programmation structurée: Processus d’assemblage Directives de compilation Modes d’adressage Jeu d’instructions Boucles Piles Sous-routines: appel et passage de paramètres Sous-routines utilitaires du D-BUG12

sevita
Download Presentation

CONTENU DU COURS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CONTENU DU COURS GPA770: Microélectronique appliquée Éric Granger

  2. Sommaire de la Section B.1 B.1Langage assembleur et programmation structurée: • Processus d’assemblage • Directives de compilation • Modes d’adressage • Jeu d’instructions • Boucles • Piles • Sous-routines: appel et passage de paramètres • Sous-routines utilitaires du D-BUG12 • Programmation structurée GPA770: Microélectronique appliquée Éric Granger

  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) GPA770: Microélectronique appliquée Éric Granger

  4. B.1(5) Boucles • Étapes pour réaliser une boucle while ou for: • initialiser les conditions liées à l’expression de la boucle (compteurs, etc.) • évaluer l’expression de la boucle (e.g., comparer la valeur du compteur avec une limite) • sortir de la boucle si l’expression est fausse • effectuer les calculs répétitifs spécifiés • réviser les conditions liées à l’expression de la boucle (e.g., incrémenter le compteur) • retourner à l’étape 2 GPA770: Microélectronique appliquée Éric Granger

  5. B.1(5) Boucles • Étapes pour réaliser une boucle do-while: • initialiser les conditions liées à l’expression de la boucle (compteurs, etc.) • effectuer les calculs répétitifs spécifiés • réviser les conditions liées à l’expression de la boucle (e.g., incrémenter le compteur) • évaluer l’expression de la boucle (e.g., comparer la valeur du compteur avec une limite) • sortir de la boucle si l’expression est fausse • retourner à l’étape 2 GPA770: Microélectronique appliquée Éric Granger

  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 GPA770: Microélectronique appliquée Éric Granger

  7. Sommaire de la Section B.1 B.1Langage assembleur et programmation structurée: • Processus d’assemblage • Directives de compilation • Modes d’adressage • Jeu d’instructions • Boucles • Piles • Sous-routines: appel et passage de paramètres • Sous-routines utilitaires du D-BUG12 • Programmation structurée GPA770: Microélectronique appliquée Éric Granger

  8. B.1(6) Piles • déf.: structure FILO en mémoire RAM qui est réservée pour stocker des variables temporaires • Utilité: • programmeur: permet le stockage temporaire des registres du CPU lors de l’exécution d’un programme • 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 GPA770: Microélectronique appliquée Éric Granger

  9. B.1(6) Piles • Structure de données First-In, Last-Out (FILO): GPA770: Microélectronique appliquée Éric Granger

  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 GPA770: Microélectronique appliquée Éric Granger

  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: $0800 - $0FFF) • Exemple: étiquette op-code opérant(s) commentaires STACKTOP EQU $1000; directive .... .... .... LDS #STACKTOP; initialise le SP au début GPA770: Microélectronique appliquée Éric Granger

  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 • SP – 1 → SP • 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 • SP – 2 → SP • (A:B), (IXH:IXL) ou (IYH:IYL) → (mém(SP): mém(SP+1)) • les instructions PSHxne modifient pas le CCR GPA770: Microélectronique appliquée Éric Granger

  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 • mém(SP) → A, B ou CCR • 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 • (mém(SP): mém(SP+1)) → (A:B), (IXH:IXL) ou (IYH:IYL) • SP + 2 → SP • Attention, l’instruction PULC modifie le CCR GPA770: Microélectronique appliquée Éric Granger

  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 GPA770: Microélectronique appliquée Éric Granger

  15. Sommaire de la Section B.1 B.1Langage assembleur et programmation structurée: • Processus d’assemblage • Directives de compilation • Modes d’adressage • Jeu d’instructions • Boucles • Piles • Sous-routines: appel et passage de paramètres • Sous-routines utilitaires du D-BUG12 • Programmation structurée GPA770: Microélectronique appliquée Éric Granger

  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 fonctionen 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 GPA770: Microélectronique appliquée Éric Granger

  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) GPA770: Microélectronique appliquée Éric Granger

  18. B.1(7) Sous-routines • Étapes d’un appel: GPA770: Microélectronique appliquée Éric Granger

  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 GPA770: Microélectronique appliquée Éric Granger

  20. B.1(7) Sous-routines Passage de paramètres: GPA770: Microélectronique appliquée Éric Granger

  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 GPA770: Microélectronique appliquée Éric Granger

  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: BRA FIN GPA770: Microélectronique appliquée Éric Granger

  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 GPA770: Microélectronique appliquée Éric Granger

  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 GPA770: Microélectronique appliquée Éric Granger

  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 GPA770: Microélectronique appliquée Éric Granger

  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 GPA770: Microélectronique appliquée Éric Granger

  27. Sommaire de la Section B.1 B.1Langage assembleur et programmation structurée: • Processus d’assemblage • Directives de compilation • Modes d’adressage • Jeu d’instructions • Boucles • Piles • Sous-routines: appel et passage de paramètres • Sous-routines utilitaires du D-BUG12 • Programmation structurée GPA770: Microélectronique appliquée Éric Granger

  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 GPA770: Microélectronique appliquée

  29. B.1(8) Sous-routines D-BUG12 GPA770: Microélectronique appliquée Éric Granger

  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. GPA770: Microélectronique appliquée Éric Granger

  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: • les paramètres doivent être placés dans D et sur la pile. • l’adresse de vecteur de la sous-routine doit être chargé dans IX ou IY. • invoquer la sous-routine avec l’instruction JSR • ajuster le SP avec les instructions PULX ou LEAS GPA770: Microélectronique appliquée Éric Granger

  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 GPA770: Microélectronique appliquée Éric Granger

  33. Sommaire de la Section B.1 B.1Langage assembleur et programmation structurée: • Processus d’assemblage • Directives de compilation • Modes d’adressage • Jeu d’instructions • Boucles • Piles • Sous-routines: appel et passage de paramètres • Sous-routines utilitaires du D-BUG12 • Programmation structurée GPA770: Microélectronique appliquée Éric Granger

  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 GPA770: Microélectronique appliquée Éric Granger

  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: • concevoir selon la technique ‘diviser pour régner’ • diviser un programme en petites parties • combiner les parties pour résoudre le problème original • réfléchir à l’organisation des données en mémoire • outil: carte de mémoire • réfléchir à la façon de traiter les données • outil: diagramme de flots de données GPA770: Microélectronique appliquée Éric Granger

  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 GPA770: Microélectronique appliquée Éric Granger

  37. B.1(9) Programmation structurée • Exemple − écrire un bon rapport technique: • préparer un sommaire pour donner une bonne vue d’ensemble (dès le début) • é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 GPA770: Microélectronique appliquée Éric Granger

  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 GPA770: Microélectronique appliquée Éric Granger

  39. B.1(9) Programmation structurée • Symboles primaires d’un diagramme de flots de données: Flux Fin Début Séquence d’actions Décision GPA770: Microélectronique appliquée Éric Granger

  40. B.1(9) Programmation structurée • Structures fondamentales dans un programme: • 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. • ‘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 • ‘do-while’: • répète son traitement aussi longtemps qu’une condition ne soit satisfaite GPA770: Microélectronique appliquée Éric Granger

  41. B.1(9) Programmation structurée • Exemple: structure de flot de données ‘if-then’ GPA770: Microélectronique appliquée Éric Granger

  42. B.1(9) Programmation structurée • Exemple: structure de flot de données ‘if-then-else’ GPA770: Microélectronique appliquée Éric Granger

  43. B.1(9) Programmation structurée • Exemple: structure de flot de données ‘do-while’ GPA770: Microélectronique appliquée Éric Granger

  44. B.1(9) Programmation structurée • Exemple: structure de flot de données ‘while’ GPA770: Microélectronique appliquée Éric Granger

More Related