我已经完成了在我的Z80核心上实现ADD A,r组操作码.我对我认为已经钉入的进位和溢出标志有点混淆,但我想把它放到社区检查我是对的.
基本上,从我所看到的,Z80中的ALU并不关心有符号/无符号运算,只是添加了位.这意味着如果将两个8位值相加并由于它们的相加而产生9位值,则将设置进位标志.这包括添加两个负二的补数,例如-20(11101100)和-40(11011000),因为虽然结果是-60(11000100),但结果实际上是9位值1 1100 0100.这肯定意味着如果添加两个负二的补码值,即使没有溢出条件,也会始终设置进位标志 - 我是对的吗?
其次,我决定检测此指令中的溢出,我会将两个操作数的第7位异或,如果结果是10000000,那么肯定没有溢出 - 如果结果是00000000那么可能会有溢出这些符号是相同的,因此我将XOR的第7位与任一操作数的第7位相加,如果结果为10000000,则发生溢出,并设置P/V溢出标志.我也在这儿吗?
对于这样一个令人费解的问题我很抱歉,我很确定我是对的但是在我继续根据这个逻辑进行无数更多指令之前我需要知道.非常感谢.