That's distressing, Jedi. It isn't a deliberate ploy to force you into Linux, honest! Wouldn't hurt ya - you might even like it - but the whole idea of Nasm is to support choices. You wanna write a "hello world" for Windows... this should not be difficult!
I've got some examples that "used to work" (using WriteFile, not WriteConsole). I don't think much of 'em. They use "-f obj" and... Nasm's 32-bit extensions to "-f obj" aren't really very good. I even have some macros - from NaGoA - that will produce an executable with Nasm's "-f bin" and no pesky linker at all! If all else fails, we can revert to that...
One thing I missed in your original code was defining STDOUTPUTHANDLE as -11h, not -11. That could keep it from working! Your "windows.inc" may already define it - try just using it.
The string wants to be "db" not "dd". The worst I can see happening from that is just getting the 'h'.
You don't want the "ret" in there after the call to WriteConsole/WriteFile (you've tried both, right?), but as I recall, you can "ret" from a Windows program, so it might work. ExitProcess is better, but at worst it should crash after printing your string.
Same with not pushing a parameter to ExitProcess - any problem should come later...
My real uncertainty is the command line to GoLink. I thought "/entry start" which Gunner confirms. I guessed "/subsystem", but that was from Alink or some other linker, I guess. Gunner says just "/console". Gunner also says "/mix" - I don't know what that does (RTFM, if all else fails). Gunner also says "@imports.inc"... Something that comes with GoLink? The NASMX package seems to use only "/entry _main" as a command line to GoLink. I would expect GoLink to complain if it doesn't find an entrypoint... maybe it doesn't, or maybe it defaults to "start"...
I'm stumped! This really shouldn't be this hard! Thanks for offering to post your results. We really shouldn't need it at this late date, but apparently we do.
Courage!
Best,
Frank