Как мне печатать в десятичном формате в LC3? - PullRequest
0 голосов
/ 25 марта 2019

У меня есть код, который позволяет пользователю вводить 5 цифр, и они будут добавлены, и сумма будет отображаться. Если пользователь нажмет ENTER, будет отображена сумма, и если он нажмет q, программа остановится. Я новичок в LC3 и никогда не понимал, как изменить значение с ASCII на десятичное. Я не знаю, если значение не сохраняется или операция сумма не является правильным. Кто-нибудь знает, как это сделать?

Я уже пытался использовать x0030 (48) и вычесть его из суммы, но он не работает.

.ORIG x3000

RESTART
AND R0, R0, #0
AND R1, R1, #0  
AND R2, R2, #0  
AND R3, R3, #0      ;Clear all registers
AND R4, R4, #0
AND R5, R5, #0
AND R6, R6, #0

LEA R0, MESSAGE     ;Load and print first prompt message
PUTS

ADD R4, R4, #4      ;Set counter

SUM
GETC            ;Get input and echo it
OUT 
ADD R1, R0, #0

LD R6, QKEY
NOT R6, R6
ADD R1, R6, R0      ;Check if user pressed the letter q
BRz DONE

LD R2, ENTER
NOT R2, R2      ;Check if user pressed ENTER key
ADD R1, R2, R0
BRz FINISH

ADD R1, R0, R1      ;Store sum value in R1
LEA R0, NEXT        
PUTS            ;Load and print next prompt

ADD R4, R4, #-1     ;Decrement counter
BRp SUM         ;Loop

GETC            ;Get final input and echo it
OUT 
ADD R1, R0, #0

LD R6, QKEY
NOT R6, R6
ADD R1, R6, R0      ;Check if user pressed the letter q
BRz DONE

LD R2, ENTER
NOT R2, R2      ;Check if user pressed ENTER key
ADD R1, R2, R0
BRz FINISH

FINISH
LEA R0, OUTPUT      ;Load and print prompt of sum
PUTS
LD R3, NEG30
NOT R3, R3
ADD R3, R3, #1
ADD R1, R1, R0
OUT

BR RESTART      ;Restart program
DONE
LEA R0, QUIT
PUTS            ;Load and print quit prompt
HALT


MESSAGE .STRINGZ    "\n Enter Start Number (0 - 9): "
NEXT    .STRINGZ    "\n Enter Next Number (0 - 9): "
OUTPUT  .STRINGZ    "\n The sum of the numbers is: "
NEG30   .FILL       x30
QUIT    .STRINGZ    "\n Thank you for playing!"
QKEY    .FILL       x70
ENTER   .FILL       x09

.END
...