------------------------------------------------------------------------------- Object Addr code Symbol Mnemon Operand Comment ------------------------------------------------------------------------------- ; *************************************************************************************** ; Programme: NEWMD1.TXT version PEP813 sous Windows ; ; Version Multiplication/Division: modifiez le nom des mnémoniques: ; NOP0 -> BONJOUR ; NOP1 -> FINAL ; NOP2 -> MULT ; NOP3 -> DIV ; NOP -> LETTRE ; DECI -> LIRENB ; ; Pour implanter ces nouveaux noms, on doit utiliser l'option "Redefine Mnemonics" ; sous l'onglet "System" de PEP/8. ; ; Le nombre lu avec LIRENB doit être numériquement valide, sinon l'utilisateur ; devra le réentrer. Ce nombre doit être compris entre -32768 et 32767. ; ; La multiplication et la division se font par les registres A et X. ; ; auteur: Bernard Martin ; code permanent: non applicable ; courriel: martin.bernard@uqam.ca ; date: été 2020 ; cours: INF2171 ; ; Remarque: On doit d'abord installer NEWMD.TXT pour utiliser ces fonctionnalités. ; ************************************************************************************** ; 0000 24 NEWMD1: BONJOUR ; Affiche "Bonjour " 0001 280001 LETTRE 1,i ; Affiche la 1ère lettre de l'alphabet "A" 0004 28000D LETTRE 13,i ; Affiche la 13e lettre de l'alphabet "M" 0007 280009 LETTRE 9,i ; Affiche la 9e lettre de l'alphabet "I" 000A 41004D STRO bienvenu,d ; ; Pour utiliser MULT: ; ; IN: A=multiplicande ; X=multiplicateur ; OUT: A=produit ; X=0 ; X=-1 si débordement ; 000D 310121 LIRENB temp,d ; 0010 C10121 LDA temp,d ; multiplicande 0013 41009F STRO demande2,d 0016 310121 LIRENB temp,d 0019 C90121 LDX temp,d ; multiplicateur 001C 26 MULT 001D 4100BB STRO résulta1,d 0020 E10121 STA temp,d ; produit 0023 390121 DECO temp,d ; ; Pour utiliser DIV: ; ; IN: A=dividende ; X=diviseur ; OUT: A=reste ; X=quotient ; 0026 4100F3 STRO demande3,d 0029 310121 LIRENB temp,d 002C C10121 LDA temp,d ; dividende 002F 41010B STRO demande4,d 0032 310121 LIRENB temp,d 0035 C90121 LDX temp,d ; diviseur 0038 27 DIV 0039 4100CD STRO résulta2,d 003C E90121 STX temp,d ; quotient 003F 390121 DECO temp,d 0042 4100E0 STRO résulta3,d 0045 E10121 STA temp,d ; reste 0048 390121 DECO temp,d 004B 25 FINAL ; affiche le message de terminaison 004C 00 STOP ; 004D 0A0A42 bienvenu:.ASCII "\n\nBienvenue à ce programme de multiplication/division." 69656E 76656E 756520 E02063 652070 726F67 72616D 6D6520 646520 6D756C 746970 6C6963 617469 6F6E2F 646976 697369 6F6E2E 0083 0A0A45 demande1:.ASCII "\n\nEntrez le multiplicande: \x00" 6E7472 657A20 6C6520 6D756C 746970 6C6963 616E64 653A20 00 009F 0A456E demande2:.ASCII "\nEntrez le multiplicateur: \x00" 747265 7A206C 65206D 756C74 69706C 696361 746575 723A20 00 00BB 0A4C65 résulta1:.ASCII "\nLe produit est: \x00" 207072 6F6475 697420 657374 3A2000 00CD 0A4C65 résulta2:.ASCII "\nLe quotient est: \x00" 207175 6F7469 656E74 206573 743A20 00 00E0 206574 résulta3:.ASCII " et le reste est: \x00" 206C65 207265 737465 206573 743A20 00 00F3 0A0A45 demande3:.ASCII "\n\nEntrez le dividende: \x00" 6E7472 657A20 6C6520 646976 696465 6E6465 3A2000 010B 0A456E demande4:.ASCII "\nEntrez le diviseur: \x00" 747265 7A206C 652064 697669 736575 723A20 00 0121 0000 temp: .BLOCK 2 0123 .END ------------------------------------------------------------------------------- Symbol table -------------------------------------- Symbol Value Symbol Value -------------------------------------- NEWMD1 0000 bienvenu 004D demande1 0083 demande2 009F demande3 00F3 demande4 010B résulta1 00BB résulta2 00CD résulta3 00E0 temp 0121 -------------------------------------------------------- Résultat de l'exécution: -------------------------------------------------------- Bonjour AMI Bienvenue à ce programme de multiplication/division. Entrez le multiplicande: a Ce nombre n'est pas numérique, veuillez le réentrer svp: -8 Entrez le multiplicateur: 9 Le produit est: -72 Entrez le dividende: b Ce nombre n'est pas numérique, veuillez le réentrer svp: -5 Entrez le diviseur: 2 Le quotient est: -2 et le reste est: -1 Fin normale du programme.