-2
可能重複:
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