For the longest time I used linux for writing my assembly programs and it worked perfectly.

My current PC has windows xp on it and is used for both gaming and for assembly programming.

After reading around a bit on windows programming, I made a simple example:

Code:
global  _WinMain@16 

extern _MessageBoxA@16

section .data

parm1   db      "Program", 10, 0
parm2   db      "Hello World", 10, 0

section .code

_WinMain@16 
        push    0
        push    dword parm1
        push    dword parm2
        push    0
        call    _MessageBoxA@16
        add     esp, 8
        ret 16
It assembles correctly however I have no idea how to link it to an executable.

It only creates an object file once assembled.

Code:
nasm -f win32 program.asm -o program.obj