Modify the program so that it can accept three-digit operands up to 999 and a sum <= 1998. .ORIG x3000 ; begin at x3000 ; input two numbers IN ;input an integer character (ascii) {TRAP 23} LD R3, HEXN30 ;subtract x30 to get integer ADD R0, R0, R3 ADD R1, R0, x0 ;move the first integer to register 1 IN ;input another integer {TRAP 23} ADD R0, R0, R3 ;convert it to an integer ; add the numbers ADD R2, R0, R1 ;add the two integers ; print the results LEA R0, MESG ;load the address of the message string PUTS ;"PUTS" outputs a string {TRAP 22} ADD R0, R2, x0 ;move the sum to R0, to be output LD R3, HEX30 ;add 30 to integer to get integer character ADD R0, R0, R3 OUT ;display the sum {TRAP 21} ; stop HALT ;{TRAP 25} ; data MESG .STRINGZ "The sum of those two numbers is: " HEXN30 .FILL xFFD0 ; -30 HEX HEX30 .FILL x0030 ; 30 HEX .END
Modify the program so that it can accept three-digit operands up to 999 and a sum <= 1998.
.ORIG x3000 ; begin at x3000
; input two numbers
IN ;input an integer character (ascii) {TRAP 23}
LD R3, HEXN30 ;subtract x30 to get integer
ADD R0, R0, R3
ADD R1, R0, x0 ;move the first integer to register 1
IN ;input another integer {TRAP 23}
ADD R0, R0, R3 ;convert it to an integer
; add the numbers
ADD R2, R0, R1 ;add the two integers
; print the results
LEA R0, MESG ;load the address of the message string
PUTS ;"PUTS" outputs a string {TRAP 22}
ADD R0, R2, x0 ;move the sum to R0, to be output
LD R3, HEX30 ;add 30 to integer to get integer character
ADD R0, R0, R3
OUT ;display the sum {TRAP 21}
; stop
HALT ;{TRAP 25}
; data
MESG .STRINGZ "The sum of those two numbers is: "
HEXN30 .FILL xFFD0 ; -30 HEX
HEX30 .FILL x0030 ; 30 HEX
.END
Step by step
Solved in 2 steps