HEX文件

什么是hex文件

以*.hex为后缀的文件我们称之为HEX文件。hexintel规定的标准,hex的全称是Intel HEX,此类文件通常用于传输将被存于ROMEEPROM中的程序和数据。是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。
HEX的英语原始意思是16进制。这种文件格式主要用于保存单片机固件。
整个文件以行为单位,每行以冒号开头,内容全部为
16进制码,2ASCII码字符表示1Hex字节

起始码:每行数据作为一帧,并由:作为起始码

数据长度:两个十六进制数字(一对十六进制数字),指示数据字段中的字节数(十六进制数字对)。最大字节数为2550xFF)。160x10)和320x20)是常用的字节数;

地址:四个十六进制数字,代表数据的16位起始存储器地址偏移量。数据的物理地址是通过将此偏移量添加到先前建立的基地址来计算的,因此允许内存寻址超过16位地址的64 KB限制。基地址默认为零,可以通过各种类型的记录进行更改。基地址和地址偏移量始终表示为大端值

校验码:(两个十六进制数字),可以用来验证记录没有错误的计算值

数据n字节数据序列,由2n十六进制数字表示;

注意校验和算法:累加和=校验码之前所有16进制,校验和=0x100-累加和。

Hex文件解析

可以看做是0x02 0x00 0x00 0x04 0x08 0x04 0xEE

02:代表本行有2个字节数据
0000:表示偏移地址或无用填0
04数据类型,扩展线性地址标识,表面后面2个字节数据是后面数据的基地址
注:由于每行标识数据地址的只有2Byte,所以最大只能到64K,为了可以保存高地址的数据,故有了扩展线性地址记录也叫作32位地址记录或HEX386记录.这些记录含数据的高16位,扩展线性地址记录总是有两个数据字节。
0804:是扩展地址 (0x0804 << 16) = 0x08040000后面的数据记录都以这个地址为基地址。
EE: 记录本行校验和 EE=0x100-(0x02+0x04+0x08+0x04)

10 0000 00 A8990020C1010408830B040839080408 DA 

10:有0x10Byte数据(即16个字节数据
0000:表示本行数据起始地址为0x08040000一行则是0x08040010依次类推
00:数据类型,表示后面字节为记录的数据
A8990020C1010408830B04083908040816byte的数据     

DA: 校验和

04 0000 05 080401AD 3D  
04表示有4Byte数据         

0000:无用填0    

05:数据类型,表示开始线性地址记录
080401AD:表示要执行的下一个指令的地址(main函数地址)   3D校验和

00000001FF   
00:代表本行有0个字节数据     0000:无用填0
01数据类型,标识hex文件结束   FF:校验和

指令类型

两个十六进制数字0005,定义了这行数据的具体含义

数据类型

作用

'00' DataRrecord

用来记录数据,HEX文件的大部分记录都是数据记录

'01' End of  File Record

用来标识文件结束,放在文件的最后,标识HEX文件的结尾。数据字段为空(因此字节数为00)并且地址字段通常为 0000

'02’Extended Segment Address Record

用来标识扩展段地址的记录,数据字段包含一个16位的段基址(因此字节数始终为02)80x86实模式寻址兼容。地址字段(通常为0000)被忽略。最近的段地址02记录乘以16,然后加到每个后续数据记录地址,以形成数据的物理起始地址。这允许寻址多达1MB的地址空间

'03' Start Segment Address Record

开始段地址记录,对于80x86处理器,请指定CS:IP寄存器的初始内容(即起始执行地址)地址字段是0000,字节数始终为04,前两个数据字节是CS值,后两个是IP

'04’ Extended Linear  Address Record

用来标识扩展线性地址的记录,允许32位寻址(最大4GiB)。记录的地址字段将被忽略(通常是0000),其字节数始终为02。两个数据字节(大字节序)为所有后续类型指定32位绝对地址的高1600记录,这些高位地址位适用于下一个04记录。类型的绝对地址00 通过组合最近的高16位地址位形成记录 04 用低16位的地址记录 00记录如果是类型00 记录之前没有任何类型 04 记录,然后其高16位地址位默认为0000

'05' Start  Linear Address Record

开始线性地址记录,地址字段是 0000(未使用),字节数始终为04。四个数据字节代表一个32位地址值(big-endian)。对于80386和更高版本的CPU,此地址将加载到EIP寄存器中。

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值