Oh man, this is going to take longer than expected.
I'll try to support MOVSX and MOVZX soon, umm...
Oh yeah, I forgot... byte-sized pointers aren't ready yet! That means BYTE [EAX] or whatever isn't going to work unless you use a define.
Yeah, sorry, not the most helpful stuff, I know.
Hex to ASM is certainly possible. I've seen a z80 ASM code to text "Disassembler", which was a real disassembler, something that took a program and gave you ASM source code, complete with label1, label2, label3... etc.
So, I can probably give you a partial disassembler that can spit out labeled ASM code. As long as your code doesn't use any funky instructions, it'll be fine.
I guess I'll have to trudge through that Intel PDF to see if I can support every instruction eventually...