After reading this question and answers, I got the impression, that Linux must be somehow more assembler-friendly than Windows. Weird, because I used to have completely opposite impression before. Is it really that way now, and why?
Regarding which assembler is best, IMHO it doesn't matter. At least while you learning. And even after you complete your learning it won't matter. What does matter is what exactly you are going to learn. And considering the possible information overflow, you want to minimize the volume of the stuff to care about. So, I think it is important to stick to the environment you want to learn about, and pick the learning materials that appeal to you most. And as for the assembler, stick to whatever is taught in the learning materials of your choice. So, if you're interested in x86 assembler for WinApi, choose best tutorials, and stick to the instruments used in the tutorials. No cross-platforming, no VMs, learn exactly what you want to learn. If that's asm basics, just learn the assembler and computer architecture, don't go into WinApi. If that's assembler for Windows, learn assembler for WinApi. Do not touch any other OS if you're not interested in them. And choose whichever assembler is taught in you favourite tutorial. Syntax differences are insignificant anyway.
An yeah, what do you mean by MASM is DOS-based? Currently I have nothing to do with neither Windows nor assembler, but back in the days when I was learning it, I kinda preferred MASM. It was simple, understandable, and the macros where exceptionally useful to me.
PS. Just now searched the web, and found an old tutorial, I used to learn WinApi basics with assembler: http://win32assembly.programminghorizon.com/tutorials.html
. Good old stuff… :)