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=0B=1CP B 将标志设置为 SUB A, B,即 0 - 1。这变成 0 + 255 = 255 和进位标志未设置,即使 A < B

我在其他 Z80 文档中也遇到过同样的问题,所以我认为这不是错字。

我是不是误解了 borrow 和 SUB 是如何工作的,还是有其他事情发生了?就标志而言,SUB 不等于 ADD 的二进制补码吗?

GameBoy CPU 手册将其倒退。 SUBSBCCP都在有借位时设置进位标志。如果 SUB/SBC/CP A,n 被执行然后进位被设置如果 n > A 否则它是清楚的。

这与 Z-80(和 8080)操作一致。以及 MAME 和 MESS 工具携带 the same way.