1

我正在使用 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
4

1 回答 1

1

首先确保您的模拟器已加载操作系统代码。HALT是一个系统陷阱,所以它需要操作系统。此外,这也意味着操作系统处理程序将更改您的寄存器。如果你不能忍受,你可以在用户模式下做一个无限循环(STOP: BR STOP

.END仅表示源文件的结束,它对执行没有影响。

于 2012-11-11T13:43:28.887 回答