【发布时间】:2018-03-02 14:17:11
【问题描述】:
我编写了一个 Z80 反汇编程序,可以从我的 SBC 中的 ROM 运行。我需要做的最后一件事(除了尚未发现的错误)是转换相对地址并将它们作为绝对地址输出,这样当反汇编程序遇到五个 JR 操作码变体之一时,它会显示绝对地址JR操作码指向。
JR 操作码变体使用 8 位偏移值来告诉 Z80 跳转到内存中的哪个位置。偏移量是单个有符号 (-128 127) 字节,我需要将其添加到 HL 寄存器中的当前内存位置以获得绝对地址。
不过,我的大脑似乎遇到了严重的语法错误,甚至可能被零除,因为我一生都无法弄清楚如何将 8 位有符号(或 2 的补码)字节添加到16 位寄存器获取绝对地址。已经搜索了互联网,没有答案。
任何人都可以提出解决方案或指出正确的方向吗?
【问题讨论】:
-
第一次谷歌点击:wikiti.brandonw.net/…
-
符号扩展到 16 位,然后照常进行添加。
-
HansPassant,我已经看过该页面,但不明白任何示例如何应用于我的特定问题。另一方面,@Jester 提供了一些有用的信息。
-
@Jester - 完美,效果很好。为什么不将其作为答案提交,我可以相应地标记它?
-
hmm 在那个页面上我看到了一个如何将符号扩展到 16 位的示例