欢迎来到天天文库
浏览记录
ID:57924225
大小:100.23 KB
页数:1页
时间:2020-04-14
《基于Keil的51单片机汇编程序多文件编译-论文.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、2014年第7期电子通信技术基于Keil的51单片机汇编程序多文件编译■陈彩欢甘露。本文结合Kei1ViSion2程序开发流程,描述了51单片机汇编程通过该方式实现多文件编译时,插入的源文件既可以是扩展名序多文件编译的实现方法。通过多文件编译的使用,大大提高了汇编程为.ASM的汇编源程序文件,也可以是扩展名为.INC的包含文件。注意序代码的可读性、可扩展性,同时也很大程度地提高程序代码的执行效在被包含的源文件结尾不能有END指令,否则编译会停止运行。率以及内存空间的使用率,避免内存空间的浪费。2、通过绝对地址段实现多文件编译KeilVis
2、ion2中提供以下定义绝对地址段的指令,通过这些指令一、序言可以定义代码段和各种数据段,并指定其绝对地址。近年来,随着c语言的进一步推广使用,绝大多数的工程师都倾表1绝对地址段定义指向于使用c语言进行单片机系统开发,汇编语言由于可读性、通用性、指々格式描述可移植性差的原因,很难满足产品开发的需求。但是汇编语言具有执行BS£GBSEG[AT绝对地址】绝对位数据段(:S£GCSEGfAT绝对地址】绝对代码段效率高、占用内存空间小等特点,在某些应用领域还是具有无可替代的DSlGDSEG[AT绝对地址】绝对内部直播寻址数据段作用。瑙BGISEG绝
3、对地址】绝对内部间接寻址数据段本文结合KeilVision2程序开发流程,-描述了51单片机汇编程XSEGXSEG[AT绝对地址】鲍对外部数据段序多文件编译的实现方法。通过多文件编译的使用,大大提高了汇编程由于绝对地址段在定义的时候对地址进行了分配,链接,定位器不序代码的可读性、可扩展性,同时也很大程度地提高程序代码的执行效能够对其地址进行更改,因此很容易造成地址重叠或者内存空间浪费,率以及内存空间的使用率,避免内存空间的浪费。而且在后续对程序进行维护、升级的时候很有可能需要重新对地址进行二、KeiluVision2程序开发流程简介分配,
4、非常不利于程序的扩展和维护。因此绝对地址段通常是用在某些KeilVision2是美国KeilSoftware公司出品的51系列兼容单片机特定的场合,例如确定中断向量的人口地址、数据存储空间等。软件集成开发环境,该软件提供宏汇编器、链接,定位器、库管理器、3、通过可重定位段实现多文件编译调试器以及目标文件转换器等工具,是51单片机系统开发的首选工具。在KeilVision2中,通过SEGMENT指令即可定义可重定位段。KeilVision2集成开发环境的编译流程如下:首先宏汇编器对汇定义可重定位段时必须指定段的名称和存储类型,其格式如下:编
5、源程序文件进行编译,生成扩展名为.OBJ的目标文件和扩展名为.LST.段名SEGMENT类型的列表文件,紧接着链接/定位器将所有的.OBJ文件进行绝对地址分配,可重定位段的存储类型有:BIT、CODE、DATA、IDATA和XDATA链接生成包含绝对地址的目标文件和扩展名为.M51的地址文件,最后五种,分别与五个绝对地址段的指令相对应。由目标文件转换器生成可用于编程器烧写、扩展名为.HEX的可执行文一个段在定义完成之后必须通过RSEG指令选择激活才能使用。当件。该段被激活后,在下一个RSEG指令或者绝对地址段之前的代码和数据三、汇编程序多
6、文件编译实现均属于这个段。RSEG指令的格式如下:在KeilVislon2集成开发环境下,我们可以根据不同的硬件模块、RSEG段名功能模块分开编写应用子程序,进行模块化管理,实现多文件编译,这通过可重定位段的使用,在编译的链接阶段,链接/定位器会将各样就可以大大提高汇编程序代码的可读性、可扩展性。以下首先对段和个具有相同段名的段合并成一个段,并分配绝对地址,生成包含绝对地模块的概念进行描述。址的目标文件和扩展名为.M51的地址文件。一个段可以是一块程序代码或者是一个数据块。根据其地址空间是该方法最大的优点就是无需人为地给各个段分配地址,而
7、是由链接否可以被链接/定位器更改,段可以分为可定位段和绝对地址段。在定/定位器自动分配,段与段之间地址没有空隙,不会存在内存空间的浪义可重定位段的时候需要对其段名、类型及其属性进行定义。一个段可费。以分在不同的程序模块中,只要具有相同的段名,在编译过程中链接/四、总结定位器会把它们合并到一起。在定义绝对地址段的时候直接人为分配绝通过以上三种方式,均可以实现多文件编译,但是在实际使用过程对地址,链接/定位器不能对改地址进行更改。绝对地址段没有段名,中,INCLUDE指令通常用于包含特殊功能寄存器的定义等;绝对地址也不能给其他段结合。段则通常
8、用于确定中断向量的人口地址、数据存储空间;而可重定位段模块是一个可以被单独编译的代码单元,可以包含一个或多个段或的方式则广泛地用于各种代码段或数据段的定义。者部分段,一个模块既可以是单个文本文
此文档下载收益归作者所有