java - 简单的猜谜游戏错误

标签 java debugging lc3

好的,首先这是程序的描述:该程序将模拟一个简单的猜谜游戏。猜谜游戏的答案永远是6。 程序将不断要求用户猜测 0 到 9 之间的数字。用户通过键盘输入猜测值。 如果猜测值大于6;程序应该输出: 太大。 如果猜测值小于6;程序应该输出: 太小。 当用户最终猜对时,程序将输出: 正确的!您进行了 # 次猜测。 其中 # 是用户猜测的次数。 如果经过 9 次猜测,用户仍未正确猜出数字,程序应输出:Game over。正确答案是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

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

最佳答案

该错误指向此行

LEA R0、R3

您的程序试图像标签一样使用寄存器 R3,而汇编器不允许这样做。

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

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

关于java - 简单的猜谜游戏错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34166989/

相关文章:

assembly - lc3 LDR指令和存储的值

java - 为什么IntelliJ的菜单和上下文菜单打开后立即关闭?

java - 如何使用 ANT Build 排除特定的 java 文件夹和 java 文件

java多线程系列任务执行

c# - 最新的 VS Mac 更新导致 Xamarin Android 中的 SetContentView(resourceid) 出现 SIGSEGV

c++ - 当内存对齐问题 (AVX) 不在最小上下文中重现时,如何调试它们?

php - 在大型 PHP 文件中查找缺少的大括号?

java - 紧凑序列化 64 位整数

assembly - LC3 LEA 指令和存储的值