我目前正在使用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