stringtranslate.com

Intel HEX

El formato de archivo de objeto hexadecimal de Intel , formato hexadecimal de Intel o Intellec Hex es un formato de archivo que transmite información binaria en forma de texto ASCII , [10] lo que hace posible almacenarla en medios no binarios como cinta de papel , tarjetas perforadas , etc., para mostrarla en terminales de texto o imprimirla en impresoras orientadas a líneas . [11] El formato se usa comúnmente para programar microcontroladores , EPROM y otros tipos de dispositivos lógicos programables y emuladores de hardware . En una aplicación típica, un compilador o ensamblador convierte el código fuente de un programa (como en lenguaje C o ensamblador ) en código de máquina y lo genera en un objeto o archivo ejecutable en formato hexadecimal (o binario). En algunas aplicaciones, el formato hexadecimal de Intel también se usa como un formato contenedor que contiene paquetes de datos de flujo . [12] Las extensiones de archivo comunes utilizadas para los archivos resultantes son .HEX [1] o .H86. [5] [6] Luego, un programador lee el archivo HEX para escribir el código de máquina en una PROM o lo transfiere al sistema de destino para su carga y ejecución. [11] [13] Existen varias herramientas para convertir archivos entre formato hexadecimal y binario (es decir, HEX2BIN ), y viceversa (es decir, OBJHEX, OH, OHX, BIN2HEX).

Historia

El formato hexadecimal de Intel fue diseñado originalmente para los sistemas de desarrollo de microcomputadoras Intellec [14] : 10–11  (MDS) de Intel en 1973 con el fin de cargar y ejecutar programas desde cintas de papel . También se utilizó para especificar contenidos de memoria a Intel para la producción de ROM , [15] que anteriormente tenían que ser codificados en el formato BNPF (Begin-Negative-Positive-Finish) mucho menos eficiente. [14] : 11  En 1973, el "grupo de software" de Intel consistía únicamente en Bill Byerly y Kenneth Burgett, y Gary Kildall como consultor externo haciendo negocios como Microcomputer Applications Associates (MAA) y fundando Digital Research en 1974. [16] [17] [18] [9] A partir de 1975, el formato fue utilizado por los sistemas Intellec Series II ISIS-II que soportaban unidades de disquete, con archivos que usaban la extensión de archivo HEX. [19] Muchos dispositivos de programación PROM y EPROM aceptan este formato.

Formato

Intel HEX consta de líneas de texto ASCII separadas por caracteres de salto de línea o retorno de carro , o ambos. Cada línea de texto contiene caracteres hexadecimales en mayúsculas que codifican varios números binarios. Los números binarios pueden representar datos, direcciones de memoria u otros valores, según su posición en la línea y el tipo y la longitud de la línea. Cada línea de texto se denomina registro .

Estructura del registro

Un registro (línea de texto) consta de seis campos (partes) que aparecen en orden de izquierda a derecha: [11]

  1. Código de inicio , un carácter, dos puntos ASCII ' : '. Todos los caracteres que preceden a este símbolo en un registro deben ignorarse. [15] [5] [20] [21] [22] [23] De hecho, las primeras versiones de la especificación incluso solicitaban un mínimo de 25 caracteres NUL para preceder al primer registro y seguir al último, debido a los orígenes del formato como un formato de cinta de papel que requería cierta entrada y salida de cinta para su manejo. [15] [24] [21] [22] Sin embargo, como esta era una parte poco conocida de la especificación, no todo el software escrito se ocupa de esto correctamente. Permite almacenar otra información relacionada en el mismo archivo (e incluso la misma línea), [15] [23] una facilidad utilizada por varias utilidades de desarrollo de software para almacenar tablas de símbolos o comentarios adicionales, [25] [15] [21] [26] [9] [27] y extensiones de terceros que utilizan otros caracteres como código de inicio como los dígitos ' 0 '..' 9 ' de Intel [28] y Keil , [26] ' $ ' de Mostek , [29] [30] o ' ! ', ' @ ', ' # ', ' \ ', ' & ' y ' ; ' de TDL . [30] [31] Por convención, ' // ' se utiliza a menudo para comentarios. [32] [33] Ninguna de estas extensiones puede contener ningún carácter ':' como parte de la carga útil.
  2. Recuento de bytes , dos dígitos hexadecimales (un par de dígitos hexadecimales), que indican la cantidad de bytes (pares de dígitos hexadecimales) en el campo de datos. El recuento máximo de bytes es 255 (0xFF). Los valores de 8 (0x08), [9] 16 (0x10) [9] y 32 (0x20) son recuentos de bytes de uso común. No todo el software admite recuentos mayores a 16. [2]
  3. Dirección , cuatro dígitos hexadecimales que representan el desplazamiento de la dirección de memoria inicial de 16 bits de los datos. La dirección física de los datos se calcula sumando este desplazamiento a una dirección base establecida previamente, lo que permite el direccionamiento de memoria más allá del límite de 64 kilobytes de las direcciones de 16 bits. La dirección base, que por defecto es cero, se puede cambiar mediante varios tipos de registros. Las direcciones base y los desplazamientos de dirección siempre se expresan como valores big endian .
  4. Tipo de registro (ver tipos de registro a continuación), dos dígitos hexadecimales,00a05, definiendo el significado del campo de datos.
  5. Datos , una secuencia de n bytes de datos, representada por 2 n dígitos hexadecimales. Algunos registros omiten este campo ( n es igual a cero). El significado y la interpretación de los bytes de datos dependen de la aplicación. (Los datos de 4 bits deberán almacenarse en la mitad inferior o superior de los bytes, es decir, un byte contiene solo un elemento de datos direccionable. [15] )
  6. Suma de comprobación , dos dígitos hexadecimales, un valor calculado que puede usarse para verificar que el registro no tenga errores.

Leyenda de colores

Como ayuda visual, los campos de los registros Intel HEX están coloreados a lo largo de este artículo de la siguiente manera:

  Código de inicio  Conteo de bytes  DIRECCIÓN  Tipo de registro  Datos  Suma de comprobación

Cálculo de suma de comprobación

El byte de suma de comprobación de un registro es el complemento a dos del byte menos significativo (LSB) de la suma de todos los valores de bytes decodificados en el registro anterior a la suma de comprobación. Se calcula sumando los valores de bytes decodificados y extrayendo el LSB de la suma (es decir, la suma de comprobación de los datos) y, a continuación, calculando el complemento a dos del LSB (por ejemplo, invirtiendo sus bits y sumando uno).

Por ejemplo, en el caso del registro : 03 0030 00 02337A 1E , la suma de los valores de bytes decodificados es 03+00+30+00+02+33+7A= E2, que tiene valor LSB E2. El complemento a dos de E2es1E , que es el byte de suma de comprobación que aparece al final del registro.

La validez de un registro se puede comprobar calculando su suma de comprobación y verificando que la suma de comprobación calculada sea igual a la suma de comprobación que aparece en el registro; se indica un error si las sumas de comprobación difieren. Dado que el byte de suma de comprobación del registro es el complemento a dos (y, por lo tanto, el inverso aditivo ) de la suma de comprobación de datos, este proceso se puede reducir a sumar todos los valores de bytes decodificados, incluida la suma de comprobación del registro, y verificar que el LSB de la suma sea cero. Cuando se aplica al ejemplo anterior, este método produce el siguiente resultado: 03+00+30+00+02+33+7A+1E = 100, que tiene un valor LSB 00.

Terminadores de línea de texto

Los registros Intel HEX suelen estar separados por uno o más caracteres de terminación de línea ASCII, de modo que cada registro aparece solo en una línea de texto. Esto mejora la legibilidad al delimitar visualmente los registros y también proporciona relleno entre registros que se puede utilizar para mejorar la eficiencia del análisis de la máquina . Sin embargo, los caracteres de terminación de línea son opcionales, ya que el ' : ' se utiliza para detectar el comienzo de un registro. [15] [5] [24] [20] [21] [22] [23]

Los programas que crean registros HEX suelen utilizar caracteres de terminación de línea que se ajustan a las convenciones de sus sistemas operativos . Por ejemplo, los programas de Linux utilizan un solo carácter LF ( salto de línea , valor hexadecimal 0A) para terminar las líneas, mientras que los programas de Windows utilizan un CR ( retorno de carro , valor hexadecimal 0D) seguido de un LF.

Tipos de registros

Intel HEX tiene seis tipos de registros estándar: [11]

Se han utilizado otros tipos de registros para variantes, incluidos06(mensajes 'blinky' / contenedor de protocolo de transmisión) por Wayne y Layne, [34] 0A(inicio de bloque),0B(fin del bloque),0 °C(datos rellenados),0D(datos personalizados) y0E(otros datos) de la BBC / Micro:bit Educational Foundation , [35] y81(datos en el segmento de código ),82(datos en el segmento de datos ),83(datos en el segmento de pila ),84(datos en segmento extra ),85( dirección de párrafo para el segmento de código absoluto),86(dirección de párrafo para segmento de datos absolutos),87(dirección de párrafo para el segmento de pila absoluta) y88(dirección del párrafo para el segmento adicional absoluto) por Digital Research . [6] [20]

Formatos con nombre

El formato de cinta de papel Intellec Hex original de 4 bits/8 bits y el formato de tarjeta perforada de computadora Intellec Hex de 1973/1974 solo admitían un tipo de registro.00. [36] [37] [25] Esto se amplió alrededor de 1975 [ ¿cuándo? ] para admitir también el tipo de registro01. [15] A veces llamado formato hexadecimal simbólico , [38] podría incluir un encabezado opcional que contiene una tabla de símbolos para depuración simbólica , [25] [28] [26] [9] todos los caracteres en un registro que preceden a los dos puntos se ignoran. [15] [5]

Alrededor de 1978 [ ¿cuándo? ] , Intel introdujo los nuevos tipos de registros.02y03(para agregar soporte para el espacio de direcciones segmentado de los entonces nuevos procesadores 8086/8088 ) en su formato Intellec Hex extendido . [ ¿cuándo? ]

A veces se utilizan nombres especiales para indicar los formatos de archivos HEX que emplean subconjuntos específicos de tipos de registros. Por ejemplo:

Ejemplo de archivo

Este ejemplo muestra un archivo que tiene cuatro registros de datos seguidos de un registro de final de archivo:

: 10 0100 00 214601360121470136007EFE09D21901 40 : 10 0110 00 2146017E17C20001FF5F160021480119 28 : 10 0120 00 194E79234623965778239EDA3F01B2CA A7 : 10 0130 00 3F0156702B5E712B722B732146013421 C7 : 00 0000 01FF

  Código de inicio  Conteo de bytes  DIRECCIÓN  Tipo de registro  Datos  Suma de comprobación

Variantes

Además de la propia extensión de Intel, varios terceros también han definido variantes y extensiones del formato hexadecimal de Intel, incluidos Digital Research (como en el llamado "formato hexadecimal de Digital Research" [6] [20] ), Zilog , Mostek , [29] [30] TDL , [30] [31] Texas Instruments , Microchip , [39] [40] c't , Wayne y Layne, [34] y BBC / Micro:bit Educational Foundation (con su "Formato hexadecimal universal" [35] ). Estos pueden tener información sobre los puntos de entrada del programa y el contenido de los registros , un orden de bytes intercambiado en los campos de datos, valores de relleno para áreas no utilizadas, bits de fusión y otras diferencias.

El formato hexadecimal de Digital Research para procesadores 8086 admite información de segmentos agregando tipos de registros para distinguir entre código, datos, pila y segmentos adicionales. [5] [6] [20]

La mayoría de los ensambladores para CP/M-80 (y también XASM09 para Motorola 6809 ) no utilizan el tipo de registro 01h para indicar el final de un archivo, sino que utilizan una entrada de tipo de datos de longitud cero 00h. [41] [1] Esto facilita la concatenación de múltiples archivos hexadecimales. [42] [43] [1]

Texas Instruments define una variante donde las direcciones se basan en el ancho de bits de los registros de un procesador, no en bytes.

Microchip define las variantes INTHX8S [44] (INHX8L, [1] INHX8H [1] ), INHX8M, [44] [1] [45] INHX16 [44] (INHX16M [1] ) e INHX32 [46] para sus microcontroladores PIC .

También se sabe que el ensamblador cruzado de macros AS de Alfred Arnold, [1] el emulador 8051 SIM51 de Werner Hennig-Roleff , [26] y el conversor cruzado BINTEL de Matthias R. Paul [47] definen extensiones para el formato hexadecimal de Intel.

Véase también

Referencias

  1. ^ abcdefghi Arnold, Alfred "Alf" (2020) [1996, 1989]. "6.3. P2HEX". Macro Assembler AS - Manual del usuario. V1.42. Traducido por Arnold, Alfred "Alf"; Hilse, Stefan; Kanthak, Stephan; Sellke, Oliver; De Tomasi, Vittorio. Aachen, Alemania. Archivado desde el original el 28 de febrero de 2020. Consultado el 28 de febrero de 2020. […] Para los microcontroladores PIC , el modificador -m <0..3> permite generar las tres variantes diferentes del formato Intel Hex. El formato 0 es INHX8M, que contiene todos los bytes en un orden Lo-Hi. Las direcciones se vuelven el doble de grandes porque los PIC tienen un espacio de direcciones orientado a palabras que incrementa las direcciones solo en una por palabra. […] Con el formato 1 (INHX16M), los bytes se almacenan en su orden natural. Este es el formato que Microchip utiliza para sus propios dispositivos de programación. El formato 2 (INHX8L) o el 3 (INHX8H) dividen las palabras en sus bytes inferiores o superiores. […] Desafortunadamente, en la literatura se encuentran diferentes afirmaciones sobre la última línea de un archivo Intel-Hex. Por lo tanto, P2HEX conoce tres variantes diferentes que se pueden seleccionar […] :00000001FF […] :00000001 […] :0000000000 […] De manera predeterminada, se utiliza la variante 0, que parece ser la más común. […] Si el nombre del archivo de destino no tiene una extensión, se supone que tiene una extensión HEX. […]
  2. ^ ab "AR#476 PROMGen - Descripción de formatos de archivos PROM/EEPROM: MCS, EXO, HEX y otros" . Xilinx . 2010-03-08. Intel MCS-86 Hexadecimal Object - File Format Code 88. Archivado desde el original el 2020-03-03 . Consultado el 2020-03-03 .
  3. ^ Sabnis, Abhishek (4 de febrero de 2011). "Cómo convertir un archivo .out a .int, .hex, .a43". Foro de Code Composer Studio . Texas Instruments . Archivado desde el original el 20 de octubre de 2023. Consultado el 20 de octubre de 2023. El programador de TI-gang necesita el formato de archivo .int, .hex, .a43.
  4. ^ abc Schuldt, Michael (2018). «intel-hex-mode». github.com . Archivado desde el original el 24 de octubre de 2020 . Consultado el 20 de octubre de 2023 . De forma predeterminada, este modo está habilitado para archivos con extensión .a90, .hex, .a43 o .ihx.
  5. ^ abcdef "3.1. Formato de archivo hexadecimal de Intel 8086". Sistema operativo CP/M-86 - Guía del sistema (PDF) (2.ª impresión, 1.ª ed.). Pacific Grove, California, EE. UU.: Digital Research . Junio ​​de 1981. págs. 15-16. Archivado (PDF) desde el original el 28 de febrero de 2020. Consultado el 28 de febrero de 2020. pág. 16: […] Los siguientes son solo resultados de ASM-86: 81 igual que 00, los datos pertenecen al segmento de código […] 82 igual que 00, los datos pertenecen al segmento de datos […] 83 igual que 00, los datos pertenecen al segmento de pila […] 84 igual que 00, los datos pertenecen al segmento adicional […] 85 dirección de párrafo para segmento de código absoluto […] 86 dirección de párrafo para segmento de datos absoluto […] 87 dirección de párrafo para segmento de pila absoluto […] 88 dirección de párrafo para segmento adicional absoluto […] Se ignoran todos los caracteres que preceden a los dos puntos para cada registro. […](17 páginas)
  6. ^ abcde "Apéndice C. Formato de salida hexadecimal ASM-86". CP/M-86 - Sistema operativo - Guía del programador (PDF) (3.ª ed.). Pacific Grove, California, EE. UU.: Digital Research . Enero de 1983 [1981]. págs. 97–100. Archivado (PDF) desde el original el 27 de febrero de 2020 . Consultado el 27 de febrero de 2020 . págs. 97–99: […] El formato Intel es idéntico al formato definido por Intel para el 8086 . El formato Digital Research es casi idéntico al formato Intel, pero agrega información de segmento a los registros hexadecimales. La salida de cualquiera de los formatos se puede ingresar a GENCMD , pero el formato Digital Research proporciona automáticamente la identificación del segmento. Un segmento es la unidad más pequeña de un programa que se puede reubicar. […] Es en la definición de los tipos de registro 00 y 02 donde el formato hexadecimal de Digital Research difiere del de Intel. Intel define un valor para cada tipo de registro de datos y para el tipo de dirección de segmento. Digital Research identifica cada registro con el segmento que lo contiene. […] 00H para datos pertenecientes a todos los segmentos 8086 […] 81H para datos pertenecientes al segmento CODE […] 82H para datos pertenecientes al segmento DATA […] 83H para datos pertenecientes al segmento STACK […] 84H para datos pertenecientes al segmento EXTRA […] 02H para todos los registros de dirección de segmento […] 85H para una dirección de segmento absoluta CODE […] 86H para una dirección de segmento DATA […] 87H para una dirección de segmento STACK […] 88H para una dirección de segmento EXTRA […][1] (1+viii+122+2 páginas)
  7. ^ ab Ramos, Rubens (2010) [2008]. "intel-hex-mode.el --- Modo para archivos Intel Hex" . Consultado el 20 de octubre de 2023 .
  8. ^ abc "El desensamblador interactivo: formatos de archivo hexadecimales". Hex-Rays . 2006. Archivado desde el original el 2020-03-01 . Consultado el 2020-03-01 .[2] Archivado el 16 de noviembre de 2021 en Wayback Machine.
  9. ^ abcdef Roche, Emmanuel (2020-04-01). "El formato de archivo Intel HEX". Francia: Grupo de noticias : comp.os.cpm. INTELHEX.WS4. Archivado desde el original el 2021-12-08 . Consultado el 2021-12-08 . […] el formato de archivo Intel HEX puede contener mucho más que los "bytes de datos". Siempre que las líneas no comiencen con dos puntos (":), pueden contener todo lo que desee. […] Una vez vi un archivo HEX grande […] Contenía, al principio, el código fuente de un programa PL/M , seguido, al final, por el archivo HEX resultante producido por el compilador PL/M. […] Encontré otro archivo HEX que contenía varias líneas de comentarios, no al principio ni al final, sino que separaban varias líneas de "registros absolutos". […] era de un "Simulador (Intel) 8008 ". Así, al principio de su uso, era bien sabido que los archivos HEX podían contener explicaciones. […] bajo CP/M o cualquier sistema de 8 bits y 64 K, queda un caso: "Direcciones de página". Desde CP/M, es estándar mostrar las direcciones de memoria usando el sistema hexadecimal […] como dijimos para los archivos BIN/COM, las direcciones de memoria son 0000/0100. […] esas direcciones de memoria se pueden escribir 00-00/01-00 […] para decir: Página cero, dirección cero / Página uno, dirección cero. […] la dirección de memoria más alta en una computadora de 8 bits y 64 K es FFFF […] Página FF, dirección FF […] las direcciones más bajas están en la página cero (o 00) y las direcciones más altas están en la página FF. […] Los tipos de archivo CP/M tienen 3 letras de longitud, se podrían usar tipos de archivo del formato P00–PFF […] para indicar en qué dirección de memoria cargar el archivo HEX. […] Noté que la mayoría de mis direcciones terminaban con "00", por lo que la dirección de carga podría reducirse a la dirección de la página, que […] podría colocarse dentro del tipo de archivo […]
  10. ^ ab "Apéndice D. Formatos de archivo de objeto absoluto MCS-86: formato de archivo de objeto hexadecimal". Utilidades de la familia 8086: Guía del usuario para sistemas de desarrollo basados ​​en 8080/8085 (PDF) . Revisión E (A620/5821 6K DD ed.). Santa Clara, California, EE. UU.: Intel Corporation . Mayo de 1982 [1980, 1978]. págs. D-8–D-13. Número de pedido 9800639-04. Archivado (PDF) desde el original el 29 de febrero de 2020 . Consultado el 29 de febrero de 2020 .
  11. ^ abcd Especificación del formato de archivo de objeto hexadecimal. Revisión A. Intel Corporation . 1998 [1988-01-06] . Consultado el 23 de julio de 2019 .[3][4][5][6][7] (11 páginas)
  12. ^ "Documentación del formato de archivo hexadecimal de programación LT: programación en circuitos". Analog Devices, Inc. / Linear Technology . 2021. Archivado desde el original el 2021-03-07 . Consultado el 2021-12-11 .
  13. ^ "General: formato de archivo hexadecimal de Intel". ARM Keil . ARM Germany GmbH . 2018-05-07 [2012]. KA003292. Archivado desde el original el 2020-02-27 . Consultado el 2017-09-06 .[8]
  14. ^ ab Crosby, Kip (enero-marzo de 1994). "Dawn of the Micro: Intel's Intellecs" (PDF) . La máquina analítica . 1 (3). Computer History Association of California: 10-14. ISSN  1071-6351. Archivado (PDF) desde el original el 2023-10-17 . Consultado el 2023-10-17 . pp. 10–11: […] el Intel Intellec 8 […] apareció por primera vez en algún momento de 1972 o 1973, dos años o más antes del Altair 8800 , a menudo considerado como el "primer microordenador" por las historias estándar […] Intel mantiene que el 8 Mod 8 se produjo por primera vez en 1973 y se discontinuó en 1975. Tony Duell tiene una placa de CPU 8 Mod 80 con fecha de 1972, y tanto el 8 Mod 8 como el 4 Mod 40 están incluidos en el Catálogo de datos de Intel publicado en febrero de 1976, por lo que el período real de producción puede haber sido algo más largo. (Los documentos pertinentes de Intel deben leerse con atención porque los nombres MCS4, MCS40, MCS8 y MCS80 se usaron casi indiscriminadamente para referirse a chipsets, computadoras o sistemas completos). […](52 páginas) (NB: Este artículo no menciona Intel Hex, pero menciona específicamente que el sistema Intellec de Intel se presentó oficialmente en 1973, pero existen algunas unidades con fecha de 1972).
  15. ^ abcdefghi "Capítulo 6. Hoja de datos de componentes del sistema de microcomputadoras - EPROM y ROM: I. Instrucciones de programación de PROM y ROM - B1. Formato de cinta de papel Intellec Hex / C1. Formato de tarjeta perforada de computadora Intellec Hex". Manual del usuario de MCS-80 (con introducción a MCS-85). Santa Clara, California, EE. UU.: Intel Corporation . Octubre de 1977 [1975]. págs. 6-75–6-78. 98-153D . Consultado el 27 de febrero de 2020 . pág. 6-76: […] En el formato Intel Intellec Hex, un campo de datos puede contener datos de 8 o 4 bits. Se deben utilizar dos caracteres hexadecimales ASCII para representar datos de 8 y 4 bits. En el caso de datos de 4 bits, solo uno de los caracteres es significativo y se debe especificar en el formulario de pedido de PROM/ROM Intel. […] Antes del primer campo de datos y después del último campo de datos debe haber una longitud de cabecera/final de al menos 25 caracteres nulos. Los comentarios (excepto los dos puntos) se pueden colocar en la cabecera de la cinta . […] Si los datos son de 4 bits, entonces el dígito de orden superior o inferior representa los datos y el otro dígito del par puede ser cualquier dígito hexadecimal ASCII. […][9][10] (468 páginas) (NB: Este manual también describe un " Formato de cinta de papel BPNF ", un "Formato de cinta de papel hexagonal no Intellec" y un "Formato de tarjeta perforada de computadora PN").
  16. ^ Kildall, Gary Arlen (enero de 1980). "La historia de CP/M, la evolución de una industria: el punto de vista de una persona". Revista del Dr. Dobb sobre calistenia informática y ortodoncia . 5 (1): 6–7. #41. Archivado desde el original el 24 de noviembre de 2016. Consultado el 3 de junio de 2013. […] El grupo de software de Intel, formado por mí y otras dos personas, había escrito y probado los programas, y estábamos listos para la máquina real. […]
  17. ^ Kildall, Gary Arlen (2016-08-02) [1993]. Kildall, Scott ; Kildall, Kristin (eds.). Computer Connections: People, Places, and Events in the Evolution of the Personal Computer Industry (Manuscrito, parte 1). Familia Kildall. Archivado (PDF) desde el original el 2016-11-17 . Consultado el 2016-11-17 .(NB. La segunda parte no se publica por razones de privacidad familiar).
  18. ^ Burgett, Kenneth "Ken" (10 de noviembre de 2017). "Desarrollo del sistema operativo Intel ISIS: una entrevista con Ken Burgett". Archivado desde el original el 24 de noviembre de 2023. Consultado el 25 de noviembre de 2023 .[11][12]
  19. ^ Feichtinger, Herwig (1987). "1.8.5. Lochstreifen-Datenformate: Das Intel-Hex-Format" [1.8.5. Formatos de datos de cinta de papel]. Arbeitsbuch Mikrocomputer [ Libro de trabajo sobre microcomputadoras ] (en alemán) (2 ed.). Múnich, Alemania: Franzis-Verlag GmbH . págs. 240-243 [243]. ISBN 3-7723-8022-0.
  20. ^ abcde "Formato de archivo hexadecimal de Intel 4.3". Sistema operativo CP/M concurrente: guía de referencia del programador (PDF) (1.ª edición). Pacific Grove, California, EE. UU.: Digital Research Inc. Enero de 1984. págs. 4-9–4-12. Archivado (PDF) desde el original el 2021-12-11 . Consultado el 2021-12-11 . pp. 4-11–4-12: […] Los siguientes son solo resultados de ASM-86: 81 igual que 00, los datos pertenecen al Segmento de Código […] 82 igual que 00, los datos pertenecen al Segmento de Datos […] 83 igual que 00, los datos pertenecen al Segmento de Pila […] 84 igual que 00, los datos pertenecen al Segmento Extra […] *85 dirección de párrafo para Segmento de Código absoluto […] *86 dirección de párrafo para Segmento de Datos absoluto […] *87 dirección de párrafo para Segmento de Pila absoluto […] *88 dirección de párrafo para Segmento Extra absoluto […] * 85, 86, 87 y 88 son Extensiones de Investigación Digital. […] Se ignoran todos los caracteres que preceden a los dos puntos para cada registro. […](346 páginas) (NB: Este manual marca sólo los tipos 85, 86, 87 y 88 como extensiones de Digital Research, como si los tipos 81, 82, 83, 84 no lo fueran).
  21. ^ abcd "2.8. Formatos de microprocesador, 2.8.1. Requisitos de entrada: Formato Intel Intellec 8/MDS. Código de selección 83". Guía del operador para las capacidades de E/S en serie de los programadores de E/S de datos - Paquete de formato de traducción (PDF) . Revisión C. Data I/O Corporation . Octubre de 1980. pág. 2-10. 055-1901. Archivado (PDF) desde el original el 2020-03-01 . Consultado el 2020-03-01 . pág. 2-10: […] Entrada […] Este espacio se puede utilizar para saltos de línea, retornos de carro o comentarios. […] Salida […] 2) Cada línea termina con saltos de línea no imprimibles, retornos de carro y nulos. […](1+ii+19 páginas)
  22. ^ abc "Formato Intel Intellec 8/MDS, código 83". Formatos de archivos de traducción (PDF) . Data I/O Corporation . 1987-09-03. págs. 22, 26–27, 52–53, 54. Archivado (PDF) desde el original el 2021-07-28 . Consultado el 2020-03-01 . págs. 22, 26, 52: […] Retorno de carro no imprimible, avance de línea y valores nulos determinados por el recuento de valores nulos […](56 páginas)
  23. ^ abc "Apéndice B: Intel Hex y Intel Extended Hex Format - B.1 Formato común". Manual del controlador de semiconductores de Fujitsu: Manual del kit de enlace Softune de la familia FR/F2MC para V3 (PDF) . Fujitsu Limited . 2001. págs. 319–525 [320–321]. Archivado (PDF) desde el original el 2021-12-12 . Consultado el 2021-12-12 . pág. 321: […] (g) Generalmente, se agrega un código de control (como CR y LF). Los datos de este campo se omiten hasta que aparezca el carácter inicial ":" de (a). Dado que los campos (a), (b), (c), (d) y (f) siempre existen, la longitud mínima de un registro es de 11 bytes y la longitud máxima es de 521 bytes. […](4+x+350 páginas)
  24. ^ ab "1.6.4 PIP". Manual del sistema operativo CP/M (Primera edición impresa). Pacific Grove, California, EE. UU.: Digital Research . Julio de 1982 [1976]. págs. 17–23 . Consultado el 12 de diciembre de 2021 . págs. 19–21: […] PIP realiza una función especial si el destino es un archivo de disco con tipo "HEX" (un archivo de código de máquina con formato hexadecimal de Intel ) y la fuente es un dispositivo periférico externo, como un lector de cinta de papel . En este caso, el programa PIP comprueba que el archivo de origen contenga un archivo hexadecimal correctamente formado, con valores hexadecimales legales y registros de suma de comprobación. Cuando se encuentra un registro de entrada no válido, PIP informa un mensaje de error en la consola y espera una acción correctiva. Por lo general, es suficiente abrir el lector y volver a ejecutar una sección de la cinta (retirar la cinta unas 20 pulgadas). Cuando la cinta está lista para la relectura, se escribe un retorno de carro en la consola y PIP intentará otra lectura. Si no se puede leer correctamente la posición de la cinta, el usuario continúa la lectura (escribiendo un retorno después del mensaje de error) e ingresa el registro manualmente con el programa ED después de que se construye el archivo del disco. Para mayor comodidad, PIP permite ingresar el final del archivo desde la consola si el archivo de origen es un dispositivo RDR:. En este caso, el programa PIP lee el dispositivo y monitorea el teclado. Si se escribe ctl-Z en el teclado, la operación de lectura finaliza normalmente. […] […] Envíe 40 nulos al dispositivo de perforación ; copie el archivo X.ASM a la perforación, seguido de un final de archivo (ctl-Z) y 40 caracteres nulos más. […] […] Transferencia de datos HEX: todos los datos se verifican para verificar que tengan el formato de archivo hexadecimal Intel correcto. Los caracteres no esenciales entre los registros hexadecimales se eliminan durante la operación de copia. Se le solicitará a la consola que tome una acción correctiva en caso de que ocurran errores. […] […] Ignore los registros ":00" en la transferencia del archivo de formato hexadecimal de Intel (el parámetro I establece automáticamente el parámetro H). […] […] Primero copie X.HEX al dispositivo PUN: e ignore el registro ":00" final en X.HEX; continúe la transferencia de datos leyendo Y.ZOT, que contiene registros HEX, incluidos todos los registros ":00" que contiene. […]PIP PUN:=NUL:,X.ASM,EOF:,NUL:HIPIP PUN:=X.HEX[i],Y.ZOT[h][13] (6+250 páginas)
  25. ^ abc "Apéndice A: Un programa de muestra en PL/M: Cinta de objetos hexadecimales". MCS-8 A Guide to PL/M programming (PDF) . Rev 1 (edición impresa en septiembre de 1974). Santa Clara, California, EE. UU.: Intel Corporation . 1974-03-15 [septiembre de 1973]. pág. 102. MCS180-0774-1K, MCS280-0974-1K. Archivado (PDF) desde el original el 29 de enero de 2022 . Consultado el 18 de mayo de 2022 . pág. 102:
        1 CARRY 05714
        2 ZERO 05715
        3 SIGN 05716
        4 PARITY 05717
        5 MEMORY 06000
       23 SQUAREROOT 04003
    […]
       83 MONITORUSES 05766
     $
    ****************************************
    :1008000044520A2E0B36D0F930FA31CF30D730F9B6
    […]
    :100AF0000936F4C730D70401C8C20C0031F930F808
    :040B0000445E0AFF46
    ****************************************
    :0000000000
     $
    (1+i+100+1+11+1 páginas) (NB. Muestra un ejemplo que contiene separadores basados ​​en asteriscos y un encabezado sangrado con espacios con nombres de símbolos que serán procesados ​​por el comando HEXOBJ de Intel ISIS así como por INTERP/8 o INTERP/80 para depuración simbólica . Este encabezado opcional no está documentado como parte de los formatos hexadecimales o BNPF de Intel sino en los manuales de programación de ensamblador y PL/M de Intel que producen dichas tablas de símbolos).
  26. ^ abcd Hennig-Roleff, Werner (1 de febrero de 1993) [1988]. "HEX.DOC: formato Intel-HEX". SIM51 . 1.04 (en alemán). Archivado desde el original el 11 de agosto de 2017 . Consultado el 8 de diciembre de 2021 . […] Beim Absolut-Hex Konvertierprogramm von Keil können opcional […] Symbol-Informationen in den Hex-File aufgenommen werden. La información de símbolos se guarda en la entrada de archivos, antes que ':'. La información de símbolos sind allerdings nicht sehr aussagekräftig, da nicht unterschieden wird zwischen Modul-Name, CODE, XDATA, DATA, IDATA, BIT, NUMBER. Para que los símbolos incluidos no se utilicen caracteres ASCII. Pro Zeile ist 1 Symbol angeschrieben und zwar in der Form: "0 SymbolName Wert" […][14][15] (NB. Esta es una versión anterior de SIM51, el software y la documentación se mantuvieron hasta 1996).
  27. ^ G., Georg (5 de septiembre de 2021) [4 de septiembre de 2021]. "Archivo hexadecimal flasheado". Microcontrolador y electrónica digital. mikrocontroller.net (en alemán) . Consultado el 23 de noviembre de 2023 . […] Información de depuración en Intel con un "$" an. Dann kamen der Name des Symbols und die Adresse. Kommentare hatten als erstes Zeichen ein ";". […] El ASM48 bajo ISIS-2 produce solche Hexfiles, […] el ASM86 también. […]
  28. ^ ab "Apéndice A. Ejemplo de formato de listado / Apéndice C. Formato de archivo de objeto hexadecimal". 2920 Assembly Language Manual (PDF) . Santa Clara, California, EE. UU.: Intel Corporation . Agosto de 1979. págs. A-3, C-1–C-2. Número de pedido 9800987-01. Archivado (PDF) desde el original el 2023-11-26 . Consultado el 2023-11-26 . pág. C-1: […] El código está formateado en bytes hexadecimales de datos. El archivo contiene la representación ASCII de los bytes hexadecimales de datos. El código objeto en sí está precedido por una tabla de símbolos. Estas dos partes se pueden cargar o guardar juntas o por separado. La tabla de símbolos es una serie de registros, terminados por un signo de dólar. Cada registro contiene tres campos separados por uno o más espacios ASCII: […] un campo de número […] un campo de etiqueta que contiene la representación ASCII de un símbolo del programa fuente […] un campo de dirección que contiene la dirección hexadecimal asignada al símbolo […] La tabla de símbolos termina con un registro cuyo primer carácter que no está en blanco es un signo de dólar. El código objeto […] sigue a la tabla de símbolos […] Cada uno de estos registros o líneas físicas son seis campos lógicos de longitud variable en caracteres o marcos. […](90 páginas) (NB. El Intel 2920 fue un procesador de señal digital lanzado en 1979.)
  29. ^ ab Formaniak, Peter G.; Leitch, David (julio de 1977). "A Proposed Microprocessor Software Standard". BYTE - the small systems journal . Technical Forum. Vol. 2, no. 7. Peterborough, New Hampshire, EE. UU.: Byte Publications, Inc. pp. 34, 62–63. ark:/13960/t32245485 . Consultado el 6 de diciembre de 2021 .(3 páginas) (NB. Describe una extensión del formato hexadecimal de Intel realizada por Mostek ).
  30. ^ abcd Ogdin, Carol Anne; Colvin, Neil; Pittman, Tom; Tubb, Philip (noviembre de 1977). "Formatos de código de objeto reubicables". BYTE - la revista de sistemas pequeños . Foro técnico. 2 (11). Peterborough, New Hampshire, EE. UU.: Byte Publications, Inc .: 198–205. ark:/13960/t59c88b4h, ark:/13960/t3kw76j24 . Consultado el 6 de diciembre de 2021 .(8 páginas) (NB. Además de otros, se describe una extensión incompatible del formato hexadecimal Intel utilizado por Technical Design Labs (TDL).)
  31. ^ ab Kreidl, Günter (junio de 1981). "Reubicación: formato TDL". Hardware. Revista Nascom - Zeitschrift für Anwender des NASCOM 1 o NASCOM 2 (en alemán). 2 (6). Germersheim, Alemania: Verlag NASCOM Journal, MK-Systemtechnik: 12–14 [12]. Archivado desde el original el 1 de diciembre de 2021 . Consultado el 11 de diciembre de 2021 .(20 páginas) (NB. Muestra una variante del formato TDL , que a su vez es una variante del formato hexadecimal Intel).
  32. ^ Rüger, Stefan M. (16 de junio de 2022). "Proporcionar formato de archivo I: Intel HEX con comentarios que ignoren los errores de suma de comprobación". AVRDUDE . Archivado desde el original el 25 de noviembre de 2023 . Consultado el 25 de noviembre de 2023 .(NB. Opción de comentario de AVRDUDE: Puedo producir incorrectamente caracteres ":" como parte del volcado hexadecimal ).
  33. ^ Bull, Hans Eirik; Dean, Brian S.; Rüger, Stefan M.; Wunsch, Jörg (15 de julio de 2023). "AVRDUDE - Un programa para descargar/cargar flash, EEPROM y más del microcontrolador AVR para AVRDUDE" (PDF) . Versión 7.2. Archivado (PDF) del original el 23 de noviembre de 2023 . Consultado el 23 de noviembre de 2023 . p. 12: […] I […] Intel Hex con comentarios sobre la descarga y la tolerancia de errores de suma de comprobación en la carga […](66 páginas)
  34. ^ ab Beckler, Matthew L. (2016-07-25) [2016-07-19]. "Blinky Grid - flujo de bits óptico en serie". Discourse . Minneapolis, Minnesota, EE. UU.: Wayne and Layne, LLC. Archivado desde el original el 2021-12-11 . Consultado el 2021-12-11 .
  35. ^ ab "micro:bit Universal Hex Format Specification - Specification for the micro:bit Universal Hex Format". micro:bit . 0.4.0. Fundación Educativa Micro:bit . 2021-01-26 [2020]. Archivado desde el original el 2021-08-14 . Consultado el 2021-12-08 . [16][17] (NB: Esto representa una especie de formato de archivo hexadecimal grueso ).
  36. ^ Manual del operador del sistema de microcomputadoras Intellec 8. Intel Corporation . Noviembre de 1973.
  37. ^ "Apéndice D. Formato de cinta de programa hexadecimal". Manual del operador de Intellec 8/MOD 80 . Intel . Junio ​​de 1974. 98-003A. […] Cuadros 7,8: Tipo de registro […] Dos caracteres ASCII. Actualmente (1974), todos los registros son de tipo 0. Este campo está reservado para futuras ampliaciones […][18]
  38. ^ Catálogo de herramientas de desarrollo 1988 (PDF) . Intel Corporation . 1988. págs. 25–26, 30–32. Número de pedido 280199-004. Archivado (PDF) desde el original el 26 de noviembre de 2023 . Consultado el 26 de noviembre de 2023 .(46 páginas)
  39. ^ "Microcontroladores PIC: formato de archivo PIC Hex". Blog de Kanda Electronics . Canolafan, Llanafan, Aberystwyth, Gales, Reino Unido: Embedded Results Ltd. 26 de abril de 2012. Archivado desde el original el 16 de agosto de 2021. Consultado el 11 de diciembre de 2021 .
  40. ^ "15.3 Utilidad XC16-BIN2HEX - 15.3.3 Archivos de entrada/salida". Ensamblador, enlazador y utilidades MPLAB XC16 - Guía del usuario (PDF) . Microchip Technology Inc. 2018 [2013]. págs. 240–241. ISBN 978-1-5224-2828-2. DS50002106D. Archivado (PDF) del original el 22 de enero de 2019. Consultado el 5 de diciembre de 2023. p. 240: […] Debido a que el formato de archivo hexadecimal de Intel está orientado a bytes, y la PC de 16 bits no, las secciones de memoria de programa requieren un tratamiento especial. Cada palabra de programa de 24 bits se extiende a 32 bits insertando un denominado "byte fantasma". Cada dirección de memoria de programa se multiplica por 2 para obtener una dirección de byte. Por ejemplo, una sección que se encuentra en 0x100 en la memoria de programa se representará en el archivo hexadecimal como 0x200. Considere la siguiente fuente de lenguaje ensamblador: […] ; archivo test.s […] .section foo,code,address(0x100) […] .pword 0x112233 […] Se generará el archivo […] con el siguiente contenido: […] :020000040000fa […] :040200003322110096 […] :00000001FF […] el registro de datos (línea 2) tiene una dirección de carga de 0200, mientras que el código fuente especificó la dirección 0x100. […]t los datos se representan en formato " little-endian ", lo que significa que el byte menos significativo aparece primero. El byte fantasma aparece al final, justo antes de la suma de comprobación. […](277 páginas)
  41. ^ Kildall, Gary Arlen (febrero de 1978) [1976]. "Una técnica sencilla para la reubicación estática de código de máquina absoluto". Revista de calistenia y ortodoncia informática del Dr. Dobb . 3 (2). People's Computer Company : 10-13 (66-69). ISBN 0-8104-5490-4. #22 ark:/13960/t8hf1g21p . Consultado el 19 de agosto de 2017 .[19][20][21]. Presentado originalmente en: Kildall, Gary Arlen (1977) [22–24 de noviembre de 1976]. "Una técnica simple para la reubicación estática del código de máquina absoluto". Escrito en Naval Postgraduate School , Monterey, California, EE. UU. En Titus, Harold A. (ed.). Registro de la conferencia: Décima conferencia anual de Asilomar sobre circuitos, sistemas y computadoras: artículos presentados del 22 al 24 de noviembre de 1976. Conferencia de Asilomar sobre señales, sistemas y computadoras . Asilomar Hotel and Conference Grounds, Pacific Grove, California, EE. UU.: Western Periodicals Company. págs. 420–424. ISSN  1058-6393 . Consultado el 6 de diciembre de 2021 .(609 páginas)
  42. ^ Zschocke, Jörg (noviembre de 1987). "Nicht nur Entwicklungshilfe - Descarga para Einplatinencomputer am Beispiel des EPAC-09: Intel-Hex-Format". c't - magazin für computertechnik (en alemán). vol. 1987, núm. 11. Verlag Heinz Heise GmbH & Co. KG . págs. 198, 200, 202-203, [200]. ISSN  0724-8679. […] Den Vorspann beschließt un Byte, dessen Wert den des Blockes angibt: 0 = Datenblock, 1 = Endblock. Auf diese Unterscheidung kann jedoch verzichtet werden, wenn sich un Endblock auch durch eine Blocklänge gleich Null eindeutig kennzeichnen läßt. (Por lo tanto, coloque el ensamblador principal en CP/M , además del XASM09; el Typbyte es nulo). […][22] (NB. XASM09 es un ensamblador Motorola 6809 ).
  43. ^ Prior, James E. (24 de febrero de 1989). "Re: Preguntas sobre el formato hexadecimal (*.HEX) de Intel". Grupo de noticias : comp.os.cpm . Consultado el 27 de febrero de 2020 .
  44. ^ abc "Especificación de programación PIC16C5X 5.0 - Formatos de datos hexadecimales PIC16C5X: 5.1. Formato hexadecimal Intellec dividido en 8 bits (INHX8S) / 5.2. Formato hexadecimal Intellec fusionado en 8 bits (INHX8M) / 5.3. Formato hexadecimal de 16 bits / 5.4. Formato de palabra de 8 bits / 5.5. Formato de palabra de 16 bits". Microchip Databook (edición de 1994). Microchip Technology Inc. Abril de 1994. págs. 3-10–3-11, 9-10, 9-15, 9-17, 9-21, 9-23, 9-27. DS00018G . Consultado el 28 de febrero de 2020 . […] Los ensambladores para el PIC16C5X pueden producir archivos de objeto PIC16C5X en varios formatos. Un programador PIC16C5X debe poder aceptar y enviar datos en al menos uno de los siguientes formatos. Se prefiere el formato de 8 bits fusionados (INHX8M). […] formato […] INHX8S […] produce dos archivos hexadecimales de 8 bits. Un archivo contendrá los pares de dirección/datos para los 8 bits de orden superior y el otro archivo contendrá los 8 bits de orden inferior. Las extensiones de archivo para el código objeto serán '.obl' y '.obh' para archivos de orden inferior y superior […] formato […] INHX8M […] produce un archivo hexadecimal de 8 bits con una combinación de byte bajo/byte alto. Dado que cada dirección solo puede contener 8 bits en este formato, todas las direcciones se duplicarán. Las extensiones de archivo para el código objeto serán '.obj' […] formato […] INHX16 […] produce un archivo hexadecimal de 16 bits. La extensión del archivo para el código objeto será '.obj'. […][23][24]
  45. ^ Beard, Brian (2016) [2010]. "Formato de registro HEX INHX8M de Microchip". Lucid Technologies . Archivado desde el original el 28 de febrero de 2020. Consultado el 28 de febrero de 2020 .
  46. ^ Beard, Brian (2016) [2013]. "Formato de registro HEX INHX32 de Microchip". Lucid Technologies . Archivado desde el original el 28 de febrero de 2020. Consultado el 28 de febrero de 2020 .
  47. ^ Paul, Matías R. (1992). BINTEL: Binär-Image-Konverter mit Intel-Hex-Unterstützung - Bedienungsanleitung [ Convertidor de imágenes binarias con soporte Intel Hex - Manual de usuario ] (en alemán).(NB. Como consecuencia del uso de la herramienta para procesar, analizar, comparar, dividir, cortar, rellenar, combinar, reubicar o convertir imágenes de firmware binarias (por ejemplo, para o desde una o más ROM) con líneas de datos o direcciones deliberadamente fijas ("1" o "0" fijos), invertidas, omitidas (" no importa "), interconectadas o intercambiadas (como se usa a veces para facilitar el enrutamiento de PCB de buses paralelos o por razones de ofuscación para dificultar el desmontaje ), este convertidor de imágenes binarias admitió varias extensiones del formato Intel Hex).

Lectura adicional

Enlaces externos