HEX文件格式
开打Hex文件,如下所示:
:020000040800F2
:100000001013002089010008950C00088D0C0008D1
:10001000910C00084302000835140008000000009D
.............
:08CAD000050002040608000045
:04000005080000ED02
:00000001FF
文件格式
1、以行为单位。
2、每行开头是“:“(0x3A),结尾”回车换行“(0x0D,0x0A.)。
3、中间所有内容都是一字符形式表现的。若数据是”0x1A“,在HEX中就是”0x31 0x41“。
4、HEX文件格式:”LLAAAATT【DD.----】CC“。
代号 |
字段 |
长度 |
: |
: |
1字节 |
LL |
数据长度 |
1字节 |
AAAA |
数据地址 |
2字节 |
TT |
数据类型 |
1字节 |
DD-- |
数据 |
N字节 |
CC |
校验 |
1字节 |
回车换行 |
0x0D 0x0A |
2字节回车换行 |
TT数据类型:
00->数据记录
01->用来标识文件记录的结束
02->用来标识扩展段地址
03->开始段地址
04->用来标识扩展线性地址(虚地址)
05->开始线性地址(虚地址)
CC校验和:
校 验和的计算是通过将记录当中所有十六进制编码数字对的值相加, 以256 为 模 进 行以下 补 足.
例如:
:10246200464C5549442050524F46494C4500464C33
33 是这个记录的校 验和即0x33;计算方法如下:100H-(10H+24H+62H+00H+46H+4CH+55H+49H+44H+20H+50H+52H+4FH+46H+49H+4CH+45H+00H+46H+4CH) % 100H=33H;
扩展线性地址记录(HEX386)
扩展线性地址记录又称为32位地址记录或者HEX386记录。 这些记录包含了数据地址的高16位。T扩展线性地址记录总是有两个数据,格式如下
:020000040800F2
这里:
02 是记录的数据位数
0000 对于扩展线性地址记录,这部分都是零。
04 代表记录类型是扩展线性地址记录。
0800 是地址的高16位。
F2 是以下计算结果的和:01h + NOT(02h + 00h + 00h + 04h + 08h + 00h).
当一个扩展线性地址被读取时,在数据域中的扩展线性地址被储存并且运用到后来的记录的读取中。线性地址保持有效直到被另外一个扩展地址所改变。数据的绝对地址由扩展线性地址和偏移地址相加获得。
下面这个例子可以说明这个过程。
数据记录的地址域中的地址 2462
扩展线性地址记录的数据域 0800
--------
绝对地址: 08002462
扩展段地址记录(HEX86)
扩展段地址记录(也称HEX86)包括数据地址段的4-19位。扩展段地址记录总有两个数据位。一般如下:
:020000021200EA
这里:
02 在本记录中的数据的位数。
0000对于扩展段地址记录,这部分都是零。
02是记录类型,也就是扩展段地址记录。
1200 是地址段
EA 是如下计算的结果01h + NOT(02h + 00h + 00h + 02h + 12h + 00h).
当一个扩展段地址被读取时,储存在数据域的扩展段地址被保存,应用到后面的记录,并且保持有效,直到被新的扩展地址所代替。绝对地址的获得是段地址乘以16加上偏移地址。
以下这个例子说明这个过程。
记录地址域获得的地址: 2462
扩展段地址的数据域: 1200
--------
绝对存储地址: 00014462
结束文件记录:
一个英特尔HEX文件必须由一个EOF文件来结束。一个结束文件记录一般这样出现:
:00000001FF
这里:
00是记录的数据位数.
0000 是数据在存储器中定位的数据的地址.在结束文件中的地址是没有意义和可以忽略的。一个 0000h 的地址是很典型的。
01是记录类型,结束文件记录
FF 由这样计算得出:01h + NOT(00h + 00h + 00h + 01h)
起始线性地址类型记录:
只使用于803386.x86的寻址方面的知识。
起始段地址类型记录:
只适用于8086/800186.
|