我正在使用McGraw-Hill的LC3模拟器来处理一些LC3汇编代码。出于某种原因,无论我如何处理我的代码,它都会继续通过我的.END调用并最终更改我的寄存器。我错过了什么吗?
最近的代码:
.ORIG x3000
BR MAIN
;;value to square
SquareVal .FILL x04
MAIN
LD R1, SquareVal
AND R0, R0, #0
ADD R0, R0, R1
AND R3, R3, #0
LD R3, SquareVal
BR SQUARE_CONT
SQUARE_VAL
ADD R0, R0, R1
BR SQUARE_CONT
SQUARE_CONT
ADD R3, R3, #-1
BRp SQUARE_VAL
HALT
.END
答案 0 :(得分:1)
首先确保您的模拟器已加载操作系统代码。 HALT
是系统陷阱,因此需要操作系统。此外,这也意味着OS处理程序将更改您的寄存器。如果你不能忍受,你可以在用户模式(STOP: BR STOP
)
.END
仅表示源文件的结尾,它对执行没有影响。