; ************************************************************ ; Programme: lab_n_9.txt version PEP813 sous Windows ; ; INF2171 - laboratoire traitement des tableaux de nombres ; 9) Lire des nombres au terminal, les conserver dans un tableau d'octets (Byte et non Word), afficher la quantité de nombres lus ; puis afficher seulement les nombres dont la valeur absolue est comprise entre 10 et 20 inclusivement. ; Seulement les nombres compris entre -127 et +127 inclusivement sont acceptés. ; ; auteur: Bernard Martin ; code permanent: non applicable ; courriel: martin.bernard@uqam.ca ; date: hiver 2019 ; cours: INF2171 ; *********************************************************** ; STRO msgbien,d ; bienvenue LDA 0,i LDX 0,i lecture: DECI nombre,d BREQ affiche1 ; 0-termine LDA nombre,d CPA 128,i ; entre -127 et +127 ? BRGE rejet CPA -128,i BRLE rejet STBYTEA nombres,x ADDX 1,i ; nombre suivant BR lecture rejet: STRO msgrejet,d BR lecture ; ; la lecture est terminée ; affiche1:STX quantité,d ; quantité de nombres lus STRO msgtotal,d DECO quantité,d STRO msgaff,d ; on commence à afficher par le début du tableau des nombres LDX 0,i affiche2:LDA 0,i LDBYTEA nombres,x ; 1 seul octet STA nombre,d ; conserver sur 2 octets CPA 0x0080,i ; 00-7F=positif 80-FF=négatif BRLT positif ORA 0xFF00,i ; rendre négatif les bits 8 à 15 (partie gauche du registre <- FF) STA nombre,d ; conserver sur 2 octets NEGA ; valeur absolue positif: CPA 10,i ; entre 10 et 20 ? BRLT exclus CPA 20,i BRGT exclus DECO nombre,d CHARO "\n",i exclus: ADDX 1,i ; nombre suivant CPX quantité,d BRLE affiche2 ; 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 tableau" .ASCII "\nde nombres." .ASCII "\n\nVeuillez entrer des nombres qui seront sélectionnés" .ASCII "\nsi leurs valeurs absolues sont comprises" .ASCII "\nentre 10 et 20." .ASCII "\nLes nombres doivent être comrpis entre -127 et +127." .ASCII "\n(0-pour terminer)\n\x00" msgtotal:.ASCII "\nQuantité de nombres lus:\n\x00" msgrejet:.ASCII "Un nombre doit être compris entre -127 et +127.\n\x00" msgaff: .ASCII "\nVoici les nombres lus dont la valeur absolue est" .ASCII "\ncomprise entre 10 et 20:\n\x00" msgfin: .ASCII "\n\nFin normale du programme.\x00" nombre: .BLOCK 2 ; #2h quantité:.BLOCK 2 ; #2d ; nombres DOIT se retrouver à la fin du programme nombres: .BLOCK 10 ; #1h10a trace seulement les 10 premiers nombres lus .BLOCK 0 ; les nombres lus qui suivent les 10 premiers, soit 11 à 999 .END