Skip to content

Instantly share code, notes, and snippets.

@rcombs
Created November 23, 2015 03:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rcombs/ee9c3ef2c8038d2daae8 to your computer and use it in GitHub Desktop.
Save rcombs/ee9c3ef2c8038d2daae8 to your computer and use it in GitHub Desktop.
SECTION .data
fizz: db 'Fizz'
buzz: db 'Buzz'
num: db '00'
nl: db 0x0A
SECTION .text
global start
start:
mov rbp, 1
mov r8, 10
mov r9, 3
mov r10, 5
mov r12, 15
lea r13, [fizz wrt rip]
lea r14, [buzz wrt rip]
mov rsp, 4
mov r15, 8
mov rdi, 1 ; fd
.loop:
mov rdx, 2 ; 4 bytes
lea rsi, [num wrt rip]; string
mov rax, rbp
idiv r8b
xor ax, 0x3030
mov [1 + num wrt rip], ah
mov [num wrt rip], al
cmp al, 0x30
lea rax, [1 + num wrt rip]
cmove rdx, rdi
cmove rsi, rax
mov rax, rbp
idiv r9b
test ah, ah
cmove rdx, rsp
cmove rsi, r13
mov rax, rbp
idiv r10b
test ah, ah
cmove rdx, rsp
cmove rsi, r14
mov rax, rbp
idiv r12b
test ah, ah
cmove rdx, r15
cmove rsi, r13
mov rax, 0x2000004 ; write
syscall
mov rax, 0x2000004 ; write
lea rsi, [nl wrt rip]
mov rdx, 1
syscall
inc rbp
cmp rbp, 100
jle .loop
mov rax, 0x2000001 ; _exit
mov rbx, 0 ; return value
syscall
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment