; ********************************************************************* ; Programme: SOUS3.TXT version PEP813 sous WINDOWS ; ; Programme qui appelle un sous-programme qui retourne la plus grande ; valeur d'un tableau de 5 nombres dont les valeurs sont copiées sur la pile.(SX) ; ; auteur: Bernard Martin ; code permanent: non applicable ; courriel: martin.bernard@uqam.ca ; date: hiver 2020 ; cours: INF2171 ; ********************************************************************* ; STRO message,d ; lecture des 5 éléments du tableau "nombres" LDX 0,i lecture: DECI nombres,x ; élément du tableau ADDX 2,i ; élément suivant CPX 10,i ; 5 éléments ? BRLT lecture ; ; copie les 5 éléments du tableau "nombres" sur la pile ; LDX 0,i empile: LDA nombres,x ; élément du tableau STA -2,s ; sauve sur la pile SUBSP 2,i ; #tableaux ADDX 2,i ; élément suivant CPX 8,i BRLE empile ; 5 éléments ? ; CALL SOUS3 ; appel à la routine du plus grand nombre ; STRO mgrand,d DECO 0,s ; affichage du nombre maximum ADDSP 2,i ; on enlève de la pile #tableaux STOP message: .ASCII "Entrez les 5 nombres: \x00" mgrand: .ASCII "\nLe plus grand nombre est: \x00" nombres: .BLOCK 10 ; #2d5a (5 éléments de 2 octets) tableaux:.EQUATE 0 ; #2h ; ;SOUS3: retourne la valeur la plus grande parmi un tableau de 5 valeurs fournies sur la pile ; ;IN: SP+0=tableau[4] ; SP+2=tableau[3] ; SP+4=tableau[2] ; SP+6=tableau[1] ; SP+8=tableau[0] ; ;OUT: SP+0=la valeur la plus grande est retournée ; sauveA: .EQUATE 0 ; #2h sauveX: .EQUATE 2 ; #2h retour: .EQUATE 4 ; #2h tableau: .EQUATE 6 ; #2h5a (5 éléments de 2 octets) ; SOUS3: SUBSP 4,i ; #sauveX #sauveA STA sauveA,s STX sauveX,s LDX 0,i LDA tableau,sx ; tableau[5] boucle: ADDX 2,i ; élément suivant CPA tableau,sx ; comparaison d'éléments du tableau BRGE grand ; oui, c'est plus grand LDA tableau,sx ; non, copie tableau[x] -> registre A grand: CPX 8,i ; 5 éléments ? BRLT boucle ; réglé: LDX 8,i ; dernier item de la pile STA tableau,sx ; élément tableau[0] LDA retour,s LDX 6,i STA tableau,sx ; adresse de retour LDA sauveA,s ; registre A original LDX sauveX,s ; registre A original ADDSP 12,i ; désempilons #sauveA #sauveX #retour #tableaux #tableaux #tableaux RET0 .END