Created
September 7, 2019 08:48
-
-
Save KPCCoiL/77159543a7c3fd77edf4f14706c31d4b to your computer and use it in GitHub Desktop.
nasm fizzbuzz
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
section .data | |
fizz db "Fizz" | |
buzz db "Buzz" | |
newline db 10 | |
section .bss | |
digits resb 32 | |
section .text | |
global _start | |
_start: | |
mov rax, 1 | |
mov r12, 100 | |
call _fizzbuzz | |
mov rax, 60 | |
xor rdi, rdi | |
syscall | |
_nextFB: | |
call _sayNL | |
mov rax, r9 | |
inc rax | |
_fizzbuzz: | |
mov r9, rax | |
cmp rax, r12 | |
je _finishFB | |
mov r8, 0 | |
mov rcx, 3 | |
xor rdx, rdx | |
div rcx | |
mov rsi, fizz | |
cmp rdx, 0 | |
jnz _fizzend | |
call _sayFB | |
mov r8, 1 | |
_fizzend: | |
mov rax, r9 | |
mov rsi, buzz | |
xor rdx, rdx | |
mov rcx, 5 | |
div rcx | |
cmp rdx, 0 | |
jnz _buzzend | |
call _sayFB | |
mov r8, 1 | |
_buzzend: | |
mov rax, r9 | |
cmp r8, 0 | |
jnz _nextFB | |
call _printNum | |
mov rax, r9 | |
jmp _nextFB | |
_finishFB: | |
ret | |
_sayFB: | |
mov rax, 1 | |
mov rdi, 1 | |
mov rdx, 4 | |
syscall | |
ret | |
_sayNL: | |
mov rax, 1 | |
mov rdi, 1 | |
mov rsi, newline | |
mov rdx, 1 | |
syscall | |
ret | |
_initDigits: | |
mov rax, digits | |
mov rbx, rax | |
add rbx, 32 | |
_loopInitDigits: | |
mov [rax], byte 0 | |
inc rax | |
cmp rax, rbx | |
jne _loopInitDigits | |
ret | |
_digitfy: | |
xor rdx, rdx | |
mov rsi, 10 | |
div rsi | |
mov [rbx], dl | |
inc rbx | |
cmp rax, 0 | |
jz _digitfyFin | |
call _digitfy | |
_digitfyFin: | |
ret | |
_printNum: | |
push rax | |
call _initDigits | |
pop rax | |
mov rbx, digits | |
call _digitfy | |
_eachdig: | |
dec rbx | |
call _printDigit | |
cmp rbx, digits | |
jne _eachdig | |
ret | |
_printDigit: | |
add [rbx], byte 48 | |
mov rax, 1 | |
mov rdi, 1 | |
mov rsi, rbx | |
mov rdx, 1 | |
syscall | |
ret |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment