解读hex文件.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
解读hex文件,hex文件,hex文件格式,keil怎么生成hex文件,.hex是什么文件,hex文件反编译,keil生成hex文件,iar生成hex文件,hex文件用什么打开,hex文件转换成bin文件

PIC HEX文件格式分析 - 适用MPLAB 8位機 2011-03-25 11:26:40 阅读39 评论0 ??字号:大中小?订阅 本文引自:/212583/95624 概要 .HEX文件是MPLAB生成的一种可执行文件的格式,它本身是由ASCII字符 组成的,但其包含16进制的可执行代码的信息,也就是说,这类文件描述 在程序存储器的哪个单元放入什么指令。 .HEX文件的种类 MPLAB可以生成3种不同格式的可执行文件。其中两种是.HEX文件,它们分别 称为INHX8M格式(Intel Hex Format)和INHX32格式(Intel Hex 32 Format); 另外一种称为INHX8S格式(Intel Split Hex Format),这种格式会同时 生成.HXL和.HXH文件,两个文件分别存放指令数据的低字节和高字节。 这里只讨论两种.HEX文件。MPLAB内嵌的连接器MPLINK在默认情况下生成INHX32 格式的.HEX文件,也可以使用/aINHX8M选项指定生成INHX8M格式的.HEX文件。 我们的烧写器应该能支持这两种格式的.HEX文件。 INHX32格式的.HEX文件 一个INHX32格式的.HEX文件是由若干个形式相同的行构成的。 行的种类 对于最多只有8K字程序空间的PIC16F87X单片机而言,相应的.HEX文件只有3种 不同的行:线性地址定位行,代码数据行,结尾标志行。一个.HEX文件的第1行 是一个线性地址定位行,后面接着是若干个代码数据行,最后一行是结尾标志 行。 线性地址定位行仅仅对超过32K字代码的程序有用。实际上,INHX32格式与 INHX8M格式的不同之处就在于它能表示超过32K字代码的程序。线性地址 定位行中指定指令存放地址的高16位,而低16位由代码数据行中的“AAAA”部分 指定。“AAAA”表示指令存放地址的2倍,所以最多能表示32K字的指令,而 PIC16F87X单片机最多只有8K字程序空间,故不需要用到指令地址的高16位, 因此.HEX文件的线性地址定位行指定的指令地址的 高16位总为“0000”。 代码数据行指定一段连续存放的代码的起始存放地址和代码值。通常一行中 最多有16条语句的代码。 结尾标志行标志整个文件的结束。 行的格式 一个INHX32格式的.HEX文件的每一行都是下面这种格式: :BBAAAATTHHHH....HHHHCC 即开始是9个字符组成的前缀“:BBAAAATT”,加上若干个4字符的“HHHH” 数据,结尾是2个字符的校验字“CC”。这里所说的“字符”是指组成文件 的ASCII字符,而一个16进制“字节”必须用两个“字符”表示。 各个部分的意义是: : 一行的开始符。 BB 数据部分的字节数,即“HHHH”部分的字节数。 AAAA 代码开始存放的地址的2倍。仅在代码数据行中有意义,在其余两种类型的 行中这一部分为“0000”。 TT 行的类型。 ????????? 00??? 代码数据行 ????????? 01??? 结尾标志行 ????????? 02??? 段地址定位行(PIC16F87X单片机的.HEX文件中没有用到)??? ????????? 04??? 线性地址定位行 HHHH 在代码数据行中,表示一条14-bit的指令代码,其中低字节在前,高字节 在后,比如“movlw 0xaa”这条指令对应的代码是30AA,相应的HHHH表示为AA30; 在结尾标志行中,没有这一部分;在线性地址定位行中,这一部分为指令存放地 址的高16位。 CC 校验字。校验规则是,本行中前面所有的字节(两个字符)表示的16进制数 相加,再加上CC表示的16进制数,所得的和必须是256的整数倍,即用16进制表示 时末尾两位都为0。 示例 下面是一个简单的程序的汇编语句及对应的可执行代码。 地址???? 代码?? 汇编解析??????? 源程序 -------? -----? -----------???? --------------------- ??????????????????????????????? org?? 0x0000 000000?? 2810?? GOTO? 0x10????? goto? main ??????????????????????????????? org?? 0x0004 000004?? 2818?? GOTO? 0x18????? goto? int_serv ??????????????????????????????? org?? 0x0010 ??????????????????????????????? main 000010?? 1683?? BSF?? 0x3,0x5?? bsf?

文档评论(0)

wsh1288 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档