You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

57 lines
867 B

; fizzbuzz.asm
; Prints numbers 1 to 100, however if the number is a multiple of 3 it will print Fizz,
; and if the number is a multiple of 5 it will print Buzz. If the number is a multiple
; of both, it will print FizzBuzz
; Compile with "nasm -f elf64 fizzbuzz.asm && ld fizzbuzz.o -o fizzbuzz"
%include 'macros.asm'
.text:
global _start
_start:
mov rcx,0 ; counter
mov rsi,0 ; fizz check
mov rdi,0 ; buzz check
loop:
inc rcx
check_fizz:
mov rdx,0
mov rax,rcx
mov rbx, 3
div rbx
mov rsi,rdx
cmp rsi,0
jne check_buzz
printStr f
check_buzz:
mov rdx,0
mov rax,rcx
mov rbx, 5
div rbx
mov rdi,rdx
cmp rdi,0
jne check_int
printStr b
check_int:
cmp rsi,0
je cont
cmp rdi,0
je cont
printInt rcx
cont:
printStr n
cmp rcx,99
jle loop
exit 0
.data:
; initialize doubleword msg variable
f db 'Fizz',0x0
b db 'Buzz',0x0
n db 0xA,0x0