void sub(){
  FARPROC exitprocess = GetProcAddress( GetModuleHandleA("kernel32"), "ExitProcess");
  __asm{
    mov ecx,exitprocess
    mov [ebp+4],ecx
  }
}
int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
  sub();
  OutputDebugString("来るな!\r\n");
  return 0;
}
ASMをおぼえはじめて遊んでいます。
上のプログラムで、「sub()が戻ったときにExitProcessの方に行ってしまう」のを予想したのに、
何も無く終わってしまいます。なんでですか?