Game Boy 上 CP 的进位标志的行为是什么?
What is the behavior of the carry flag for CP on a Game Boy?
在the Game Boy CPU Manual的第87页上声称CP n
指令在没有借位时设置进位标志,这意味着A < n
。这似乎与自身冲突,因为在 A > n
.
时设置了进位标志
一个例子:如果 A=0
和 B=1
,CP B
将标志设置为 SUB A, B
,即 0 - 1。这变成 0 + 255 = 255 和进位标志未设置,即使 A < B
。
我在其他 Z80 文档中也遇到过同样的问题,所以我认为这不是错字。
我是不是误解了 borrow 和 SUB
是如何工作的,还是有其他事情发生了?就标志而言,SUB
不等于 ADD
的二进制补码吗?
GameBoy CPU 手册将其倒退。 SUB
、SBC
和CP
都在有借位时设置进位标志。如果 SUB/SBC/CP A,n
被执行然后进位被设置如果 n > A
否则它是清楚的。
这与 Z-80(和 8080)操作一致。以及 MAME 和 MESS 工具携带 the same way.
在the Game Boy CPU Manual的第87页上声称CP n
指令在没有借位时设置进位标志,这意味着A < n
。这似乎与自身冲突,因为在 A > n
.
一个例子:如果 A=0
和 B=1
,CP B
将标志设置为 SUB A, B
,即 0 - 1。这变成 0 + 255 = 255 和进位标志未设置,即使 A < B
。
我在其他 Z80 文档中也遇到过同样的问题,所以我认为这不是错字。
我是不是误解了 borrow 和 SUB
是如何工作的,还是有其他事情发生了?就标志而言,SUB
不等于 ADD
的二进制补码吗?
GameBoy CPU 手册将其倒退。 SUB
、SBC
和CP
都在有借位时设置进位标志。如果 SUB/SBC/CP A,n
被执行然后进位被设置如果 n > A
否则它是清楚的。
这与 Z-80(和 8080)操作一致。以及 MAME 和 MESS 工具携带 the same way.