解读hex文件

上传人:kms****20 文档编号:38036511 上传时间:2018-04-26 格式:DOC 页数:6 大小:47.50KB
返回 下载 相关 举报
解读hex文件_第1页
第1页 / 共6页
解读hex文件_第2页
第2页 / 共6页
解读hex文件_第3页
第3页 / 共6页
解读hex文件_第4页
第4页 / 共6页
解读hex文件_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《解读hex文件》由会员分享,可在线阅读,更多相关《解读hex文件(6页珍藏版)》请在金锄头文库上搜索。

1、PIC HEX 文件格式分析文件格式分析 - 适用适用 MPLAB8 位機 2011-03-25 11:26:40 阅读 39 评论 0 字号:大中小 订阅 本文引自:http:/ 文件是 MPLAB 生成的一种可执行文件的格式,它本身是由 ASCII 字符组成的,但其包含 16 进制的可执行代码的信息,也就是说,这类文件描述在程序存储器的哪个单元放入什么指令。.HEX 文件的种类文件的种类MPLAB 可以生成 3 种不同格式的可执行文件。其中两种是.HEX 文件,它们分别称为 INHX8M 格式(Intel Hex Format)和 INHX32 格式(Intel Hex 32 Format

2、);另外一种称为 INHX8S 格式(Intel Split Hex Format),这种格式会同时生成.HXL 和.HXH 文件,两个文件分别存放指令数据的低字节和高字节。这里只讨论两种.HEX 文件。MPLAB 内嵌的连接器 MPLINK 在默认情况下生成INHX32格式的.HEX 文件,也可以使用/aINHX8M 选项指定生成 INHX8M 格式的.HEX 文件。我们的烧写器应该能支持这两种格式的.HEX 文件。INHX32 格式的格式的.HEX 文件文件一个 INHX32 格式的.HEX 文件是由若干个形式相同的行构成的。行的种类行的种类对于最多只有 8K 字程序空间的 PIC16F8

3、7X 单片机而言,相应的.HEX 文件只有 3 种不同的行:线性地址定位行,代码数据行,结尾标志行。一个.HEX 文件的第 1 行是一个线性地址定位行,后面接着是若干个代码数据行,最后一行是结尾标志行。线性地址定位行仅仅对超过 32K 字代码的程序有用。实际上,INHX32 格式与INHX8M 格式的不同之处就在于它能表示超过 32K 字代码的程序。线性地址定位行中指定指令存放地址的高 16 位,而低 16 位由代码数据行中的“AAAA”部分指定。“AAAA”表示指令存放地址的 2 倍,所以最多能表示 32K 字的指令,而PIC16F87X 单片机最多只有 8K 字程序空间,故不需要用到指令地

4、址的高 16 位,因此.HEX 文件的线性地址定位行指定的指令地址的高 16 位总为“0000”。代码数据行指定一段连续存放的代码的起始存放地址和代码值。通常一行中最多有 16 条语句的代码。结尾标志行标志整个文件的结束。行的格式行的格式一个 INHX32 格式的.HEX 文件的每一行都是下面这种格式::BBAAAATTHHHH.HHHHCC即开始是 9 个字符组成的前缀“:BBAAAATT”,加上若干个 4 字符的“HHHH”数据,结尾是 2 个字符的校验字“CC”。这里所说的“字符”是指组成文件的 ASCII 字符,而一个 16 进制“字节”必须用两个“字符”表示。各个部分的意义是:: 一

5、行的开始符。BB 数据部分的字节数,即“HHHH”部分的字节数。AAAA 代码开始存放的地址的 2 倍。仅在代码数据行中有意义,在其余两种类型的行中这一部分为“0000”。TT 行的类型。00 代码数据行01 结尾标志行02 段地址定位行(PIC16F87X 单片机的.HEX 文件中没有用到) 04 线性地址定位行HHHH 在代码数据行中,表示一条 14-bit 的指令代码,其中低字节在前,高字节在后,比如“movlw 0xaa”这条指令对应的代码是 30AA,相应的 HHHH 表示为 AA30;在结尾标志行中,没有这一部分;在线性地址定位行中,这一部分为指令存放地址的高 16 位。CC 校验

6、字。校验规则是,本行中前面所有的字节(两个字符)表示的 16 进制数相加,再加上 CC 表示的 16 进制数,所得的和必须是 256 的整数倍,即用 16 进制表示时末尾两位都为 0。示例示例下面是一个简单的程序的汇编语句及对应的可执行代码。地址 代码 汇编解析 源程序 - - - -org 0x0000000000 2810 GOTO 0x10 goto mainorg 0x0004000004 2818 GOTO 0x18 goto int_servorg 0x0010main000010 1683 BSF 0x3,0x5 bsf STATUS, RP0000011 1303 BCF 0x

7、3,0x6 bcf STATUS, RP1000012 0188 CLRF 0x8 clrf TRISD000013 1283 BCF 0x3,0x5 bcf STATUS, RP0000014 0188 CLRF 0x8 clrf PORTD000015 160b BSF 0xb,0x4 bsf INTCON, INTE000016 178b BSF 0xb,0x7 bsf INTCON, GIEstop000017 2817 GOTO 0x17 goto stopint_serv000018 30ff MOVLW 0xff movlw 0xff000019 0088 MOVWF 0x8 m

8、ovwf PORTD00001a 0009 RETFIE retfieEND它对应的 INHX32 格式的.HEX 文件如下::020000040000FA (1):020000001028C6 (2):020008001828B6 (3):04000A00003400348A (4):10002000831603138801831288010B168B17172878 (5):06003000FF30880009000A (6):00000001FF (7)第(1)行是线性地址定位行。第(2)行至第(6)行是代码数据行。第(7)行是结尾标志行。INHX8M 格式的格式的.HEX 文件文件对

9、PIC16F87X 单片机而言,INHX8M 格式的.HEX 文件与 INHX32 格式的.HEX 文件只有一点不同,就是 INHX8M 格式的.HEX 文件没有线性地址定位行。以下是上一节所示的源程序对应的 INHX8M 格式的.HEX 文件。:020000001028C6 (1):020008001828B6 (2):04000A00003400348A (3):10002000831603138801831288010B168B17172878 (4):06003000FF30880009000A (5):00000001FF (6)可见这个文件就是前面 INHX32 格式的.HEX 文

10、件的(2)至(7)行。本文件中的(1)至(5)行是代码数据行,第(6)行是结尾标志行。PIC 单片机的单片机的 HEX 文件解释(转)文件解释(转) 分类: 技术积累 2007-06-04 10:21 PIC 单片机源程序编译成功将生成目标程序 HEX 文件,下面是一个简单 源程序: #INCLUDE _CONFIG _DEBUG_OFF/00000001编译后生成的 HEX 文件怎么变成这样了?:04000000A304FC0B4E :0803F800010C2600A304000A19 :0207FE00000AEF :00000001FF谁能解释一下?或者翻译成二进制代码?不是单片机的指令长度是 12 位吗?它这里好像在内存中 8 位存放?我只有 20 分了,全部给你了!生成的 HEX 文件是 16 进制的,写入单片机程序存储器里时软件会转化为二进制码,这个不需要你去翻译成二进制代码。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号