Tag: z80

Z80上的溢出和进位标志

我已经开始在我的Z80内核上实现ADD A和R操作码。 对于我认为已经固定的携带和溢出标志,我有一些疑惑,但是我想把它放到社区来检查我是否正确。 基本上,从我所看到的,Z80中的ALU不关心有符号/无符号操作,它只是增加了一些位。 这意味着如果将两个8位值相加在一起,并且由于它们的相加而产生9位值,则进位标志将被设置。 这包括增加两个负数的二进制补码,例如-20(11101100)和-40(11011000),结果虽然是-60(11000100),结果实际上是一个9位值1 1100 0100.这肯定意味着如果加两个负二进制补码值,即使没有溢出条件,进位标志也会一直置位 – 对吗? 其次,我决定要检测这条指令中的溢出,我将异或操作数的第7位,如果结果是10000000,那么肯定没有溢出 – 如果结果是00000000,那么可能会有溢出这些符号是相同的,因此,我将异或操作数的第7位加上结果的第7位,如果结果是10000000,则发生溢出,并设置P / V溢出标志。 我也在这里吗? 对不起,这样一个复杂的问题,我很确定我是对的,但我需要知道之前,我继续无数更多的指令基于这个逻辑。 非常感谢。