; FILE "call1.c" extern foo, printf SECTION .rodata _LC0: db '%d', 10, 0 SECTION .text GLOBAL proc proc: push ebp ; set up stack frame mov ebp,esp sub esp,24 mov dword [ebp-4],19 ; x = 19 mov eax, [ebp-4] ; pushes x on the stack mov [esp],eax call foo ; calls foo(x) ; mov [esp+4],eax ; stores return value in stack mov [esp], dword _LC0 call printf leave ; take down stack frame ret GLOBAL main main: lea ecx, [esp+4] and esp,-16 push dword [ecx-4] push ebp mov ebp,esp push ecx sub esp,4 call proc add esp,4 pop ecx pop ebp lea esp, [ecx-4] ret