2011-12-27 37 views
5
mov eax, 0x01 
    mov ecx, 0x02 
    div ecx     ; Divide AX/CX, saves remainder in DX 
    cmp dx, 0 
    je OddNumber 
    int 80h 

Khi tôi cố gắng chia 1/2, thay vì chuyển sang nhãn OddNumber, nó sẽ trả về "Ngoại lệ dấu chấm động". Tôi biết 1/2 là một phao, nhưng làm thế nào tôi có thể xử lý nó? Cảm ơn.Bộ phận lắp ráp và điểm nổi

GDB nói "Chương trình nhận tín hiệu SIGFPE, Ngoại lệ số học". nhân tiện.

Trả lời

9
  1. Bạn cần không edx trước khi gọi div ecx. Khi sử dụng ước số 32 bit (ví dụ: ecx), div chia giá trị 64 bit trong edx:eax theo đối số của nó, vì vậy nếu có rác trong edx, số tiền này được coi là một phần của cổ tức.

  2. Sau div, bạn có thể muốn so sánh edx, không chỉ dx.