Exception NASM中的浮点异常

Exception NASM中的浮点异常,exception,assembly,nasm,Exception,Assembly,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 nex

为了便于学习,我正在用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

如果有人能指出我做错了什么,我将不胜感激

代码中有这一行:

div dx
显然,用dx除法是个坏主意,因为dx也是被除数的一部分,而且在除法之前,您已经正确地将dx设置为零。我认为这是一个打字错误,你真的想写

div bx

事实上,这是一个打字错误。谢谢你指出这一点;然而,我注意到一个不同的问题,即没有任何东西可以输出到屏幕上。知道为什么吗?sys_write syscall在输出之前不会将整数转换为字符串。如果要打印整数,必须先将其转换为字符串。