Keil L51 输出的hex文件格式为Hex-80
2011-03-07 14:31
453 查看
Keil L51 输出的hex文件格式为Hex-80。是一个文本文件,纪录的格式为:
:LLAAAARRDDDD………DDDDCC
LL: Length field-长度段:数据段(D)的字节数
AAAA: Address field-地址段:数据段第一个字节的地址
RR: Record type-纪录类型,00代表数据,01代表纪录结束
DD..: Data field-数据段
CC: CheckSum field-校验和:计算方法是将本条记录冒号开始的所有对字母<不包括本效验字和冒号>所表示的十六进制数字<一对字母表示一个十六进制数,这样的一个十六进制数为一个字节>都加起来然后模除256得到的余数最后求出余数的补码即是本效验字节cc.
例子::011B50002272
LL = 0x01
AAAA = 0x1B50
RR=0x00
DD=0x22
CHECK SUM = ~((0x01+0x1B+0x50+0x22)&0xFF)+1 = 0x72
与Intel 32不同,由于Hex-80用于64K地址范围以内的系统,所以没有基址设定的指令。如果在Keil-51中,用跨BANK的方式超过了64K,编译器会产生多个HXX文件来标识BANK。如:
test.h00
test.h01
test.h02
分别在每个bank的视角来产生64K代码空间。对于Common Bank由于其在每个Bank的视角中都存在,所以在几个文件中都有同样的存在,这点要求编程人员注意。
此外,Keil产生的Hex-80文件地址并不连续~天晓得Keil为什么不规整一下。
:LLAAAARRDDDD………DDDDCC
LL: Length field-长度段:数据段(D)的字节数
AAAA: Address field-地址段:数据段第一个字节的地址
RR: Record type-纪录类型,00代表数据,01代表纪录结束
DD..: Data field-数据段
CC: CheckSum field-校验和:计算方法是将本条记录冒号开始的所有对字母<不包括本效验字和冒号>所表示的十六进制数字<一对字母表示一个十六进制数,这样的一个十六进制数为一个字节>都加起来然后模除256得到的余数最后求出余数的补码即是本效验字节cc.
例子::011B50002272
LL = 0x01
AAAA = 0x1B50
RR=0x00
DD=0x22
CHECK SUM = ~((0x01+0x1B+0x50+0x22)&0xFF)+1 = 0x72
与Intel 32不同,由于Hex-80用于64K地址范围以内的系统,所以没有基址设定的指令。如果在Keil-51中,用跨BANK的方式超过了64K,编译器会产生多个HXX文件来标识BANK。如:
test.h00
test.h01
test.h02
分别在每个bank的视角来产生64K代码空间。对于Common Bank由于其在每个Bank的视角中都存在,所以在几个文件中都有同样的存在,这点要求编程人员注意。
此外,Keil产生的Hex-80文件地址并不连续~天晓得Keil为什么不规整一下。
相关文章推荐
- 嵌入式编译器常用输出格式--Hex-80(Hex 386)
- 十六进制字符串转化成字符串输出HexToStr(Delphi版、C#版)
- 统计和输出实验 8 数组2 一次考试中的最高分、最低分、平均分,以及在90~100、 80~89、 70~79、 60~69和60分以下各分数段的人数。程序代码如下
- 实验8 统计和输出一次考试中的最高分、最低分、平均分,以及在90~100、 80~89、 70~79、 60~69和60分以下各分数段的人数。程序代码如下(可复制):
- hex解码然后写输出流
- 输出大于80字符数的行
- 作业 4 函数应用 输出80到120之间的满足给定条件的所有整数,条件为构成该整数的每位数字都相同
- 51在利用keil输出hex文件之后怎么找不到带.hex的文件
- 十六进制字符串转化成字符串输出HexToStr(Delphi版、C#版)
- C# getHex函数 输入string (length == 2),输出对应 Int hex;
- 【c语言】给出100分制成绩,要求输出成绩等级A,B,C,D,E。90分以上为A,80~89位B,70~79位C ,60~69位D,60以下为E
- C++ 如何用cout输出hex,oct,dec的解决方法
- HEX-80文件格式
- 用hexdump获取event的输出信息
- 给出一百分制成绩,要求输出成绩等级'A',要求输出成绩等级 ‘A’'B''C''D''E',90分以上为A,80-89为B,70-79为C,69-69 为D,60分以下为E。*/
- 嵌入式编译器常用输出格式--Intel 32 bit Hex
- 输入百分制成绩,要求输出成绩的等级A(100~90),B(89~80),C(79~70),D(69~60),E(59~0)
- C#扩展方法实现 byte[] 输出为HEX字符串形式
- 关于intel 32 hex文件格式以及hex2rom.sed
- java中输出hex bytes