我正在制作一个 6502 模拟器(之后我将模拟它周围的其他 NES 组件以拥有一个功能齐全的 NES 模拟器)并且我遇到了条件分支指令(相对)。现在,我想知道的是,该字节被认为是保存为二进制补码还是常规的负字节?这就是我的意思:
在 6502 个文档之一(当然是非官方的)中给出了这个例子:
BEQ $A7 ;Branch-on-equal with value 0xA7
$F0 $A7 ;Translation into hex
在文档中,它说0xA7应该被视为-39,并表示如下:
1 0 1 0 0 1 1 1 ;-39 dec
如果第 7 位(从 0 开始)为 0,则为 39:
0 0 1 0 0 1 1 1 ;39 dec
我想知道,这个文件是否正确,或者我应该使用二进制补码,这意味着:
1 0 1 0 0 1 1 1
实际上是-89?
我问这个是因为我正在用 Java 编写模拟器,并且字节被解释为二进制补码,而且我在很多指令中都看到了这种方式,现在我感到困惑。