The contents of the individual fields within the record are: RECORD MARK
This field contains 03AH, the hexadecimal encoding of the ASCII colon (': ') character. RECLEN
The field contains 03032H, the hexadecimal encoding of the ASCII characters '02', which is the length, in bytes, of the USBA data information within this record.
LOAD OFFSET This field contains 030303030H, the hexadecimal encoding of the ASCII characters '0000', since this field is not used for this record.
RECTYP This field contains 03032H, the hexadecimal encoding of the ASCII character '02', which specifies the record type to be an Extended Segment Address Record.
USBA This field contains four ASCII hexadecimal digits that specify the 16- bit Upper Segment Base Address value. The high- order byte is the 10th/ 1lth character pair of the record. The low- order byte is the 12th/ 13th character pair of the record.
CHKSUM This field contains the check sum on the RECLEN, LOAD OFFSET, RECTYP, and USBA fields.
5. Data Record (8-, 16-, or 32- bit formats)
+------------------+---------------+-------------+----------------+---------------+-------------------+
| RECORD | | LOAD | | | |
| MARK | RECLEN | OFFSET | RECTYP | DATA | CHKSUM |
| ': ' | | | '00' | | |
+------------------+---------------+-------------+----------------+---------------+-------------------+
1- byte 1- byte 2- bytes 1- byte n- bytes 1- byte
- 7 The Data Record provides a set of hexadecimal digits that represent the ASCII code for data bytes that make up a portion of a memory image. The method for calculating the absolute address (linear in the 8- bit and 32- bit case and segmented in the 16- bit case) for each byte of data is described in the discussions of the Extended Linear Address Record and the Extended Segment Address Record.
The contents of the individual fields within the record are: RECORD MARK
This field contains 03AH, the hexadecimal encoding of the ASCII colon (': ') character. RECLEN
The field contains two ASCII hexadecimal digits that specify the number of data bytes in the record. The maximum value is 'FF' or 04646H (255 decimal).
LOAD OFFSET This field contains four ASCII hexadecimal digits representing the offset from the LBA (see Extended Linear Address Record) or SBA (see Extended Segment Address Record) defining the address which the first byte of the data is to be placed.
RECTYP This field contains 03030H, the hexadecimal encoding of the ASCII character '00', which specifies the record type to be a Data Record.
DATA This field contains pairs of ASCII hexadecimal digits, one pair for each data byte.
CHKSUM This field contains the check sum on the RECLEN, LOAD OFFSET, RECTYP, and DATA fields.
6. Start Linear Address Record (32- bit format only)
+------------------+---------------+-------------+----------------+---------------+-------------------+
| RECORD | | LOAD | | | |
| MARK | RECLEN | OFFSET | RECTYP | EIP | CHKSUM |
| ': ' | '04' | '0000' | '05' | | |
+------------------+---------------+-------------+----------------+---------------+-------------------+
1- byte 1- byte 2- bytes 1- byte 4- bytes 1- byte
- 8 The Start Linear Address Record is used to specify the execution start address for the object file. The value given is the 32- bit linear address for the EIP register. Note that this record only specifies the code address within the 32- bit linear address space of the 80386. If the code is to start execution in the real mode of the 80386, then the Start Segment Address Record should be used instead, since that record specifies both the CS and IP register contents necessary for real mode.
The Start Linear Address Record can appear anywhere in a 32- bit hexadecimal object file. If such a record is not present in a hexadecimal object file, a loader is free to assign a default start address.
The contents of the individual fields within the record are: RECORD MARK
This field contains 03AH, the hexadecimal encoding of the ASCII colon (': ') character. RECLEN
The field contains 03034H, the hexadecimal encoding of the ASCII characters '04', which is the length, in bytes, of the EIP register content within this record.
LOAD OFFSET This field contains 030303030H, the hexadecimal encoding of the ASCII characters '0000', since this field is not used for this record.
RECTYP This field contains 03035H, the hexadecimal encoding of the ASCII character '05', which specifies the record type to be a Start Linear Address Record.
EIP This field contains eight ASCII hexadecimal digits that specify the 32- bit EIP register contents. The high- order byte is the 10th/ 1lth character pair.
CHKSUM This field contains the check sum on the RECLEN, LOAD OFFSET, RECTYP, and EIP fields.
- 9 7. Start Segment Address Record (16- or 32- bit formats)
+------------------+---------------+-------------+----------------+---------------+-------------------+
| RECORD | | LOAD | | | |
| MARK | RECLEN | OFFSET | RECTYP | CS/ IP | CHKSUM |
| ': ' | '04' | '0000' | '03' | | |
+------------------+---------------+-------------+----------------+---------------+-------------------+
1- byte 1- byte 2- bytes 1- byte 4- bytes 1- byte
The Start Segment Address Record is used to specify the execution start address for the object file. The value given is the 20- bit segment address for the CS and IP registers. Note that this record only specifies the code address within the 20- bit segmented address space of the 8086/ 80186.
The Start Segment Address Record can appear anywhere in a 16- bit hexadecimal object file. If such a record is not present in a hexadecimal object file, a loader is free to assign a default start address.
The contents of the individual fields within the record are: RECORD MARK
This field contains 03AH, the hexadecimal encoding of the ASCII colon (': ') character. RECLEN
The field contains 03034H, the hexadecimal encoding of the ASCII characters '04', which is the length, in bytes, of the CS/ IP register contents within this record.
LOAD OFFSET This field contains 030303030H, the hexadecimal encoding of the ASCII characters '0000', since this field is not used for this record.
RECTYP This field contains 03033H, the hexadecimal encoding of the ASCII character '03', which specifies the record type to be a Start Segment Address Record.
CS/ IP This field contains eight ASCII hexadecimal digits that specify the 16- bit CS register and 16- bit IP register contents. The high- order byte of the CS register content is the 10th/ llth character pair, the low- order byte is the 12th/ 13th character pair of the record. The high- order byte of the IP register content is the 14th/ 15th character pair, the low- order byte is the 16th/ 17th character pair of the record.
- 10 CHKSUM This field contains the check sum on the RECLEN, LOAD OFFSET, RECTYP, and CS/ IP fields.
8. End of File Record (8-, 16-, or 32- bit formats)
+------------------+---------------+-------------+----------------+-------------------+
| RECORD | | LOAD | | |
| MARK | RECLEN | OFFSET | RECTYP | CHKSUM |
| ': ' | '00' | '0000' | '01' | |
+------------------+---------------+-------------+----------------+-------------------+
1- byte 1- byte 2- bytes 1- byte 1- byte
The End of File Record specifies the end of the hexadecimal object file. The contents of the individual fields within the record are: RECORD MARK
This field contains 03AH, the hexadecimal encoding of the ASCII colon (': ') character. RECLEN
The field contains 03030H, the hexadecimal encoding of the ASCII characters '00'. Since this record does not contain any INFO/ DATA bytes, the length is zero.
LOAD OFFSET This field contains 030303030H, the hexadecimal encoding of the ASCII characters '0000', since this field is not used for this record.
RECTYP This field contains 03031H, the hexadecimal encoding of the ASCII character '01', which specifies the record type to be an End of File Record.
CHKSUM This field contains the check sum an the RECLEN, LOAD OFFSET, and RECTYP fields. Since all the fields are static, the check sum can also be calculated statically, and the value is 04646H, the hexadecimal encoding of the ASCII characters 'FF'.