; ************************************************************ ; Programme: lab_t_9.txt version PEP813 sous Windows ; ; INF2171 - laboratoire traitement des tableaux de caractères ; ; 9) Lire un texte au terminal (maximum 255 caractères) et afficher parmi les caractères hexadécimaux ; {0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,A,B,C,D,E,F} ceux les plus utilisés. ; ; auteur: Bernard Martin ; code permanent: inexistant ; courriel: martin.bernard@uqam.ca ; date: Eté 2020 ; cours: INF2171 ; ************************************************************** ; ; copie de lab_t_7.txt: Lire un texte au terminal et afficher la(les) lettre(s) la(les) plus utilisées. ; STRO msgbien,d lecture: CHARI caract,d ; caractère lu LDA compteur,d ; compteur de caractères lus ADDA 1,i CPA 255,i ; 255 caractères maximum BRGT limite STA compteur,d LDX avcaract,d CPX '0',i ; traitement des chiffres BRLT pashexa CPX '9',i BRLE chiffre ; ; lettre ? ; ANDX 0x00DF,i ; transforme en majuscules les minuscules (les majuscules demeurent majuscules) CPX "A",i ; doit être entre A et Z BRLT pashexa CPX "F",i BRGT pashexa SUBX 7,i ; position dans l'alphabet hexa chiffre: SUBX 0x0030,i LDBYTEA alphabet,x ADDA 1,i STBYTEA alphabet,x pashexa: LDX avcaract,d CPX "\n",i ; fin de ligne ? BRNE lecture ; ; la lecture est terminée ; ; vérification du maximum parmi les 16 lettres de l'alphabet hexa ; limite: LDA 0,i LDX 0,i ; première lettre recherch:LDBYTEA alphabet,x CPA maximum,d BRLE rejet STA maximum,d rejet: ADDX 1,i CPX 16,i BRLT recherch ; ; le "maximum" a été trouvé ; ; nouvelle vérification du "maximum" parmi les 16 lettres de l'alphabet ; LDX 0,i LDA maximum,d BRNE plus STRO msgaucun,d ; aucune lettre retrouvée BR termine plus: CPA 1,i ; 1 ou plusieurs occurences BRNE plusieur STRO msgaff,d ; une seule occurence BR lettres plusieur:STRO msgaffs,d ; plusieurs occurences DECO maximum,d STRO msgfois,d ; lettres: LDBYTEA alphabet,x ; occurence pour une lettre analysée CPA maximum,d BRNE oublie STX sauvex,d ; lettre choisie ADDX 0x0030,i CPX '9',i BRLE chiffreh ADDX 7,i chiffreh:STBYTEX caract,d CHARO caract,d ; affichage de la lettre choisie CHARO " ",i LDX sauvex,d oublie: ADDX 1,i CPX 16,i BRLT lettres ; termine: STRO msgfin,d STOP ; ; variables ; N.B. Il est préférable d'afficher un long message sur plusieurs lignes car la largeur ; de la fenêtre d'output de PEP/8 n'est que de 52 caractères par défaut. msgbien: .ASCII "Bienvenue à ce programme de traitement d'un texte." .ASCII "\n\nVeuillez entrer un texte qui sera analysé" .ASCII "\npour son alphabet.\n\x00" msgaff: .ASCII "\nVoici la(les) caractère(s) hexa utilisée(s) une seule fois:\n\x00" msgaffs: .ASCII "\nVoici la(les) caractère(s) hexa utilisée(s) \x00" msgfois: .ASCII " fois:\n\x00" msgaucun:.ASCII "\nAucune caractère hexa n'a été utilisée.\n\x00" msgfin: .ASCII "\n\nFin normale du programme.\x00" alphabet:.BLOCK 16 ; #1h16a maximum: .BLOCK 2 ; #2d sauvex: .BLOCK 2 ; #2h avcaract:.BLOCK 1 ; #1h caract: .BLOCK 1 ; #1h compteur:.BLOCK 2 ; #2d .END