Ce format de fichier est l'un des plus usité pour l'application de microcontroleurs.
Il est généralement terminé par l'extension ".HEX".
Si vous jetez un oeil à l'intérieur d'un fichier ".hex" ou ".obj", vous obtiendrez quelque chose qui ressemble à ce qui suit :
|
:10000000A601A701AB018E288C00030883128D0086 :100010000B11AB0A0D0883008C0E0C0E0900A80111 :10002000A201A3011E081F04031908001F082106CE :0A04F000A40B782AA50B782A080057 :02400E00F13F80 :00000001FF |
|||
Toute l'information nécessaire au microcontrolleur est située dans ce fichier. On y trouve le code proprement dit du programme ainsi que les adresses où doivent être stockées les instructions du programme. De plus, vous remarquerez qu'aucune information de type symbolique ( cette information est généralement utilisée par un debugger ou un émulateur) n'est contenue dans le fichier.
Chaque ligne est divisée en un certain nombre de champs qui sont utilisés par le programmateur pour stocker les informations au bon endroit. Ces champs sont définis par colonnes et sont décrits dans le tableau ci-dessous :
| Colonnes | Identification | Commentaires |
| 1 | Début de ligne | Toujours ":" |
| 2-3 | Nombre bytes dans la ligne | Nombre de bytes à charger dans la ligne |
| 4-7 | Adresse de début | Adresse où on commence à stocker les données de la ligne |
| 8-9 | Type de données | "00" pour les données-"01" pour la fin de fichier |
| 10-11 | 1ere donnée | premier byte de donnée en hexa |
| 12-13 | second byte | second byte de donnée en hexa |
| 14... | suite des données | bytes additionnels du programme |
| End-2 | Checksum | Somme de la ligne & 0x0FF=0 |