mov eax, 0x01
mov ecx, 0x02
div ecx ; Divide AX/CX, saves remainder in DX
cmp dx, 0
je OddNumber
int 80h
當我嘗試分1/2時,而不是去標記OddNumber,它返回「浮點異常」。我知道1/2是一個浮點數,但我該如何處理呢?謝謝。裝配部門和浮點
GDB說:「編程接收信號SIGFPE,算術異常。」順便一提。
mov eax, 0x01
mov ecx, 0x02
div ecx ; Divide AX/CX, saves remainder in DX
cmp dx, 0
je OddNumber
int 80h
當我嘗試分1/2時,而不是去標記OddNumber,它返回「浮點異常」。我知道1/2是一個浮點數,但我該如何處理呢?謝謝。裝配部門和浮點
GDB說:「編程接收信號SIGFPE,算術異常。」順便一提。
您需要零edx
調用div ecx
之前。當使用32位除數(例如ecx
)時,div
將edx:eax
中的64位值除以其參數,因此如果edx
中存在垃圾,則它將被視爲分紅的一部分。
在div
之後,您可能要比較edx
,而不僅僅是dx
。
您的回答似乎涵蓋在此floating point exception may mean division by 0後。你可以看看edx之前的東西嗎?