For anything written from scratch, I would recommend fasm or nasm.
I prefer the latter, because the documentation is better and there's a way to specify target cpu (e.g. 8086) and get errors when instructions aren't compliant.
As someone old enough to have live through it, I always found TASM much better than MASM, in terms of tooling.
In both cases, still much better than traditional UNIX assemblers, desiged to massage C's output as another build stage, than to actually code by hand.
It's a fork of OpenWatcom assembler.