HEX文件

HEX文件位起始存储器地址偏移量

大家好,欢迎来到IT知识分享网。

什么是hex文件

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

HEX文件

HEX文件

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

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

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

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

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

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

Hex文件解析

HEX文件

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

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




HEX文件

10 0000 00 ACB0 DA 

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


DA: 校验和

HEX文件

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

0000:无用填0    

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

HEX文件

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)80×86实模式寻址兼容。地址字段(通常为0000)被忽略。最近的段地址02记录乘以16,然后加到每个后续数据记录地址,以形成数据的物理起始地址。这允许寻址多达1MB的地址空间

’03’ Start Segment Address Record

开始段地址记录,对于80×86处理器,请指定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寄存器中。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/119089.html

(0)
上一篇 2025-11-08 08:15
下一篇 2025-11-08 08:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信