; Program that demonstrates C-style procedure call and definition .386 .MODEL FLAT ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD .CODE ; start of main program code _start: mov eax, 10 ; Load and push eax ; Push third argument push eax ; Push second argument push eax ; Push first argument call add3nums ; push address of next instruction ; onto the stack, and pass control ; to the address of add3nums add sp, 12 ; Destroy the pushed arguments ; (equivalent to three pops) INVOKE ExitProcess, 0 ; exit with return code 0 PUBLIC _start ; make entry point public add3nums PROC NEAR32 ; Demo proc push ebp ; Preserve base pointer mov ebp, esp ; Load stack into base pointer mov eax, [ebp + 8] ; Get first parameter add eax, [ebp + 12] ; Add second parameter add eax, [ebp + 16] ; Add third parameter pop ebp ; Restore EBP ret ; Return result in EAX add3nums ENDP END ; end of source code