LC-3试图添加2个数字,但结果很远

时间:2015-11-11 06:42:12

标签: assembly lc3

我有一个程序,我在一个点上添加2个数字。我收到了来自用户的2个号码,使用ASCII -30将它们转换为数字,将它们一起添加到寄存器0中并输出总数。我现在已经确定将数字保持在5以下,所以我总共不超过9。但我得到的总输出是......不确定名称。它像一个厚厚的时期,但在角色的中心而不是底部...像一个子弹点。我的代码在下面,查看模拟器,当我通过程序并为两个数字输入4 ...就在我输出总数(或我想要的总数)之前,寄存器是

R0 x0008 8
R1 x0004 4
R2 x0004 4
R3 x0008 8

ADTN    LD R4 CONVERT   ; Load -30 FFD0 into register 4
        GETC            ; Get charicter from user
        ADD R1, R0, R4  ; store the number in R1 after adding the neg ascii 30
        GETC            ; Get 2nd charicter
        ADD R2, R0, R4  ; Store number in R2 after adding neg ascii 30
        LEA R0, ADDMSG  ; Load into R0 message "The sum of the 2 numbers is "
        PUTS            ; Display message
        ADD R0, R1, R2  ; Add R1 and R2 and store in R0
        TRAP x21        ; Output total

一切看起来都不错,但出于某种原因,它提出了要点。我将TRAP x21更改为PUTS,这也不起作用

1 个答案:

答案 0 :(得分:2)

据我了解,TRAP x21使用R0中给出的ASCII码输出字符。由于您在R0中有一个值为0..9的数字,因此需要向其添加'0'(0x30)以将其转换为范围' 0'中的字符。 。' 9'