Game Boy上的CP指令中进位标志的行为是什么?

11
《Game Boy CPU Manual》第87页中,声称CP n指令在没有借位时设置进位标志,并且这意味着A < n,但这似乎与自身矛盾,因为当A > n时设置进位标志。
例如:如果A=0B=1,则CP BSUB A, B一样设置标志,即 0 - 1。这变成了 0 + 255 = 255,而进位标志未设置,即使A < B也是如此。
我在其他Z80文档中也遇到了同样的问题,因此我不认为这是一个错别字。
我是否误解了借位和SUB的工作方式或者还有其他问题?在标志方面,SUB是否等同于使用二进制补码的ADD
1个回答

14

《GameBoy CPU手册》有误。 SUBSBCCP在借位时设置进位标志。如果执行SUB/SBC/CP A,n,则当n > A时设置进位标志,否则不设置。

这与Z-80(和8080)的操作一致。同时,MAME和MESS以相同方式实现进位。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接