Es kommt auch darauf an, was du mit Assembly machen willst. Wenn du komplexere Win32 Programe mit graphischer Benutzeroberfläche schreiben willst, würde ich dir MASM empfehlen, da man mit "invoke" Funktionen direkt mit Parametern aufrufen kann und sie nicht erst auf denStack speichern muss und dann zur Funktion zu springen. Dadurch wird der Code übersichtlicher. Wenn es dir aber darum geht, wie ein Rechner im Detail funktioniert, würde ich dir NASM empfehlen. Bei NASM musst du noch jede API Funktion einzel einbinden etc.
P.S. Falls du NASM verwenden willst um bspw. Win32 Programme zu schreiben, brauchst du noch einen Linker (z.B. ALINK). Bei MASM ist der bereits integriert (Bei den neueren Versionen)