1

我一直在制作 GameBoy 模拟器,目前正在通过位于此处的测试 ROM 运行它。

其中一项测试cpu_instrs.zip如下:

set_test 5,"POP AF"
ld   bc,$1200
.loop:
push bc
pop  af
push af
pop  de
ld   a,c
and  $F0
cp   e
jp   nz,test_failed
inc  b
inc  c
jr   nz,.loop

据我了解,这个测试似乎总是会失败。在第一个循环中,不会设置零标志inc c,然后代码最终会跳转到,test_failed因为在第二个循环中,e它将等于 1 并且a将为 0。

我在这里想念什么?

4

1 回答 1

7

事实证明,标志寄存器上的最低有效半字节始终为零,并且向其写入非零值不应更改它。

于 2014-04-13T00:35:11.973 回答