fork download
  1. global _start
  2.  
  3. section .data
  4. hello db 'Hello World!'
  5. space db ' '
  6. hlen equ $ - hello
  7. outp dw 0
  8.  
  9. section .text
  10.  
  11. _start:cmp edx,edx
  12.  
  13. mov eax,4
  14. mov ebx,1
  15. mov ecx,hello
  16. mov edx,hlen
  17. int 80h
  18. mov eax,10
  19. push eax
  20. call func
  21. add eax,48
  22. mov [outp],eax
  23. mov eax,4
  24. mov ebx,1
  25. mov ecx,outp
  26. mov edx,1
  27. int 80h
  28.  
  29. cmp edx,edx
  30. jmp exit
  31.  
  32. %define FIB_O dword [ebp-4]
  33. %define FIB_N dword [ebp-8]
  34. %define FIB_PRINT dword [ebp-12]
  35. %define FIB_LIMIT dword [ebp+8]
  36.  
  37. func:
  38. enter 12,0
  39. mov FIB_O,0
  40. mov FIB_N,1
  41.  
  42. loop_fib:mov eax,FIB_N
  43. cmp eax,FIB_LIMIT
  44. jg retfib
  45. mov eax,FIB_N
  46. add eax,FIB_O
  47. mov ebx,FIB_N
  48. mov FIB_O,ebx
  49. mov FIB_N,eax
  50.  
  51. mov ebx,FIB_O
  52. add ebx,48
  53. mov [outp],ebx
  54.  
  55. mov eax,4
  56. mov ebx,1
  57. mov ecx,outp
  58. mov edx,1
  59. int 80h
  60.  
  61. mov eax,4
  62. mov ebx,1
  63. mov ecx,space
  64. mov edx,1
  65. int 80h
  66.  
  67. jmp loop_fib
  68.  
  69. retfib:mov eax,FIB_O
  70. leave
  71. ret
  72.  
  73. exit:
  74. mov eax, 01h ; exit()
  75. xor ebx, ebx ; errno
  76. int 80h
Success #stdin #stdout 0.01s 5304KB
stdin
Standard input is empty
stdout
Hello World! 1 1 2 3 5 8 8