IntelはYASMがお墨付きだしMASMなんて使わないに越したことはないけど。

ちなみにNASMは色々腐ってるので使用禁止レベル。
たとえば、コード上でalignマクロを使うと、VEXが常に3バイトだと仮定して詰め物をするんだよね

align 16
 vxorps ymm0, ymm0, ymm0
 vxorps ymm1, ymm1, ymm1
 vxorps ymm2, ymm2, ymm2
 vxorps ymm3, ymm3, ymm3
align 16 ;; ←ここが問題