2011-12-27 55 views
5
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,算術異常。」順便一提。

回答

9
  1. 您需要零edx調用div ecx之前。當使用32位除數(例如ecx)時,divedx:eax中的64位值除以其參數,因此如果edx中存在垃圾,則它將被視爲分紅的一部分。

  2. div之後,您可能要比較edx,而不僅僅是dx