6800 PROGRAMMATION EN LANGAGE ASEMBLEUR RESUME Ce livre constitue un cours complet de programmation, en langage assembleur, du microprocesseur 6800. Chacune des instructions est présentée séparément et commentée dans tous ses détails. De nombreux programmes rédigés à la fois en assembleur et en langage machine, développent les applications. Extrait de la table des matières : Introduction au langage de programmation en assembleur. Les assembleurs. Le jeu d'instructions du 6800 en langage assembleur Programmes simples. Programmes simples avec boucles. Le codage des caractères. Conversion de codes. Problèmes arithmétiques. Tables et listes. Sous programmes . Entréessorties. Interruptions. Définition des problèmes et conception des programmes. Débugage et test. Documentation et reconception. Exemples de projets. TABLE DES MATIERES Chapitre 1 Introduction au langage de programmation en assembleur Signification des instructions Un programme informatique Le problème de la programmation Utilisation de l'octal ou de l'hexadécimal Mnémoniques des codes d'instructions Le programme assembleur Caractéristiques additionnelles des assembleurs Inconvénients du langage assembleur Langages haut niveau Avantages des langages haut niveau Inconvénients des langages haut niveau Langages haut niveau pour microprocesseurs Quel niveau devriez-vous utiliser ? Et pour le futur ? Pourquoi ce livre ? 5 5 5 6 7 9 9 10 11 12 13 13 15 16 17 18 Chapitre 2 Les assembleurs Instructions de l'assembleur Labels Mnémoniques de l'assembleur Pseudo-opérations Pseudo-opérations sur données Pseudo-opérations équate (ou définie) 19 19 21 23 23 24 25 Pseudo-opération origine 26 Pseudo-opération réserve Pseudo-opérations d'intendance Labels avec pseudo-opérations Champs opérandes et adresses Assemblages conditionnels Macros 27 29 29 29 31 32 Macros Commentaires Types d'assembleurs Erreurs Chargeurs Chapitre 3 Le jeu d'instruction du 6800 en langage assembleur Les registres de l'UCT et les indicateurs Mode d'adressage mémoire du 6800 Mode mémoire, immédiat Mode mémoire, direct Mode mémoire, indexé Mode mémoire, étendu Mode inhérent Mode relatif Accumulateur Abréviations Codes objets des instructions Temps d'exécution des instructions et codes ABA - Addition de l'accumulateur B à l'accumulateur A ADC - Addition de la mémoire, avec retenue, à l'accumulateur A ou B ADD - Addition de la mémoire à l'accumulateur AND - ET, logique de la mémoire avec l'accumulateur ASL - Décalage à gauche de l'octet mémoire ou accumulateur ASR - Décalage à droite de l'octet accumulateur ou mémoire BCC - Brancher si carry = 0 BCS - Brancher si carry = 1 BEQ - Brancher si égal BOE - Brancher si plus grand ou égal à zéro BOl - Brancher si plus grand que zéro BHI - Brancher si plus grand BIT - Test de bit BLE - Brancher si plus petit ou égal à zéro BLS - Brancher si plus petit ou égal BL T - Brancher si moins que zéro BMI - Brancher si négatif BNE - Brancher si non égal BPL - Brancher si positif BRA - Brancher à l'instruction identifiée par l'opérande BSR - Brancher au sous-programme identifié par l'opérande BVC - Brancher si pas de dépassement BVS - Brancher si dépassement CBA - Comparer les accumulateurs CLC - Mise à zéro du carry CLI - Mise à zéro du masque d'interruptions CLR - Mise à zéro accumulateur ou mémoire CL V - Mise à zéro du dépassement CMP - Comparer accumulateur et mémoire CaM - Complémenter l'accumulateur ou la mémoire CPX - Comparer l'index DAA - Ajustage décimal de l'accumulateur DEC - Décrémenter l'accumulateur ou la mémoire DES - Décrémenter le pointeur de pile DEX - Décrémenter le registre index EOR - OU exclusif entre accumulateur et mémoire INC - Incrémentation accumulateur ou mémoire INS - Incrémenter le pointeur de pile INX - Incrémentation du registre d'index JMP - Saut en adressage indexé ou étendu JSR - Saut à sous-programme en adressage indexé ou étendu LDA - Charger l'accumulateur à partir de la mémoire LDS - Charger le pointeur de pile LDX - Charger le registre d'index LSR - Décalage logique à droite accumulateur ou mémoire NEG - Complémenter à deux accumulateurs ou mémoire NOP - NON opération ORA - OU logique entre accumulateur et mémoire PSH - Sauvegarder l'accumulateur dans la pile PUL - Extraire les données de la pile ROL - Rotation accumulateur ou mémoire à gauche via le carry RTl - Retour d'interruption TRS - Retour de sous-programme SBA - Soustraction entre accumulateur SBC - Soustraction entre accumulateur et mémoire avec retenue SEC - Mise à 1 du carry 32 33 34 36 36 38 38 42 43 44 45 47 48 48 48 49 51 51 62 62 66 67 68 70 72 72 72 73 73 74 74 75 76 77 77 77 78 78 79 80 81 81 82 82 83 84 85 86 87 89 89 92 92 93 94 95 96 96 98 99 100 101 102 104 106 106 108 109 110 113 115 115 116 117 SEC - Mise à 1 du carry SEI - Mise à 1 du masque d'interruption SEV - Mise à 1 du dépassement STA - Ranger l'accumulateur en mémoire STS - Ranger le pointeur de pile STX - Ranger l'index SUB - Soustraction mémoire de l'accumulateur SWI - Interruption logicielle TAB - Transfert de l'accumulateur A à l'accumulateur B TAP - Transfert de l'accumulateur A au CRR TBA - Transfert de l'accumulateur B à l'accumulateur A TPA - Transfert du CRR à l'accumulateur A TST - Test de l'accumulateur ou de la mémoire TSX - Transfert du pointeur de pile à l'index TXS - Transfert de l'index vers le pointeur de pile WAI - Attente d'interruption Convention de l'assembleur 6800 Motorola Structure des champs de l'assembleur Pseudo-opérations Labels et pseudo-opérations Adresses Autres caractéristiques de l'assembleur 117 118 118 119 120 121 122 123 124 125 125 126 127 129 129 130 131 131 131 133 133 134 Chapitre 4 Programmes simples Format général des exemples Exemples de programmes Problèmes 135 135 137 146 Chapitre 5 Programmes simples avec boucles Exemples Problèmes 150 152 163 Chapitre 6 Le codage des caractères Exemples Problèmes 166 167 180 Chapitre 7 Conversion de codes Exemples Problèmes 183 183 192 Chapitre 8 Problèmes arithmétiques Exemples Problèmes 195 195 214 Chapitre 9 Tables et listes Exemples Problèmes 218 218 230 Chapitre 10 Sous-Programmes Documentation des sous-programmes Exemples Problèmes 234 236 236 251 Chapitre 11 Entrées-sorties Programmes de temporisation Exemples L'interface d'adaptation de périphériques 6820 (PIA) Registre de contrôle du PIA Configuration du PIA Exemples de configurations du PIA Utilisation du PIA pour transférer des données Exemples Programmes en assembleur Problèmes Dispositifs d'entrée/sortie plus complexes Exemples Interfaces standards Problèmes Références 255 263 263 266 269 272 273 275 276 285 301 303 305 332 333 335 Chapitre 12 Interruptions Le système d'interruptions du 6800 Exemples Services d'interruptions plus généraux Problèmes 337 338 343 360 361 Chapitre 13 Définition des problèmes et conception des programmes Fonction du logiciel de développement Définition des problèmes Définition des entrées Définition des sorties Section de traitement Traitement des erreurs Facteurs humains Exemples Résumé des problèmes de définitions Conception du programme Les organigrammes Exemples Programmation modulaire Exemples Résumé de la programmation modulaire Programmation structurée Exemples Résumé de la programmation structurée Conception descendante Exemples Résumé de la conception descendante Résumé de la définition des problèmes et de la conception des programmes 362 362 365 365 365 366 366 367 368 376 377 378 379 386 387 389 390 394 401 402 403 406 408 Chapitre 14 Débugage et test Outils simples de débugage Outils de débrayage plus évolués Recherche des erreurs Introduction au test Sélection des données de test Précautions lors des tests Conclusions 409 409 414 418 430 431 433 433 Chapitre 15 Documentation et reconception Programmes auto-documentés Commentaires Organigramme documentaire Programmation structurée documentaire Cartes de la mémoire Listes de paramètres et de définitions Bibliothèques de programmes Exemple de fiches de programmes Synthèse de la documentation Reconception Réorganisation pour consommer moins de mémoire Réorganisations majeures 435 435 436 440 440 440 442 443 444 446 447 447 449 Chapitre 16 Exemples de projets Projet n°1 un minuteur Projet n°2 un thermomètre numérique Références TOP 451 451 458 474