Well, I'd be surprised to learn that the "Beep" function is reliably at that address, but if it works, it works.
The only way I can imagine your OS condescending to run your program from console or clickee-clickee is if it's being treated as a .com file - doesn't have the executable header to be anything else. That would mean that, although you've told Nasm "bits 32", the CPU is interpreting it as 16-bit code (as you suspect). Try "ndisasm -b16" vs "ndisasm -b32" to see the difference.
Well... depends on how you assembled and linked it. Perhaps if you linked it into a PE executable... You'd need "global start" and a "start:" label, I think. It would almost certainly crash - unless you know the address where ExitProcess lives, and call it - but you MIGHT hear a beep first...
Best,
Frank