This document describes the hexadecimal object file format for the Intel 8- bit, 16- bit, and 32- bit microprocessors. The hexadecimal format is suitable as input to PROM programmers or hardware emulators.
Hexadecimal object file format is a way of representing an absolute binary object file in ASCII. Because the file is in ASCII instead of binary, it is possible to store the file is non- binary medium such as paper- tape, punch cards, etc.; and the file can also be displayed on CRT terminals, line printers, etc.. The 8- bit hexadecimal object file format allows for the placement of code and data within the 16- bit linear address space of the Intel 8- bit processors. The 16- bit hexadecimal format allows for the 20- bit segmented address space of the Intel 16- bit processors. And the 32- bit format allows for the 32- bit linear address space of the Intel 32- bit processors.
The hexadecimal representation of binary is coded in ASCII alphanumeric characters. For example, the 8- bit binary value 0011- 1111 is 3F in hexadecimal. To code this in ASCII, one 8- bit byte containing the ASCII code for the character '3' (0011- 0011 or 033H) and one 8- bit byte containing the ASCII code for the character 'F' (0100- 0110 or 046H) are required. For each byte value, the high- order hexadecimal digit is always the first digit of the pair of hexadecimal digits. This representation (ASCII hexadecimal) requires twice as many bytes as the binary representation.
A hexadecimal object file is blocked into records, each of which contains the record type, length, memory load address and checksum in addition to the data. There are currently six (6) different types of records that are defined, not all combinations of these records are meaningful, however. The record are: