我目前正在使用NASM elf64 x64构建一个汇编程序,它将告诉输入的年份是否为闰年。目前,我把这个年份硬编码为1986年,但是在最终版本中,它应该采用命令行参数。闰年NASM汇编程序
但是,我一直得到一个浮点错误,我不知道它来自哪里。
global main
extern puts
section .text
main:
mov rax, year
cwd
mov rcx, 400
div rcx
test rdx, rdx
jz _is_leap
mov rax, year
cwd
mov rcx, 100
div rcx
test rdx, rdx
jz _no_leap
mov rax, year
test rax, 3
jz _is_leap
year
dq 1986, 10, 0
_no_leap:
db "This is NOT a leap year", 10, 0 ;print out is not a leap year
jmp _after
_is_leap:
db "This is a leap year", 10, 0 ;print is a leap year
jmp _after
_after:
ret
预先感谢您
出于好奇,一年后的“,10,0”是什么? –
'cwd'不会做你认为它做的事。您应该简单地将'rdx'归零。正如Matti所说,不要跳入数据:) – Jester
@MattiVirkkunen在印象之下,完成一个“db”语句是必要的 – Jeremy