进位标志未设置。 86 ASM
问题描述:
可能重复:
about assembly CF(Carry) and OF(Overflow) flag进位标志未设置。 86 ASM
我想看看是否增加两个无符号双字后发生矣。
这样的:
add edx, eax ; edx will hold the numeric value
wait ; not really needed
jc bad ; jmp to bad if carry bit is set
jo bad ; jmp to bad if overflow bit is set (Yes for signed)
然而,无论是溢出标志或携带标志相应地设置。出于测试的目的,我确实会增加32位寄存器的值。 (在添加之后,值将环绕)
如何检查两个数字是否相加会导致溢出?
在执行add指令之前,edx和eax的值是什么?如果他们都是0,那么不,我怀疑既没有进位也没有溢出。 – 2012-03-15 03:56:59
@Mike,在问题中我注意到我确保edx和eax中的值足够大,可以引起溢出或携带。但无论如何,进旗不设置。 – Dacto 2012-03-15 04:19:12
删除'wait'。然后查看添加和减去整数以及如何在[本答案](http://stackoverflow.com/a/8037485/968261)中设置进位和溢出相关问题的示例。很可能你的数字太小而不能导致CF = 1或OF = 1。您也可能会混淆读写寄存器(您的edx或eax没有加载您需要的数据,或者由于其他代码错误而无法区分溢出和非溢出情况)。告诉我们更多关于你的代码或者展示它。 – 2012-03-15 05:24:20