简单的猜谜游戏错误

时间:2015-12-08 22:08:29

标签: java debugging lc3

好的,首先这是程序的描述:该程序将模拟一个简单的猜谜游戏。猜谜游戏的答案总是6。 程序将不断要求用户猜测0到9之间的数字。用户从键盘输入猜测。 如果猜测大于6;该程序应输出: 太大。 如果猜测小于6;该程序应输出: 太小。 当用户最终猜对时,程序将输出: 正确!你接受了#猜测。 其中#是用户猜测的次数。 如果在9次猜测之后,用户没有正确猜到该号码,程序应输出:游戏结束。正确答案是6。 您无需检查无效输入(字母字符,标点符号等)。

这是我收到的错误:第43行:预期的标签或9位签名的PC偏移,但发现' R3'代替。 这是我的代码:

.ORIG X3000

LD R2, SIX
LD R3, COUNTER

IN
ADD R1, R0, #0
ADD R0, R1, R2
BRn TOOLOW
BRp TOOHIGH
BRz GG

AGAIN:
IN
ADD R1, R0, #0
ADD R0, R1, R2
BRn TOOLOW
BRp TOOHIGH
BRz GG

TOOLOW:
LEA R0, LOW
PUTS
ADD R1, R0, #0
ADD R3, R3, #1
ADD R0, R3, #-9
BRn AGAIN
BRz LOSE

TOOHIGH:
LEA R0, HIGH
PUTS
ADD R1, R0, #0
ADD R3, R3, #1
ADD R0, R3, #-9
BRn AGAIN
BRz LOSE

GG:
ADD R3, R3, #1
LEA R0, WIN
PUTS
LEA R0, R3
PUTS
LEA R0, WIN2
PUTS
HALT

LOSE:
LEA R0, GAMEOVER 
PUTS
HALT

SIX .FILL #-54
COUNTER .FILL #0
LOW .STRINGZ "Too small."
HIGH .STRINGZ "Too big."
WIN .STRINGZ "Correct! You took "
WIN2 .STRINGZ " guesses."
GAMEOVER .STRINGZ "Game over. Correct answer is 6."

.END

那么如何修复错误?提前谢谢。

1 个答案:

答案 0 :(得分:1)

该错误指向此行

LEA R0, R3

您的程序正在尝试使用寄存器R3作为标签,汇编程序将不允许它。

如果要将存储在R3中的值移动到R0,则需要执行以下操作:

AND R3, R3, #0    ; clear R3
ADD R3, R3, R0    ; store the value in R0 into R3