Hi Chris,
You are correct, "elf" is a Linux format... and the program, with "int 0x80" in it is for Linux, too. That tutorial doesn't say it's for Linux, but it is. I can see now why people keep finding that code. When I search for "windows assembly tutorial" it is prominantly featured, looks good, and doesn't say it's not for Windows - the "int 80h" is the dead giveaway. It won't work on Windows. I didn't find any good tutorials for Windows assembly! The Iczelion tutorials are the classic... but they use Masm and depend heavily on Masm's built in macros. We can arrange to include such macros, but they hide the inner workings from beginners. I may have Nasm translations of Iczelion's code... somewhere(?).
We don't have a tutorial here, but there are some examples - starting around page 3 or 4 of the example code...
Here's an example of MessageBoxA:
https://forum.nasm.us/index.php?topic=1918.0Here's one using "_printf" (64 bit):
https://forum.nasm.us/index.php?topic=1751.0There are a number of excellent examples from "encryptor256", but they tend to be a little advanced for beginners.
If you start with the MessageBox code, and the ld command line from your first "guide", you might have some success. I don't know where MinGW puts the libraries, and you may need them (kernel32.lib, user32.lib, etc.). GoLink manages it without libraries, if you want to use that instead of ld. Using gcc - even if you have no C code to compile - has the advantage that gcc knows what to tell ld, if you want to try that.
Dr. Paul Carter's tutorial is good. He hides the interface with the OS behind the C library. This has the advantage that you can use it with any OS, but the disadvantage that it hides the details of interfacing with the OS, if that's what you were interested in... http:/www.drpaulcarter.com/pcasm
Good luck, Chris - I have a feeling you may need it!
Best,
Frank