Ich arbeite derzeit an der Erstellung eines Assembly-Programms mit NASM elf64 x64, die zeigen wird, ob ein eingegebenes Jahr ein Schaltjahr ist oder nicht. Zur Zeit habe ich das Jahr als 1986 fest programmiert, aber in der endgültigen Version sollte es ein Befehlszeilenargument enthalten.Schaltjahr NASM Assembly Programm
Jedoch. Ich bekomme immer einen Gleitkommafehler, von dem ich nicht weiß, woher er kommt.
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
Vielen Dank im Voraus
Nur aus Neugier was ist das ", 10, 0" nach dem Jahr für? –
'cwd' tut nicht, was Sie denken, dass es tut. Sie sollten stattdessen einfach "rdx" auf Null setzen. Und wie Matti sagte, spring nicht in Daten :) – Jester
@MattiVirkkunen War unter dem Eindruck, die notwendig waren, um eine "db" Anweisung abzuschließen – Jeremy