global _start
section .data
hello db 'Hello World!',0dh
newline db 0dh
hlen equ $ - hello
outp dw 0
section .text
_start:cmp edx,edx
mov eax,4
mov ebx,1
mov ecx,hello
mov edx,hlen + 1
int 80h
mov eax,10
push eax
call func
add eax,48
mov [outp],eax
mov eax,4
mov ebx,1
mov ecx,outp
mov edx,1
int 80h
cmp edx,edx
jmp exit
%define FIB_O dword [ebp-4]
%define FIB_N dword [ebp-8]
%define FIB_PRINT dword [ebp-12]
%define FIB_LIMIT dword [ebp+8]
func:
enter 12,0
mov FIB_O,1
mov FIB_N,1
loop_fib:mov eax,FIB_N
cmp eax,FIB_LIMIT
jg retfib
mov eax,FIB_N
add eax,FIB_O
mov ebx,FIB_N
mov FIB_O,ebx
mov FIB_N,eax
mov ebx,FIB_O
add ebx,48
mov FIB_PRINT,ebx
mov eax,4
mov ebx,1
mov ecx,FIB_PRINT
mov edx,1
int 80h
jmp loop_fib
retfib:mov eax,FIB_O
leave
ret
exit:
mov eax, 01h ; exit()
xor ebx, ebx ; errno
int 80h
Z2xvYmFsIF9zdGFydAogCnNlY3Rpb24gLmRhdGEKaGVsbG8gZGIgJ0hlbGxvIFdvcmxkIScsMGRoCm5ld2xpbmUgZGIgMGRoCmhsZW4gZXF1ICQgLSBoZWxsbwpvdXRwIGR3IDAKIApzZWN0aW9uIC50ZXh0CiAKX3N0YXJ0OmNtcCBlZHgsZWR4CiAKCW1vdiBlYXgsNAoJbW92IGVieCwxCgltb3YgZWN4LGhlbGxvCgltb3YgZWR4LGhsZW4gKyAxCglpbnQgODBoCgltb3YgZWF4LDEwCglwdXNoIGVheAoJY2FsbCBmdW5jCglhZGQgZWF4LDQ4Cgltb3YgW291dHBdLGVheAoJbW92IGVheCw0IAoJbW92IGVieCwxCgltb3YgZWN4LG91dHAKCW1vdiBlZHgsMQoJaW50IDgwaAogCgljbXAgZWR4LGVkeAoJam1wCQlleGl0CiAKJWRlZmluZSBGSUJfTyBkd29yZCBbZWJwLTRdCiVkZWZpbmUgRklCX04gZHdvcmQgW2VicC04XQolZGVmaW5lIEZJQl9QUklOVCBkd29yZCBbZWJwLTEyXQolZGVmaW5lIEZJQl9MSU1JVCBkd29yZCBbZWJwKzhdCiAKZnVuYzogCiAgZW50ZXIgMTIsMAogIG1vdiBGSUJfTywxCiAgbW92IEZJQl9OLDEKIApsb29wX2ZpYjptb3YgZWF4LEZJQl9OCiAgY21wIGVheCxGSUJfTElNSVQKICBqZyByZXRmaWIKICBtb3YgZWF4LEZJQl9OCiAgYWRkIGVheCxGSUJfTwogIG1vdiBlYngsRklCX04KICBtb3YgRklCX08sZWJ4CiAgbW92IEZJQl9OLGVheAogCiAgbW92IGVieCxGSUJfTwogIGFkZCBlYngsNDgKICBtb3YgRklCX1BSSU5ULGVieAogCgltb3YgZWF4LDQgCgltb3YgZWJ4LDEKCW1vdiBlY3gsRklCX1BSSU5UCgltb3YgZWR4LDEKCWludCA4MGgKIAogIGptcCBsb29wX2ZpYgogCnJldGZpYjptb3YgZWF4LEZJQl9PCmxlYXZlCnJldAogCmV4aXQ6Cgltb3YJCWVheCwgMDFoCQk7IGV4aXQoKQoJeG9yCQllYngsIGVieAkJOyBlcnJubwoJaW50CQk4MGg=