Los ficheros .hex de 8 bits |
|||||||||||||||||||||||||||||||||||
Los ficheros .HEX | |||||||||||||||||||||||||||||||||||
El actual formato .hex fué ideado por Intel para la descripción del código objeto de sus microprocesadores de 8, 16 y 32 bits. Es un formato flexible porque toda la información se representa en ASCII lo que ofrece muchas ventajas: es fácil de representar mediante medios no binarios como hojas impresas o tarjetas perforadas, se puede editar y visualizar desde numerosas aplicaciones y plataformas no especializadas. Estos archivos se pueden ver y modificar prácticamente con cualquier editor de texto. Esta flexibilidad lo convierte en un formato muy utilizado para la descripción del contenido de memorias. Los siguientes apartados pretenden explicar la estructura de los ficheros .hex utilizados en los dispositivos de 8 bits, los cuales son un poco más sencillos que los .hex utilizados en los dispositivos de 16 y 32 bits. Por tanto aquí sólo se describen los registros de datos y los registros de fin de fichero, pues estos son los únicos utilizados en los archivos .hex de 8 bits. Quien quiera saber como funcionan los de 16 y 32 bits puede consultar el documento “Hexadecimal file object specification" de Intel. |
|||||||||||||||||||||||||||||||||||
Estructura general de un fichero .HEX | |||||||||||||||||||||||||||||||||||
Un archivo .HEX se estructura en líneas, cada una de las cuales representa un registro. Cada registro se compone de un conjunto de campos con diferente información en función del tipo de registro que se trate. Existen diferentes tipos de registros, los cuales se pueden combinar indistintamente dentro de un mismo fichero:
|
|||||||||||||||||||||||||||||||||||
Formato general de los registros | |||||||||||||||||||||||||||||||||||
La estructura general de un registro es:
- RECORD MARK - Marca de registro - 1 carácter ASCII codificando el símbolo ":"
Ej: Dado el registro (recordar que los valores están en hexadecimal) “: 0x02 0x00 0x00 0x00 0x07 0xC0 0x37 “ la comprobación del checksum se haría de la siguiente manera: primero se suman todos los bytes desde RECLEN hasta el ultimo campo INFO or DATA : 0x02+0x00+0x00+0x00+0x07+0xCO = 0xC9, a continuación el valor obtenido se suma al valor de checksum: 0xC9+0x37 = 0x1) 0x00. La suma es 0x0 por tanto los dos valores se complementan, lo que indica que no hay ningún error en el registro |
|||||||||||||||||||||||||||||||||||
Formato de los registros de datos | |||||||||||||||||||||||||||||||||||
Estos registros describen el contenido de una porción de memoria: contienen los datos y la dirección donde se han de ubicar estos:
En estos registros el campo RECLEN puede valer hasta FFh, lo que significa que puede contener hasta 255 bytes de datos. El campo LOAD OFFSET contiene la dirección donde se guarda el primer byte de la secuencia de datos contenida en el registro de datos, así la dirección de los diferentes bytes de la secuencia se puede obtener sumando su posición a LOAD OFFSET. A la hora de interpretar la dirección hay que tener en cuenta si se trabaja con archivos .HEX de 8 bits, de 16 bits o de 32 bits ya que en los formatos de 16 o 32 bits LOAD OFFSET sólo da parte de la dirección, la otra parte se obtiene a partir de otros tipos de registros. |
|||||||||||||||||||||||||||||||||||
Formato del registro de fin de fichero |
|||||||||||||||||||||||||||||||||||
Este registro indica el fin del fichero .hex . Los campos de este siempre toman los mismos valores:
|
|||||||||||||||||||||||||||||||||||
Formato del registro de dirección extendida de segmento |
|||||||||||||||||||||||||||||||||||
Se conoce también como registro HEX86 y se utiliza para extender el rango de direcciones. El valor contenido en este tipo de registros se corresponde con los bits del 4 a 19 de la dirección, de modo que a la dirección de los datos de los siguientes registros, se le ha de sumar el valor indicado en el último registro de dirección extendida de segmento. Ej: si el valor del registro de dirección extendida de segmento es 0x2300 y el de un registro de datos que se encuentra a continuación es 0x1356, la dirección absoluta se conseguiría sumando a 0x1356 el valor 0x23000 ( se le añaden 4 bits 0 ).
|
|||||||||||||||||||||||||||||||||||
Resto de registros | |||||||||||||||||||||||||||||||||||
En el caso de quere trabajar con sistemas de 16 o32 bits, el documento “Hexadecimal file object specification” de Intel se puede encontrar la descripción detallada de la estructura y funcionalidad del resto de registros necesarios . |
|||||||||||||||||||||||||||||||||||