2014-10-20 117 views
0

爲了學習的目的,我正在爲nasm編寫一個小整除程序,但每當我嘗試運行時都會收到「浮點異常」。下面是代碼:NASM中的浮點數異常

segment .data 
x dw 7 
y dw 2 

segment .bss 
num resb 2 
segment .text 
global _start 
_start: 
mov cx, 1 
mov bx, 0 

label1: 
mov ax, cx 
xor bx, bx 
xor edx, edx 
mov bx, word [x] 
div bx 
cmp edx, 0 
jne next 
mov ax, cx 
xor bx, bx 
xor edx, edx 
mov bx, word [y] 
div dx 
cmp edx, 0 
jne next 

mov [num], cx 

mov eax, 4 
mov ebx, 1 
mov ecx, num 
mov edx, 2 
int 80h 

add bx, 1 
next: 
add cx, 1 
cmp cx, 100 
jle label1 

exit: 
mov eax, 1 
xor ebx, ebx 
int 80h 

我將不勝感激,如果有人能指出我在做什麼錯了!

回答

0

你有你的這行代碼:

div dx 

通過dx顯然將是自dx一個壞主意,也就是紅利的一部分,你已經正確設置dx爲零之前師。我認爲這是一個錯字,你真的打算寫

div bx 
+0

確實,這是一個錯字。謝謝你指出它;但是我注意到了一個不同的問題,即沒有任何東西獲得輸出到屏幕上。任何想法,爲什麼? – 2014-10-20 05:22:19

+0

'sys_write'系統調用在輸出之前不會將整數轉換爲字符串。如果你想打印一個整數,你必須先將它轉換爲一個字符串。 – Michael 2014-10-20 05:58:41