; ******************************************************************************* ; Programme: SOMME2.TXT version PEP813 sous Windows ; ; version 2 - Programme qui lit des nombres à l'écran, les sauve ; et par la suite, en fait la sommation. ; Il ne traite que les nombres compris entre -32767 et +32767. ; Les débordements ne sont pas tolérés. ; De plus, il affiche le plus petit et le plus grand des nombres lus. ; ; auteur: Bernard Martin ; code permanent: non applicable ; courriel: martin.bernard@uqam.ca ; date: Eté 2020 ; cours: INF2171 ; ******************************************************************************* ; LDA 32767,i ; il y aura surement un nombre plus petit que 32767 STA petit,d LDA -32767,i ; il y aura surement un nombre plus grand que -32767 STA grand,d ; STRO bienvenu,d ; message de bienvenue à afficher LDX 0,i ; début du tableau boucle: DECI tableau,x ; lecture d'un nombre du tableau BRV exceptio ; hors limite BREQ termine ; si le nombre lu est zéro, on termine LDA tableau,x ; analyse du nombre lu CPA -32768,i ; -32768 est rejeté BREQ exceptio CPA petit,d ; plus petit que le nombre retenu à date ? BRGT nonpetit STA petit,d nonpetit:CPA grand,d ; plus grand que le nombre retenu à date ? BRLT pasgrand STA grand,d pasgrand:NOP0 ADDX 2,i ; élément suivant du tableau BR boucle STRO excede,d ; message d'excédent du tableau termine: CPX 0,i ; aucun élément ? BREQ rien suivant: SUBX 2,i ; élément précédent BRLT fin_add ; début du tableau ? LDA tableau,x ; additionne en commençant par la fin du tableau ADDA total,d BRV deborde ; au-delà de 32767 (-32768) STA total,d BR suivant fin_add: STA total,d STRO msgtotal,d ; message du total DECO total,d ; affichage du total STRO plpetit,d DECO petit,d STRO plgrand,d DECO grand,d STRO normal,d ; message de fin normale BR fin deborde: STRO msgdebor,d ; message de débordement et de fin anormale BR fin exceptio:STRO msgexcep,d ; le nombre -32768 n'est pas acceptée STRO anormale,d BR fin rien: STRO aucun,d STRO anormale,d fin: 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. bienvenu:.ASCII "Bienvenue à ce programme de sommation.\n\n" .ASCII "Entrez les nombres à additionner (0-pour terminer): \n\x00" msgtotal:.ASCII "\nLa somme des nombres est: \x00" plpetit: .ASCII "\n\nLe plus petit est \x00" plgrand: .ASCII " et le plus grand est \x00" aucun: .ASCII "\nAucun nombre n'a été entré.\n\x00" excede: .ASCII "\nLe programme n'additionne que 5 nombres.\n\x00" msgdebor:.ASCII "\nLa somme excède excède le minimum(-32768)" .ASCII "\nou le maximum permis(32767)." anormale:.ASCII "\n\nFin anormale du programme.\x00." msgexcep:.ASCII "\nLe nombre doit se trouver dans l'intervalle" .ASCII "\n-32767 à +32767.\x00" normal: .ASCII ".\n\nFin normale du programme.\x00" total: .BLOCK 2 ; #2d petit: .BLOCK 2 ; #2d capture du plus petit nombre grand: .BLOCK 2 ; #2d capture du plus grand nombre ; tableau DOIT être à la fin du programme tableau: .BLOCK 10 ; #2h5a voir les 5 premiers éléments de 2 octets .BLOCK 0 ; les éléments suivants, soit 6 à 999... .END