HEX (Intel) est un format de fichier, utilisé pour structurer de l'information destinée à des microcontrôleurs, des EEPROM ou d'autres composants programmables. C'est un des formats les plus anciens pour cette utilisation, étant utilisé depuis les années 1970. Le format est un fichier texte, avec chaque ligne contenant des valeurs hexadécimales avec une adresse absolue ou une adresse décalée. Le format peut être décrit comme un ensemble de lignes de texte. Chaque ligne respecte la syntaxe suivante : BBAAAATTHHHHHH.....HHHHCC où : BB est le nombre d'octets de données dans la ligne (en hexadécimal) AAAA est l'adresse absolue (ou relative) du début de la ligne TT est le champ spécifiant le type HH...HHHH est le champ des données CC est l'octet de checksum. C'est le complément à deux de la somme des valeurs binaires des octets de tous les autres champs. (Les calculs sont faits sur 8 bits, en ignorant les retenues.) Il y a six valeurs possibles pour le champ de type (TT) : 00, données, contient les données et l'adresse 16 bit. 01, Fin du fichier, pour terminer le fichier. Pas de données après ce champ. Doit être la dernière ligne du fichier et donc ce champ n'est permis qu'une seule fois par fichier. Usuellement ':00000001FF'. Originellement End Of File record peut contenir une adresse de départ pour le programme devant être chargé, e.g. :00AB2F0125 ferait un saut à l'adresse AB2F. 02, champ d'adresse étendue, permet de définir l'adresse de base du segment. Utilisé quand une adresse 16 bits n'est pas suffisante, et ressemble au mode d'adressage du 80x86. L'adresse spécifiée par le champ 02 est multipliée par 16 (décalée de 4 bits vers la gauche) et additionnée aux adresses contenues dans les champs de type 00. Cela permet d'adresser 1 mégaoctet. Si le champ d'adresse correspondant est 0000, et le nombre d'octets est 02 (le segment est 16 bits). L'octet hexadécimal du segment est toujours 0. 03, Start Segment Address Record. Pour les processeurs 80x86, il spécifie le contenu initial des registres CS:IP.
, ,