I use TASM, MASM and NASM. The only one I stay away from is that blasted AT&T assembly syntax used in DJGPP. NASM and DJGPP can get along anyways so using AT&T for inline asm has become a problem of the past.
TASM is very good for creating functions because of the ARGS and LOCAL keywords. NASM is not so straightforward and you must push and pop everything off the stack yourself. I like all the assemblers but I must admit I use NASM more than the others.
TASM and MASM also do some crazy stuff with their millions of macros - NASM is pretty much what you see is what you get in most instances.