我正在尝试将十六进制值FF存储在寄存器中,但是出现错误“立即'xFF'超出范围”
如果常量小得多(即在-16 .. + 15十进制范围内,又称x-10到xF),则可以先清除一个寄存器,然后以立即数形式使用ADD
。但是您的常数太大了。 (这将需要两条指令,具体取决于您的较大代码序列。)
否则,LC-3使用基于(相对于PC的)内存的寻址模式-没有立即加载!您必须将值xFF存储在内存中,给它一个标签,然后从内存中LD
(加载)它。
LD R3, labelFF
...
labelFF, .fill xFF
当然,这是假设您要使用16位常数0x00FF。如果您想要-1(0xFFFF),将有更多选择,因为这是一个较小的负值,并且立即数被符号扩展。
仍然,带有标签的LD
是将常数加载到LC-3的寄存器中的正确方法。