2014-10-20 110 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