don't forget that any Hex-file is coded in ascii, with an START character ":", 2-char size, 4-char address 2-char reg type, and lastly 2-char checksum... every 16 bytes... (common, could be anything as in 2-char size)
also, the hex file ONLY contains data from CODE section (and eeprom section depending the uc)
...
if you program on assembler, mostly, you control and decide which ram address use, but if you use C or Basic, the compiler decides how and howmuch memory it will use...
if it says 211 Bytes of IDATA, it will not go into a Microcontroller with only 127 Bytes, it can work at first sight, but when it will try to use those higger addresses, it will: rewrite lower addresses, or hang up, or restart by it self...
if you need to put that program in a micro with lower ram, you should compile it for that new micro. if the compiler can re-arrange the memory address and maybe it can fits in... but do not program the hex file directly!!!!!!