Exception NASM中的浮点异常
为了便于学习,我正在用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
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在输出之前不会将整数转换为字符串。如果要打印整数,必须先将其转换为字符串。