LC-3,LDI没有得到正确的地址?

时间:2017-08-09 04:58:36

标签: lc3

下面我的代码应该只是打印一个提示,但它会打印出一堆看起来很像的字符。我知道我做错了什么?

代码:

startPrompt .STRINGZ "Enter 'E' to encrpyt, 'D' to decrpyt, X to quit\n" 

startPromptAddress .FILL startPrompt 

LDI R0, startPromptAddress

PUTS

1 个答案:

答案 0 :(得分:0)

我想你想要LEA,而不是LDI。

LEA使用LABEL的ADDRESS加载寄存器(不是其内容!)。通常与.STRINGZ和PUTS一起使用来打印字符串。

LDI获取存储在LABEL(或偏移量)的地址,然后在THAT地址获取VALUE(这是LDI的间接" i"部分。)

这里有一个应该在典型的LC3模拟器中运行的完整代码(我使用了lc3tutor.org上的一个来验证:

---------------在这里剪切---------------

.ORIG x3000

startPrompt .STRINGZ"输入' E'加密,' D'去掉,X要退出\ n"

LEA R0,startPrompt;将地址加载到' startPrompt'进入R0

使;打印字符从R0开始并一直持续到达到空字符(当您使用.STRINGZ指令时自动部分内存初始化。)

.END

--------------在这里切换---------------

希望这有帮助

杰夫