If your program is returning the errorlevel you specify, it isn't crashing. If it were crashing, your OS would let you know. (used to be a "gpf" - I think they call it "access violation" now) It is conventional to return an errorlevel of zero if all went well. It may be better to use the C library "exit()" or the API "ExitProcess", but just "ret" should work. This is not true in Linux, where the "_start" label is not "call"ed but "jmp"ed to. There is no return address on the stack, so "ret" won't work!
Now that you've got "hello world" working, try asking your name and "hello uhClem". Then you've got IO and you're on your way!
Best,
Frank