550 likes | 783 Views
CONTENU DU COURS. Partie B − Concepts logiciels. B.1 Langage assembleur et programmation structurée : modes d’adressage et jeu d’instructions boucles, pile et sous-routines programmation structurée B.2 Microcontrôleurs à logique floue : systèmes de contrôle à logique floue
E N D
CONTENU DU COURS GPA770: Microélectronique appliquée Éric Granger
Partie B − Concepts logiciels B.1 Langage assembleur et programmation structurée: • modes d’adressage et jeu d’instructions • boucles, pile et sous-routines • programmation structurée B.2 Microcontrôleurs à logique floue: • systèmes de contrôle à logique floue • Instructions spécialisées du 68HC12 GPA770: Microélectronique appliquée Éric Granger
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
B.1(1) Processus d’assemblage code source en langage assembleur code assemblé en langage machine • Le processus génère: • un fichier en langage machine (*.s19):selon le format de Motorola • un fichier liste (*.lst):pour le déverminage: • affiche le code machine pour chaque adresse mémoire • indique l’adresse d’exécution et le mode d’opération de chaque instruction GPA770: Microélectronique appliquée Éric Granger
B.1(1) Processus d’assemblage GPA770: Microélectronique appliquée Éric Granger
Fichier .S19 de Motorola GPA770: Microélectronique appliquée
Fichier Lab1a.S19 simulation S0360000463A5C4750413737305C6C61626F315C70726F6A6574315C62696E5C536F665465635F696E444152542D48435331322E616273C3 S123400010EFCF1000C6015B34C6035B35C6FF5B037900C8C6345BC97900CAC60C5BCBCC86 S1234020406115FBBDE015FBBDD8C10D270615FBBDD220F2CC409B15FBBDCBF6406115FBF7 S1234040BDD4CC40B015FBBDBDCCA25F15FBBDC8CE00000826FDF60800527B08005B0120DB S1234060F24269656E76656E7565206175206C61626F7261746F697265206465206D6963BD S1234080726FE96C656374726F6E697175650D6170706C697175E9650A0D000A0D41206C55 S12340A0612070726F636861696E6521210A0D000A0D003696CC842027FAD6CF323D369615 S12340C0CC844027FA7900CE5BCF323D3754545454C10A2404CB302002CB3715FBBD25338D S12340E0C40FC10A2404CB302002CB3715FBBD143D3B180E7B0801F6080115FBBD183A7B3B S11D41000801F6080115FBBD0D3D34B7C5E600270715FBBCEF0820F5303D79 S109FE0240B340BE410ABA S107FE1640CC40F1A7 S105FFFE4000BD S9030000FC Bienvenue au laboratoire de microélectronique $0D appliquée $0A $0D $00 $0A $0D A la prochaine!! $0A $0D $00 GPA770: Microélectronique appliquée
B.1(1) Processus d’assemblage • Éléments d’un programme en assembleur: • Directives de compilation • instructions spéciales qui contrôlent l’opération de l’assembleur, et permettent d’organiser un programme • Instructions en langage assembleur • séquences d’instructions que peut reconnaître et exécuter le CPU • Commentaires • explique la fonction d’une ou de plusieurs instructions GPA770: Microélectronique appliquée Éric Granger
B.1(1) Processus d’assemblage • Format d’instructions en assembleur: étiquette op-code opérant(s) commentaires début: LDAA #$FC ;charger l’acc. A • étiquette: identifie une ligne de code du programme • permet de localiser une {instructions} à exécuter • op-code/directive/macro: élément fonctionnel de l’instruction/dirige le compilateur/enregistrement de texte • opérant(s): information permettant d’accéder aux données pour exécuter une instruction, via le mode d’adressage • Commentaires: “;” indique le début d’un commentaire • utile aussi pour documentation au début d’une ligne GPA770: Microélectronique appliquée Éric Granger
B.1(1) Processus d’assemblage • Structure globale d’un programme: ; SECTION DÉFINTIONS NUM1: EQU $24 NUM2: EQU $05 ; SECTION DE DONNÉES ORG $0800 RESULT: RMB $02 ORG $4000 ; SOUS-ROUTINES ; SECTION DU PROGRAMME PRINCIPAL DEBUT: LDAA #NUM1 LDAB #NUM2 MUL STD RESULT END GPA770: Microélectronique appliquée Éric Granger
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
B.1(2) Directives de compilation • déf.: Instructions spéciales qui contrôlent l’opération de l’assembleur, et permettent d’organiser un programme en mémoire • Rôle des directives de compilation: • spécifier le début et la fin d’un programme • définir des symboles et des données • réserver et initialiser des blocks en mémoire • spécifier le format de sortie • fixer les conditions pour l’assemblage GPA770: Microélectronique appliquée Éric Granger
B.1(2) Directives de compilation • Directives de base: • ORG: fixe une adresse de départ pour le compilateur • INCLUDE: inclure un fichier texte • LIST: écrit le résultat de la compilation dans *.lst • EQU: associe un symbole avec une valeur numérique • END: commande la fin de la compilation (et non la fin du programme) étiquette op-code opérant(s) commentaire ORG $4000 LDAA #$10 ...... END GPA770: Microélectronique appliquée Éric Granger
B.1(2) Directives de compilation • Directives pour réserver et initialiser des blocks en mémoire RAM: • RMB: réserve un bloc de mémoire d’un nombre spécifié d’octets pour le programme • FCB (FDB): réserve un bloc de mémoire de 1 octet (2 octets) par nombre et initialise les valeurs • FCC: permet d’initialiser des caractères de texte étiquette op-code opérant(s) commentaire TEMP1: RMB $10 ; réserve $10 octets TEMP2: FDB $1100, $1233 ; réserve et initialise 4 octets TEMP3: FCC `JOE` ; stocke JOE en ASCII GPA770: Microélectronique appliquée Éric Granger
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
B.1(3) Modes d’adressage • déf.: méthode utilisée par le CPU afin d’accéder aux données pour exécuter des instructions • Indicateurs du mode: op-code + opérants • Types de modes d’adressage: • mode inhérent (INH) • mode immédiat (IMM) • mode direct (DIR) • mode étendu (EXT) • mode indexé (IDX) • mode relative (REL) GPA770: Microélectronique appliquée Éric Granger
B.1(3) Modes d’adressage a. Mode inhérent (INH) • Les données requises pour exécuter l’instruction est contenue dans son op-code • les opérants sont dans les registres du CPU • Exemples: étiquette op-code opérant(s) commentaires INCA ; A + 1 → A ABA ; A + B → A INX ; IX + 1 → IX GPA770: Microélectronique appliquée Éric Granger
B.1(3) Modes d’adressage b. Mode immédiat (IMM) • Les données requises pour exécuter l’instruction sont stockées immédiatement après le op-code en mémoire • les opérants sont inclus dans la séquence d’instructions • symbole ‘#’: indique à l’assembleur que l’opérant doit être traitée comme une donnée (non comme une adresse). • Exemples: étiquette op-code opérant(s) commentaires LDAA #$5F ; $5F → A ADDA #$12 ; A+$12 → A LDD #$1234 ; $1234 → D GPA770: Microélectronique appliquée Éric Granger
B.1(3) Modes d’adressage c. Mode direct (DIR) • Les données requises sont stockées à l’adresse mémoire indiqué par l’octet bas (suppose l’octet haut = $00) • l’étendue des adresses mémoire limitée: $0000→ $00FF • consomme moins de mémoire et s’exécute plus rapidement • Exemples: étiquette op-code opérant(s) commentaires LDAA $5F ; ($005F) → A ADDA $12 ; ??? GPA770: Microélectronique appliquée Éric Granger
B.1(3) Modes d’adressage d. Mode direct étendu (EXT) • Les données requises sont stockées à l’adresse mémoire qui est indiqué par deux octets (adresse de 16 bits) • l’étendue des adresses mémoire: $0100→ $FFFF • l’adresse effective est une adresse explicite • Exemples: étiquette op-code opérant(s) commentaires LDAA $5F43 ; charge ($5F43)→ A ADDA $1234 ; charge ($1234)+A→A ADDD $1030 ; ??? GPA770: Microélectronique appliquée Éric Granger
B.1(3) Modes d’adressage e. Modes indexés (IDX) • Les données requises sont accédées en additionnant le contenu des indexes IX, IY, SP ou PC avec un décalage • le décalage (offset) est: • nombre hex, dec ou bin de longueur 5, 9 ou 16 bits • nombre signés en complément à 2: décalage + ou – • décalage avec accumulateurs A/B (8 bits) et D (16 bits) • Exemples: étiquette op-code opérant(s) commentaires LDAA $53, X ; charge ($53+IX) → A ADDA $12, X ; ??? GPA770: Microélectronique appliquée Éric Granger
B.1(3) Modes d’adressage e. Modes indexés (suite) • Lors de l’exécution, on peut effectuer une pré/post incr/décrémentation automatique de IX, IY et SP: • le signe + (-): incrémente (décrémente) de 1 à 8 (-8 à -1) valeurs • le signe vient avant (après) l’index: indique la pré (post) incr/décrémentation • Exemples: étiquette op-code opérant(s) commentaires STAA 2, -SP ; SP-2→SP et A→(SP) LDX 2, SP+ ; (SP)→X et SP+2→SP LDX 2, SP ; ??? GPA770: Microélectronique appliquée Éric Granger
B.1(3) Modes d’adressage e. Modes indexés (suite) • Mode indexé indirect [IDX]− trouve un pointeur (i.e., une adresse) aux données d’intérêt: • l’adresse effective est indiquée par un décalage de 16 bits (soit D ou une valeur de 16 bits) et le registre IX, IY, SP ou PC • Exemples: étiquette op-code opérant(s) commentaires SUBA $0, Y ; A-($0+IY) → A LDAA A, X ; (A+IX) → A LDAA [D, X] ; ??? GPA770: Microélectronique appliquée Éric Granger
B.1(3) Modes d’adressage e. Mode indexé (suite) GPA770: Microélectronique appliquée
B.1(3) Modes d’adressage f. Mode relatif (REL) Utilisé pour les instructions de branchement − Bxxet LBxx Calcul l’adresse effective de branchement en additionnant un décalage relatif signé au contenu du PC. Exemple:branchement conditionnel étiquette op-code opérant(s) commentaire BEQ $10 ; branchement si Z=1 STAA $0800 ..... ...... INX GPA770: Microélectronique appliquée Éric Granger
B.1(3) Modes d’adressage f. Mode relatif (suite) Utilise normalement une étiquette, plutôt qu’une valeur numérique Exemple: étiquette op-code opérant(s) commentaire BEQ NEXT ; brancher si Z=1 STAA $0800 ..... ...... NEXT INX GPA770: Microélectronique appliquée Éric Granger
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
B.1(4) Jeu d’instructions • Catégories d’instructions: • transfert et manipulation de données • arithmétique • logique et manipulation de bits • test de données • branchement • appel aux fonctions (à voir plus loin dans B.1) • logique floue (à voir dans la section B.2) GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions a. Transfert et manipulation de données • Fonction: déplacer et manipuler des données • Exemples communs: • MOVB: déplacer un octet d’une adresse mémoire à une autre • LDAA: charger une valeur de mémoire dans A • STAA: stocker la valeur dans A en mémoire • PULX: accéder les 2 premiers octets de la pile, et charger dans IX • PSHA: stocker le contenue de l’accumulateur A dans la pile • ROL: rotation des données vers la gauche • ASR: décaler les données vers la droite GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions a. Transfert et manipulation de données (suite) LDx– Instructions de chargement: copient le contenu de l’adresse mémoire indiquée vers un accumulateur (A, B ou D), ou vers un indexe (IX, IY ou SP) Affecte les bits d’état N, Z et V du CCR Exemples: étiquette op-code opérant(s) commentaires LDAA #$12 ; charger $12 → A LDAB $4000 ; charger ($4000)→ B LDS #$1000 ; ???? GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions a. Transfert et manipulation de données (suite) STx– Instructions de stockage: copient le contenu d’un accumulateur ou d’un index vers l’adresse mémoire qui est indiquée Affecte les bits d’état N, Z et V du CCR Exemples: étiquette op-code opérant(s) commentaires STAB $1237 ; stocker B → ($1237) STD $0800; stocker D → ($0800:$0801) STAA $FF; ???? GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions a. Transfert et manipulation de données (suite) MOV et TFR – Instructions de transfert: copient le contenu entre registres du CPU, ou entre adresses de mémoire MOV n’affecte pas les bits d’état N, Z et V du CCR Exemples: étiquette op-code opérant(s) commentaires (source → destination) MOVB $1234, $CF0D ; 8 bits mém→ mém MOVW $1234, $CF0D ; 16 bits mém→ mém TFR A, B ; transfert A → B TBA ; ???? GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions a. Transfert et manipulation de données (suite) • Instructions de décalage et de rotation: 21 différentes opérations classifiées en 3 types. • LSL/R– instructions de décalage logique, pour: • examiner chaque bit, en regardant le bit d’état C du CCR • écarter des bits, et de les remplacer par des 0 • décaler dans la direction spécifiée • ASL/R– instructions de décalage arithmétique, pour: • la multiplication et la division par multiple de 2 (car on conserve le bit MSb de signe) • ROL/R– instructions de rotation, pour: • la rotation des positions de bits dans un octet (conserve l’ordre) GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions a. Transfert et manipulation de données (suite) Instructions de décalage et de rotation: (suite) GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions a. Transfert et manipulation de données (suite) Instructions de décalage et de rotation: (suite) Exemples: étiquette op-code opérant(s) commentaires ROL $1234 ; rotation gauche RORA ; rotation droite LSLD ; décalage logique gauche ASL $2345 ; décalage arithm. gauche ASRB ; ??? GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions b. Arithmétique • Fonction: effectuer des opérations arithmétiques • Exemples communs: • ADDA: additionner le contenu de A avec celle d’un adresse mémoire, et stocker dans A • SUBA: soustraire une valeur en mémoire de A, et stocker dans A • MUL: multiplier deux nombres à 8 bits • EMUL: multiplier deux nombres à 16 bits • IDIV: division de nombres entiers • FDIV: division de nombres fractionnaires GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions b. Arithmétique (suite) • ADD/SUB–Addition et soustraction: plusieurs différentes instructions • addition à 8 bits: ABA, ABX/ABY, ADCA/ADCB, ADDA/ADDB • addition à 16 bits: ADDD • Exemples: étiquette op-code opérant(s) commentaires ABA ; A + B → A ADDB $1234 ; B + ($1234) → B SBA ; A - B → A SUBB $1234 ; ??? GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions b. Arithmétique (suite) • MUL–Multiplication: 4 différentes instructions, nombres entiers • MUL: multiplier 2 nombres à 8 bits qui sont dans A et B, et stocker le résultat à 16 bits dans D • EMUL (étendue): multiplier 2 nombres à 16 bits dans D et IY, et stocker le résultat à 32 bits dans D et IY. • EMULS (signé): même chose que EMUL, mais avec nombres signés • EMACS: multiplier et accumuler 2 nombres signés à 16 bits à partir de la mémoire. étiquette op-code opérant(s) commentaires LDAA #$10 ; charger $10 → A LDAB #$20 ; charger $20 → B MUL ; A * B → D (écrase A et B) GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions b. Arithmétique (suite) • DIV–Division: 5 différentes instructions, opérants de 16/32 bits • IDIV (IDIVS): division d’entiers non-signés (signés) à 16 bits. Le dividende et le diviseur sont dans D et IX, tandis que le quotient et le reste sont dans IX et D. • FDIV: division à 16 bits de nombres fractionnaires non-signés • EDIV (EDIVS): division d’entiers non-signés (signés), avec un dividende à 32 bits (dans IY et D), et un diviseur à 16 bits étiquette op-code opérant(s) commentaires LDD #$0020 ; charger D LDX #$0010 ; charger IX IDIV ; D / IX → IX.D GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions c. Logique et manipulation de bits • Fonction: effectuer des opérations logiques • Exemples communs: • ANDA: effectuer un ET, bit par bit, avec le contenu de A et une valeur de 8 bits • EORB: effectuer un OU-exclusif, bit par bit, avec le contenu de B et une valeur de 8 bits • ORCC: effectuer un OU, bit par bit, avec le contenu du CCR et une valeur de 8 bits • BSET: fixer à 1 les bits indiqués dans un masque à 8 bits • BCLR: fixer à 0 les bits indiqués dans un masque à 8 bits GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions c. Logique et manipulation de bits (suite) • Logique: fonctions ET, OU, OU-exclusif et complément • AND – produit ‘1’ si les deux bits sont ‘1’ • ANDA (ANDB): effectuer un ET, bit par bit, entre les contenus de A (B) et une adresse mémoire, et stocker dans A (B) • ANDCC: [effacer des bits] effectuer un ET, bit par bit, entre le contenu du CCR et un masque à 8 bits, et stocker dans CCR • BITA (BITB): même que ANDA (ANDB), sauf qu’il affecte seulement les bits N, Z et (V=0) du CCR étiquette op-code opérant(s) commentaires ANDA $1234 ; A and ($1234) → A BITA $1234 ; A and ($1234) (change le CCR) GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions c. Logique et manipulation de bits (suite) • OR – produit ‘1’ si au moins un des bits est ‘1’ • ORA (ORB): effectuer un OU, bit par bit, entre les contenus de A (B) et une adresse mémoire, et stocker dans A (B) • ORCC: [fixer des bits] effectuer un OU, bit par bit, entre le contenu du CCR et un masque à 8 bits, et stocker dans CCR • BITA (BITB): pas d’équivalentau ET • EOR – produit ‘1’ si les deux bits sont différents • EORA (EORB): effectuer un OU-exclusif, bit par bit, entre les contenus de A (B) et une adresse mémoire, et stocker dans A (B) • ANDCC et BITA (BITB): pas d’équivalentau ET GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions c. Logique et manipulation de bits (suite) • NEG/COM – Instructions pour gérer des nombres signés en complément à 2: • NEGA (NEGB): effectuer un codage en complément à 2 sur le contenu de A (B) • COMA (COMB): effectuer un codage en complément à 1 sur le contenu de A (B) GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions c. Logique et manipulation de bits (suite) • Manipulation de bits: 4 différentes instructions • BCLR (BSET): fixer les bits contenus dans l’adresse mémoire M à ‘0’ (‘1’) s’ils correspondent aux bits = ‘1’ dans le masque • Format:op-code adr_mémoire, masque • BRCLR (BRSET): branchement si les bits contenus dans l’adresse mémoire M, qui sont spécifiés par le masque, sont ‘0’ (‘1’). • Format:op-code adr_mémoire, masque, adr_branchement étiquette op-code opérant(s) commentaires BSET $D000, %01100000 ;($D000)*masque→($D000) NEXT BRCLR $D000, %01100000, NEXT ;branch. étiquette GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions d. Test de données • Fonction: comparer ettester le contenu d’un accumulateur ou d’une adresse mémoire • fixe les drapeau du CCR sans modifier les opérants (contenus dans les registres ou la mémoire) • Exemples communs: • CMPA: comparer les contenus de A et d’une adresses mémoire • CPY: comparer les contenus de IY et de 2 adresses mémoire consécutives. • TSTB: tester le contenu de B pour un 0 GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions d. Test de données (suite) • Il existe 10 instructions de 2 types, presque toujours suivies d’un branchement: • CMP – Comparaison: soustraire une valeur du registre indiqué, et ensuite fixer les bits N, Z, V et C du CCR. • CMPA, CMPB, CBA, CPD, CPS, CPX, CPY • TST – Test: soustraire ‘0’ du registre indiqué, et ensuite fixer les bits N et Z du CCR (C et V sont fixés à 0) • TST, TSTA, TSTB GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions e. Branchement • Fonction: réaliser des structures de contrôle et des boucles en langage assembleur • peuvent modifier l’ordre d’exécution des instructions • Exemples communs: • BEQ: branchement si le résultat de l’instruction précédente est 0 (si Z = 1 au CCR) • BMI: branchement si le résultat de l’instruction précédente est un nombre négatif (si N = 1 au CCR) • BRA: branchement non-conditionnel GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions e. Branchement (suite) • Types d’instructions de branchement: • non-conditionnel: s’exécute toujours • conditionnel: s’exécute selon les bits d’état du CCR • signé (non-signé): si un test de valeurs signées (non-signées) donne un combinaison de bits au CCR. • Longueur des branchements: • court Bxx:décalage représenté sur 8 bits signés entre -128 et +127 adresses) • long LBxx: décalage représenté sur 16 bits signés (couvre toute la mémoire, entre -32768 et +32767 adresses) GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions e. Branchement (suite) • Branchement non-conditionnel: 3 instructions • BRA: • brancher vers une adresse indiquée par un décalage • plus rapide, consomme peu de mémoire • LBRA: • brancher vers une adresse quelconque de mémoire • mais plus lent, consomme plus de mémoire • JMP: • comme LBRA, mais permet un mode EXT, IDX,etc. (plutôt que le mode REL) GPA770: Microélectronique appliquée Éric Granger
B.1(4) Jeu d’instructions e. Branchement (suite) • Branchement conditionnel: 34 instructions • évalue des bits du CCR pour décider d’un branchement • format: Bxx adresse_relative où ‘xx’ indique les bits d’état du CCR à tester • convention dexx selon les nombres: • non-signés:HI (higher than), HS (higher or same), LO (lower than) , LS (lower or same) • signés: GT (greater than), LT (less than), GE (greater or equal), LE (less or equal) • une bonne habitude: faire précéder le branchement par un instruction de TST,CMP …pour actualiser les bits du CCR. GPA770: Microélectronique appliquée Éric Granger