Vista does suck, but as far as I know, it can assemble NES ROMs.
It's just that assemblers are usually something called "command line programs". This means that they don't have a user interface (with windows, menus, buttons, etc). These have to be called with parameters, then they do their thing, possibly give messages of success or failure, and finally exit.
Nowadays everyone is used to double-clicking. If you double-click a command line program it won't receive any parameters, so it will have nothing to do and will just exit. In the case of assemblers, the most obvious parameter they need is the name of the file that contains the program to assemble.
To make your life easier, it's best to place the assembler in some folder that's easy to type, such as "C:\ASM6". Then you have 2 options: open a command prompt and go to the folder where your asm file is and type "c:\ASM6\ASM6 mygame.asm" or something like that. The other (much better) option is to create a file in the same folder as the .ASM file, name it something like "assemble.bat" and type the following in it:
Code:
C:\ASM6\ASM6 mygame.asm
pause
This .BAT file can be double-clicked, and it will tell the assembler to assemble your file. The "pause" command is there to prevent the window from closing right away (it will only do so after you press a key), so that you can see whatever text the assembler outputs (messages of success or failure).
EDIT: If you do need to make a virtual machine, VirtualBox is free and is pretty good.