Hi Noah,
Ndisasm! Oh, you said a "good" disassembler. :) Well, ndisasm is "good" enough, I guess, but it doesn't try to be very "clever". You have to tell it every stinkin' thing - on the command line. Once you've got that right, it's fine.
Agner Fog's "objconv":
http://www.agner.org/optimize/#objconv... much more "clever". Intended to convert object files from one format to another, one of the "format"s is disassembly. "-fnasm"... or Masm syntax, if you like...
One issue: it's output is "filename.asm". If you've got "myfile.asm", assembled and linked into "myfile" or "myfile.exe", objconv will overwrite your source with its output. Copy your original to "myfile.nas" or rename the executable if this is a problem. Disassembling the output from "myfile.c" is no problem.
I really like it a lot!
Best,
Frank