【发布时间】:2013-05-30 21:09:38
【问题描述】:
我正在制作一个 6502 仿真器,但在开始(实现 ADC 操作)时我已经被卡住了(或者我认为至少是卡住了)。问题是我必须确定是否有进位或溢出。问题是,在我的实现中,我无法真正掌握它们之间的区别。我知道进位是在操作后存在第 9 位时,并且我知道当结果大于 255 时会发生溢出。这不是确定进位和溢出标志是一回事吗?
if(result > 255) {
carry = 1;
overflow = 1;
} else {
carry = 0;
overflow = 0;
}
这不正确吗?如果不是,什么是正确的,为什么?
【问题讨论】:
-
谢谢。因为暂时没时间细读,所以就略读了一遍,这就是我所了解的。基本上,我对进位的看法是正确的。如果结果高于 255,则有进位。当有加法并且数字为负数时,或者有减法并且数字为正数时,就会出现溢出(当使用 8 位有符号字节时)。这是正确的,还是我错过了什么?无论如何,谢谢,我明天会进一步研究。
-
IMO,如果您没有时间详细阅读它,那么您就没有时间对模拟器进行编程。模拟器就是细节,既繁琐又耗时,没有什么大捷径。
-
别担心。当我问这个问题并得到你的答复时,就像午夜一样,即我只是在睡觉前浏览了这篇文章。我确实有时间,尤其是因为暑假快到了,但是,是的,我刚刚提到这一点是因为我即将离开电脑。
标签: java emulation flags 6502 carryflag