下面我的代码应该只是打印一个提示,但它会打印出一堆看起来很像的字符。我知道我做错了什么?
代码:
startPrompt .STRINGZ "Enter 'E' to encrpyt, 'D' to decrpyt, X to quit\n"
startPromptAddress .FILL startPrompt
LDI R0, startPromptAddress
PUTS
答案 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
--------------在这里切换---------------
希望这有帮助
杰夫