浮点异常核心转储。我正在使用 64 位汇编。我想我在使用 div 指令时遇到了错误,从我所看到的错误中,(人们似乎在不清除 RDX 时得到它)但是当我使用 xor 函数清除它时,我没有不知道我的代码有什么问题。
section .text
global _start ;must be declared for linker (ld)
_start:
mov rdi,1 ;tell linker entry point
mov rax,rdi
push rax
jmp loop
loop:
pop rax
cmp rax,19
jle test3
mov rax,1;quit
syscall ;quit
test3:
add rdi,1
push rdi
mov rax,rdi
xor rdx,rdx
mov rbx,3
div rbx
cmp rdx,0
je fizz
jmp test5
test5:
mov rax,rdi
xor rdx,rdx
mov rbx,5
div rbx
cmp rdx,0
je buzz
jmp loop
fizz:
mov rdx,5 ;message length
mov rcx,msg ;message to write
mov rbx,1 ;file descriptor (stdout)
mov rax,4 ;system call number (sys_write)
syscall ;call kernel
jmp loop
buzz:
mov rdx,5 ;message length
mov rcx,msg2 ;message to write
mov rbx,1 ;file descriptor (stdout)
mov rax,4 ;system call number (sys_write)
syscall ;call kernel
jmp loop
section .data
msg db 'fizz',10
msg2 db 'buzz',10