Hola!
A partir del archivo .hex, podrás ver lo que va grabado en la memoria de programa del micro, es decir el programa que has escrito. De ninguna manera podrás saber el valor de algún registro (memoria RAM) por medio del .hex.
Hace muchos años me había hecho un emulador de EEPROM; cargaba desde el LPT una memoria RAM con el programa que quería hacer correr en un 8031, luego con un interruptor dejaba el control de la RAM en manos del micro y emulaba la ROM. El programa lo había escrito en Turbo Pascal (la era del DOS...), y lo que hacía era sacar del .hex los datos y las direcciones e ir escribiendo estas en la RAM, funcionaba...
De esto hace ya mucho tiempo, y ya no recuerdo exactamente... pero recuerdo que había escrito programas muy sencillos, los compilaba, y luego me ponía a analizar el .hex; no me llevó mucho tiempo ni trabajo desmenuzarlos.
Veamos, tengo un .hex abierto con un editor de texto
Cada línea empieza con ":", ya empezamos bien
Luego tienes dos digitos (estan en hexadecimal), si te pones a ver representa la cantidad de bytes de datos que hay en esa línea. Ahora vamos al final de la línea, tomamos los dos últimos dígitos, y los tiramos a la basura (son como un CRC, nunca los usé). Como sabemos la cantidad de bytes que hay en esa línea, volvemos desde el final hacia el principio, contando grupos de 2 dígitos (cada dos dígitos representan un byte) hasta completar la cantidad de bytes. Ahora te encuentras con que te sobran algunos dígitos, a ver... seguramente 6! Estos 6 dígitos no es otra cosa que la dirección del primer byte de datos que aparece en esa línea. Ya está, ya tienes todo lo que necesitas!
Para saber que se terminó el archivo .hex, verás que todos en la última línea tienen "0" bytes, y los dos últimos dígitos (el CRC) son "FF"
Si no me crees, imprime un pequeño .hex en papel, y prueba cada línea usando un lápiz y marcando...
Bueno, ahora a disfrutar del fín de semana!