首页 > 解决方案 > 有没有办法将 FF 的十六进制值存储在 LC3 的寄存器中

问题描述

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

标签: assemblylc3

解决方案


如果常数小得多(即在 -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 上的寄存器中的正确方法。


推荐阅读