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