Hex与HIN文件格式的不同.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Hex与HIN文件格式的不同

Hex文件,这里指的是Intel标准的十六进制文件,也就是机器代码的十六进制形式,并且是用一定文件格式的ASCII码来表示.具体格式介绍如下:? Intel?hex?文件格式? Intel?hex?文件常用来保存 HYPERLINK \t _blank 单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。? Intel?hex?文件全部由可打印的ASCII字符组成,如下例所示:? :2000000012014c75a800e4f508f509780a7a78e4f608dafcd283fcfded240af9a7050dbd81? :2000200000010ced2488ec34ff50edc283e4fcfded240af9e76d7013ed33e43c700d0dbd2a? :2000400000010ced2488ec34ff50e50509e50970020508e50924a8e50834fd50aee4f50874? Intel?hex?由一条或多条记录组成,每条记录都由一个冒号“:”打头,其格式如下:? :CCAAAARR...ZZ? 其中:? CC? 本条记录中的数据字节数? AAAA? 本条记录中的数据在存储区中的起始地址? RR? 记录类型:? 00?数据记录?(data?record)? 01?结束记录?(end?record)? 02?段记录?(paragraph?record)? 03?转移地址记录?(transfer?address?record)? ...? 数据域? ZZ? 数据域校验和? Intel?hex文件记录中的数字都是16进制格式,两个16进制数字代表一个字节。CC域是数据域中的实际字节数,地址、记录类型和校验和域没有计算在内。校验和是取记录中从数据字节计数域(CC)到数据域(...)最后一个字节的所有字节总和的2的补码。? 而Bin文件是最纯粹的二进制机器代码,没有格式,或者说是顺序格式按assembly?code顺序翻译成binary?machine?code.由于分析出来Hex文件中的数据域ASCII码表示的十六进制与二进制一一对应,而且我公司DSP又是16位的,以一个word为最小单位,所以四个十六进制ASCII码代表一条机器指令单位或者地址.借于上面分析,编写了工具代码.大体原理是用fscanf函数在每行的数据域读入四个ASCII码,以短整形(short?int?16bit)形式储存,在把这个短整形变量顺序fwrite到文件流中去即可.? 举一例说明:? 表1? ORG?0000H? LJMP?START? ORG?040H? START:? MOV?SP,#5FH?;设堆栈? LOOP:? NOP? LJMP?LOOP?;循环? END?;结束? 表2? :03000000020040BB? :0700400075815F000200431F? 表3         ? 02?00?40?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF? FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF? FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?FF?75?81?5F?00?02?00?43? 表1为源程序,表2是汇编后得到的HEX文件,表3是由HEX文件转换成的目标文件,也就是最终写入EPROM的文件,它由编程器转换得到,也可以由HEXBIN一类的程序转换得到。学过手工汇编者应当不难找出表3与表1的一一对应关系,值得注意的是从02?00?40后开始的一长串‘FF’,直到75?81,这是由于伪指令:ORG?040H造成的结果。 copy?from:/f?kz=271526661 /* ??????使用方法?:?bin2hex?-b?adress?filename ??????-b?:?指示hex文件起始地址 ??????address?:?hex文件的起始地址(FIXME:当前版本只支持k字节边界) ??????filename?:?待转换的文件名 ??????示例?:?bin2hex?-b?32k?rom.bin */ #include?stdio.h #include?stdlib.h #include?string.h FILE?*fp_read;?????????????

文档评论(0)

803322fw + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档