Comparison of MASM-Style Assemblers

There are - at least - 4 assemblers available which (partially) understand MASM syntax:
JWasm compared with Advantages Disadvantages
MASM JWasm is free, no artificial license restrictions, can be used to create binaries for any OS. None.
JWasm's source is open. Hence JWasm is able to run - natively - on Windows, DOS, Linux, FreeBSD and OS/2.
More output formats supported (Bin, ELF).
optionally very small object modules can be created
better support for Open Watcom, for example the register-based calling convention
JWasm is faster than Masm.
TASM JWasm is available. TASM isn't legally available. And LZASM, which is sort of a TASM clone, understands IDEAL mode only. TASM additionally understands IDEAL mode. This was a big advantage compared to MASM v5.1, but compared to MASM v6 syntax there are no benefits anymore.
JWasm has full support for STRUCTs and UNIONs. TASM has severe limitations and bugs in this area.
JWasm supports virtually all more recent MASM features (PROTO, INVOKE, hll directives, ... ), most of which TASM won't understand.
JWasm supports instructions of recent Intel CPUs, TASM is behind.
POASM JWasm is open source None.
JWasm additionally supports output in OMF, ELF and binary format
JWasm supports 16-bit and segmented memory models. POASM understands FLAT only.
Unlike POASM, JWasm is compatible with MASM's implementation of macros.
POASM lacks the ability to create a listing file.
WASM JWasm's macro capabilities are ways better than Wasm's. Wasm's cmdline is more compatible with Open Watcom tools
JWasm fully supports Masm v6 syntax. In Wasm, most of the additions done in Masm v6 are missing.
Besides OMF, JWasm supports COFF, ELF and binary output formats.
JWasm supports 64-bit.