; ********************************************************************* ; Programme: SOUS2.TXT version PEP813 sous WINDOWS ; ; Programme qui appelle un sous-programme qui retourne la plus grande ; valeur parmi 2 nombres lus dont les valeurs sont inscrites sur la pile. ; ; auteur: Bernard Martin ; code permanent: non applicable ; courriel: martin.bernard@uqam.ca ; date: hiver 2020 ; cours: INF2171 ; ********************************************************************* ; STRO message,d DECI nombre,d ; première valeur LDA nombre,d STA -2,s ; DECI nombre,d ; deuxième valeur LDA nombre,d STA -4,s ; SUBSP 4,i ; #valeurA #valeurB CALL SOUS2 ; appel à la routine du plus grand nombre ; STRO grand,d DECO 0,s ; affichage du nombre maximum ADDSP 2,i ; on enlève de la pile #valeurB STOP ; message: .ASCII "Entrez les 2 nombres: \x00" grand: .ASCII "\nLe plus grand nombre est: \x00" nombre: .BLOCK 2 ; #2d ; ;SOUS2: retourne la valeur la plus grande parmi 2 valeurs fournies sur la pile ; ;IN: SP+0=valeurB ; SP+2=valeurA ; ;OUT: SP+0=la valeur la plus grande est retournée ; sauveA: .EQUATE 0 ; #2h retour: .EQUATE 2 ; #2h valeurB: .EQUATE 4 ; #2h valeurA: .EQUATE 6 ; #2h ; SOUS2: SUBSP 2,i ; #sauveA STA sauveA,s LDA valeurA,s CPA valeurB,s ; valeurA >= valeurB BRGE réglé ; oui, c'est terminé LDA valeurB,s ; non, copie valeurB -> valeurA STA valeurA,s ; réglé: LDA retour,s STA valeurB,s ; on ne conserve sur la pile que la valeur la plus grande LDA sauveA,s ; registre A original RET4 ; désempilons #sauveA #retour .END