global _start
section .data
hello db 'Hello World!'
space db ' '
hlen equ $ - hello
outp dw 0
section .text
_start:cmp edx,edx
mov eax,4
mov ebx,1
mov ecx,hello
mov edx,hlen
int 80h
mov eax,10
push eax
call func
add eax,48
mov [outp],eax
mov eax,4
mov ebx,1
mov ecx,space
mov edx,1
int 80h
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,0
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 [outp],ebx
mov eax,4
mov ebx,1
mov ecx,outp
mov edx,1
int 80h
mov eax,4
mov ebx,1
mov ecx,space
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
Z2xvYmFsIF9zdGFydAogCnNlY3Rpb24gLmRhdGEKaGVsbG8gZGIgJ0hlbGxvIFdvcmxkIScKc3BhY2UgZGIgJyAnCgpobGVuIGVxdSAkIC0gaGVsbG8Kb3V0cCBkdyAwCiAKc2VjdGlvbiAudGV4dAogCl9zdGFydDpjbXAgZWR4LGVkeAogCgltb3YgZWF4LDQKCW1vdiBlYngsMQoJbW92IGVjeCxoZWxsbwoJbW92IGVkeCxobGVuCglpbnQgODBoCgltb3YgZWF4LDEwCglwdXNoIGVheAoJY2FsbCBmdW5jCglhZGQgZWF4LDQ4Cgltb3YgW291dHBdLGVheAoJCgltb3YgZWF4LDQgCiAgbW92IGVieCwxCiAgbW92IGVjeCxzcGFjZQogIG1vdiBlZHgsMQogIGludCA4MGgKICAKCW1vdiBlYXgsNCAKCW1vdiBlYngsMQoJbW92IGVjeCxvdXRwCgltb3YgZWR4LDEKCWludCA4MGgKIAoJY21wIGVkeCxlZHgKCWptcAkJZXhpdAogCiVkZWZpbmUgRklCX08gZHdvcmQgW2VicC00XQolZGVmaW5lIEZJQl9OIGR3b3JkIFtlYnAtOF0KJWRlZmluZSBGSUJfUFJJTlQgZHdvcmQgW2VicC0xMl0KJWRlZmluZSBGSUJfTElNSVQgZHdvcmQgW2VicCs4XQogCmZ1bmM6IAogIGVudGVyIDEyLDAKICBtb3YgRklCX08sMAogIG1vdiBGSUJfTiwxCiAKbG9vcF9maWI6bW92IGVheCxGSUJfTgogIGNtcCBlYXgsRklCX0xJTUlUCiAgamcgcmV0ZmliCiAgbW92IGVheCxGSUJfTgogIGFkZCBlYXgsRklCX08KICBtb3YgZWJ4LEZJQl9OCiAgbW92IEZJQl9PLGVieAogIG1vdiBGSUJfTixlYXgKIAogIG1vdiBlYngsRklCX08KICBhZGQgZWJ4LDQ4CiAgbW92IFtvdXRwXSxlYngKIAogIG1vdiBlYXgsNCAKICBtb3YgZWJ4LDEKICBtb3YgZWN4LG91dHAKICBtb3YgZWR4LDEKICBpbnQgODBoCiAgCiAgbW92IGVheCw0IAogIG1vdiBlYngsMQogIG1vdiBlY3gsc3BhY2UKICBtb3YgZWR4LDEKICBpbnQgODBoCiAKICBqbXAgbG9vcF9maWIKIApyZXRmaWI6bW92IGVheCxGSUJfTwpsZWF2ZQpyZXQKIApleGl0OgoJbW92CQllYXgsIDAxaAkJOyBleGl0KCkKCXhvcgkJZWJ4LCBlYngJCTsgZXJybm8KCWludAkJODBo