title: Function Parameters in ASM x86 FASM
body: <p>How do I pass parameters to a function in Assembly?
  I did push Last Param, push Second Param, push First Param..</p>
  
  <p>But I cannot access the parameters within <code>Meh</code> Function.. What I'm doing crashes the program..</p>
  
  <pre><code>format PE console                                ;Format PE OUT GUI 4.0
  entry main
  
  include 'macro/import32.inc'
  
  section '.idata' import data readable           ;Import Section.
  library msvcrt,'msvcrt.dll'
  import msvcrt, printf, 'printf',\
  exit,'exit', getchar, 'getchar'
  
  section '.data' data readable writeable         ;Constants/Static Section.
  InitialValue dd 0
  
  section '.code' code readable executable
  main:    
     push 67
     push 66
     push 65
     call MEH
  
     call [getchar]
     mov eax, 0
     ret 0
  
  MEH:
     push ebx
     mov ebp, esp
     sub esp, 0
  
     mov eax, [ebp + 8]   ; Trying to print first parameter..
     push eax
     call [printf]
     add esp, eax
  
     mov esp, ebp
     pop ebx
  ret
  </code></pre>