是否可以将FF的十六进制值存储在LC3中的寄存器中

问题描述 投票:0回答:1

我正在尝试将十六进制值FF存储在寄存器中,但是出现错误“立即'xFF'超出范围”

assembly lc3
1个回答
2
投票

如果常量小得多(即在-16 .. + 15十进制范围内,又称x-10到xF),则可以先清除一个寄存器,然后以立即数形式使用ADD。但是您的常数太大了。 (这将需要两条指令,具体取决于您的较大代码序列。)


否则,LC-3使用基于(相对于PC的)内存的寻址模式-没有立即加载!您必须将值xFF存储在内存中,给它一个标签,然后从内存中LD(加载)它。

     LD R3, labelFF
     ...

labelFF, .fill xFF

当然,这是假设您要使用16位常数0x00FF。如果您想要-1(0xFFFF),将有更多选择,因为这是一个较小的负值,并且立即数被符号扩展。

仍然,带有标签的LD是将常数加载到LC-3的寄存器中的正确方法。

© www.soinside.com 2019 - 2024. All rights reserved.