Re: HEX to ASM ?
Most of disassemblers were written for the basic 8051 core.
If you compare what differencies are between 8051 and, say, 8751 (8752, ...) you will find out that the latter has added timers, PCA (programmable Counter Array) et cetera and this is reflected in the Special Function Register table ie. new addresses in the SFR memory which are not part of the 8051 core.
Standard 8051 disassembler will not cover all of these added features and therefore will generate some ugly-looking assembler-text file.
So rest is in your hands: you will have to identify new addresses and translate some code lines one-by one by yourself ..