2012-12-09 32 views
0

我想写一个MOS 6502 8位模拟器,以更好地了解CPU。这应该是溢出条件吗?

由于来自this question的大量帮助,我已经实现了我的ADC(带进位)指令。我的输出与问题答案的示例输出完全相同。

问题是,我现在不确定是否有答案中的错误,因为我认为255 + 1会导致进位和溢出(因为255 + 1 = 256,而不是0)。采用上述回答问题的方法,我只得到一个进位,而不是溢出。

这是正确的吗?

回答

2

否。根据链接的答案,溢出标志被设置,当你有溢出与数字签名解释。 (无符号)255 = 0xff =(有符号)-1。 -1 + 1 = 0没有溢出。

+0

这令人沮丧。我正在用这个在线的6502仿真器(http://e-tradition.net/bytes/6502/)测试我的代码,并根据这一点 - 将$ FF添加到$ 01应该导致进位和溢出。不知道现在该相信什么! – Garry

+1

@Garry你应该可以在网上找到Rodnay Zaks的“Programming the 6502”的一个版本。在我的副本(第三版,1980年)第23页上,它说:“...溢出标志通过对位7(符号位)的进位和移出进行异或操作来设置。”如果这使得它更清晰。 –

+1

@Garry我相信模拟器坏了。看到它是'function opADC'的代码,它在同一个案例中设置'fCAR'和'fOVF'。 – zch