La Red de Conocimientos Pedagógicos - Currículum vitae - ¿Qué es HEX?

¿Qué es HEX?

Un archivo Intel Hex es un archivo de texto ASCII que consta de líneas de texto que se ajustan al formato de archivo Intel Hex. En los archivos hexadecimales de Intel, cada línea contiene un registro hexadecimal. Estos registros constan de números codificados en hexadecimal que corresponden a códigos de lenguaje de máquina y/o datos constantes. Los archivos Intel HEX se utilizan comúnmente para transferir programas y datos almacenados en ROM o EPROM. La mayoría de los programadores o emuladores de EPROM utilizan archivos Intel HEX.

Formato de registro

Intel HEX consta de cualquier número de registros hexadecimales. Cada registro contiene cinco campos, organizados en el siguiente formato:

:llaaaatt[dd...]cc

Cada conjunto de letras corresponde a un campo diferente, y cada letra corresponde a Un número codificado en hexadecimal. Cada campo consta de al menos dos dígitos codificados en hexadecimal que forman un byte, como se describe a continuación:

: Cada registro hexadecimal de Intel comienza con dos puntos.

Ll es el campo de longitud de datos, que indica el número de bytes de datos (dd) en el registro.

Aaaa es un campo de dirección, que indica la dirección inicial de los datos en el registro.

Tt es un campo que indica el tipo de registro hexadecimal, que puede ser uno de los siguientes datos:

00-Registro de datos

01 – Registro de fin de archivo

02-Registro de dirección de segmento extendido

04-Registro de dirección lineal extendido

Dd es un campo de datos que representa un byte de datos. Un registro puede tener muchos bytes de datos. El número de bytes de datos en el registro debe coincidir con el número especificado en el campo Longitud de datos (ll).

Cc es el campo de suma de verificación, que indica la suma de verificación del registro. La suma de verificación se calcula sumando los valores de todos los pares de dígitos codificados en hexadecimal en el registro y luego realizando el siguiente complemento módulo 256.

Registros de datos

Los archivos hexadecimales de Intel constan de cualquier número de registros de datos terminados por retornos de carro y avances de línea. El registro de datos se ve así:

: 10246200464 c 5549442050524 f 46494 c 4500464 c 33

Esto incluye:

10 es el número de bytes de datos en el registro .

2462 es la dirección donde se descargarán los datos en la memoria.

00 es el tipo de registro (registro de datos)

464c...464c son datos.

33 es la suma de comprobación del registro.

Registro de dirección lineal extendido (HEX386)

El registro de dirección lineal extendido también se denomina registro de dirección de 32 bits o registro HEX386. Estos registros contienen los 16 bits superiores de la dirección de datos. Los registros de direcciones lineales extendidas siempre tienen dos bytes de datos, de la siguiente manera:

: 02000004FFFFFC

Que incluye:

02 son los datos de este registro Número de bytes.

0000 es el campo de dirección. Para registros de direcciones lineales extendidos, este campo siempre es 0000.

04 es el tipo de registro 04 (registro de dirección lineal extendida)

FFFF son los 16 bits superiores de la dirección.

FC es la suma de comprobación del registro y el método de cálculo es el siguiente:

01h NOT (02h 00h 00h 04h FFh FFh).

Al leer un registro de dirección lineal extendida, guarde la dirección lineal extendida almacenada en el campo de datos, que se aplicará a los registros posteriores leídos del archivo Intel HEX. Una dirección lineal sigue siendo válida hasta que otro registro de dirección extendida la cambia.

La dirección de memoria absoluta de un registro de datos se obtiene sumando el campo de dirección del registro a los datos de dirección desplazados del registro de dirección lineal extendido.

El siguiente ejemplo demuestra este proceso.

..

Dirección 2462 en el campo de dirección del registro de datos

Campo de datos del registro de dirección lineal ampliado FFFF

-

Dirección de memoria absoluta FFFF2462

Registro de dirección de segmento extendido (HEX86)

El registro de dirección de segmento extendido también se denomina registro HEX86 e incluye un segmento de dirección de datos de 4 a 19 bits. El registro de dirección del segmento extendido siempre tiene dos bytes de datos y se ve así:

:020000021200EA

Esto incluye:

02 es la palabra de datos en el registro Número de secciones.

0000 es el campo de dirección. Para registros de direcciones de segmento extendido, este campo siempre es 0000.

02 es el tipo de registro 02 (registro de dirección de segmento extendido)

1200 es el campo de dirección.

EA es la suma de comprobación del registro y el método de cálculo es el siguiente:

01h NO (02h 00h 00h 02h 12h 00h).

Al leer el registro de dirección del segmento extendido, guarde la dirección del segmento extendido almacenada en el campo de datos y esta dirección se aplicará a los registros posteriores leídos del archivo Intel HEX. La dirección del segmento sigue siendo válida hasta que otro registro de dirección extendida la cambie.

La dirección de memoria absoluta de un registro de datos se obtiene agregando el campo de dirección del registro a los datos de dirección desplazados del registro de dirección del segmento extendido.

El siguiente ejemplo demuestra este proceso. ..

Dirección 2462 en el campo de dirección del registro de datos

Campo de datos de registro de dirección de segmento extendido 1200

-

Dirección de memoria absoluta 00014462

Registro de fin de archivo (EOF)

Los archivos hexadecimales de Intel deben terminar con un registro de fin de archivo (EOF). El valor del campo RecordType de este registro debe ser 01. Los registros EOF siempre tienen este aspecto:

:00000001FF

Entre ellos:

00 es el número de bytes de datos en el registro.

0000 es la dirección donde se descargan los datos a la memoria. Esta dirección no tiene significado y se ignora en el registro final del archivo. 0000h es una dirección típica.

01 es el tipo de registro 01 (registro de fin de archivo).

FF es la suma de verificación del registro y la fórmula de cálculo es la siguiente:

01h NOT (00h 00h 00h 01h).

Ejemplo de documento Intel HEX:

El siguiente es un ejemplo completo de archivo Intel HEX:

: 10001300 AC 12ad 13ae 10af 1112002 f8e 0e 8 f0f 2244

: 10000300 E 50 B 250 DF 509 E 50 A 350 CF 5081200132259

: 03000000020023D8

: 0C 002300787 Fe 4 F 6D 8 FD 75811302 00031D

:10002 f 00 eff 88 df 0 a 4 ff EDC 5 f 0ce a 42 efeec 88 f 016

:04003F00A42EFE22CB

:00000001FF