基于Keil的51单片机汇编程序多文件编译

点赞:6060 浏览:19438 近期更新时间:2024-02-25 作者:网友分享原创网站原创

引言:本文结合KeilμVision2程序开发流程,描述了51单片机汇编程序多文件编译的实现方法.通过多文件编译的使用,大大提高了汇编程序代码的可读性、可扩展性,同时也很大程度地提高程序代码的执行效率以及内存空间的使用率,避免内存空间的浪费.

一、序言

近年来,随着C语言的进一步推广使用,绝大多数的工程师都倾向于使用C语言进行单片机系统开发,汇编语言由于可读性、通用性、可移植性差的原因,很难满足产品开发的需求.但是汇编语言具有执行效率高、占用内存空间小等特点,在某些应用领域还是具有无可替代的作用.

本文结合KeilμVision2程序开发流程,描述了51单片机汇编程序多文件编译的实现方法.通过多文件编译的使用,大大提高了汇编程序代码的可读性、可扩展性,同时也很大程度地提高程序代码的执行效率以及内存空间的使用率,避免内存空间的浪费.


二、KeilμVision2程序开发流程简介

KeilμVision2是美国KeilSoftware公司出品的51系列兼容单片机软件集成开发环境,该软件提供宏汇编器、链接/、库管理器、调试器以及目标文件转换器等工具,是51单片机系统开发的首选工具.

KeilμVision2集成开发环境的编译流程如下:首先宏汇编器对汇编源程序文件进行编译,生成扩展名为.OBJ的目标文件和扩展名为.LST的列表文件,紧接着链接/将所有的.OBJ文件进行绝对地址分配,链接生成包含绝对地址的目标文件和扩展名为.M51的地址文件,最后由目标文件转换器生成可用于编程器烧写、扩展名为.HEX的可执行文件.

基于Keil的51单片机汇编程序多文件编译参考属性评定
有关论文范文主题研究: 关于文件的论文范文数据库 大学生适用: 电大毕业论文、本科毕业论文
相关参考文献下载数量: 55 写作解决问题: 写作资料
毕业论文开题报告: 论文任务书、论文总结 职称论文适用: 核心期刊、职称评初级
所属大学生专业类别: 写作资料 论文题目推荐度: 优质选题

三、汇编程序多文件编译实现

在KeilμVision2集成开发环境下,我们可以根据不同的硬件模块、功能模块分开编写应用子程序,进行模块化管理,实现多文件编译,这样就可以大大提高汇编程序代码的可读性、可扩展性.以下首先对段和模块的概念进行描述.

一个段可以是一块程序代码或者是一个数据块.根据其地址空间是否可以被链接/更改,段可以分为可定位段和绝对地址段.在定义可重定位段的时候需要对其段名、类型及其属性进行定义.一个段可以分在不同的程序模块中,只要具有相同的段名,在编译过程中链接/会把它们合并到一起.在定义绝对地址段的时候直接人为分配绝对地址,链接/不能对改地址进行更改.绝对地址段没有段名,也不能给其他段结合.

模块是一个可以被单独编译的代码单元,可以包含一个或多个段或者部分段,一个模块既可以是单个文本文件,也可以通过INCLUDE指令把几个文本文件合并在一起.在程序编译过程中,汇编器会把一个模块编译为一个目标文件,也就是一个模块对应一个.OBJ文件.

根据以上对段和模块的描述,汇编程序的多文件编译可以通过以下三个方法来实现:

1.通过INCLUDE指令合并源文件

在代码编写时,通过INCLUDE指令可以将一个源文件插入到当前源文件中,这样汇编器在编译的时候就会将INCLUDE指令之后的文件合并到当前文件进行编译,生成一个扩展名为.OBJ的目标文件.INCLUDE指令的格式如下:

$INCLUDE(文件名)

通过该方式实现多文件编译时,插入的源文件既可以是扩展名为.A的汇编源程序文件,也可以是扩展名为.INC的包含文件.注意在被包含的源文件结尾不能有END指令,否则编译会停止运行.

2.通过绝对地址段实现多文件编译

KeilμVision2中提供以下定义绝对地址段的指令,通过这些指令可以定义代码段和各种数据段,并指定其绝对地址.

由于绝对地址段在定义的时候对地址进行了分配,链接/不能够对其地址进行更改,因此很容易造成地址重叠或者内存空间浪费,而且在后续对程序进行维护、升级的时候很有可能需要重新对地址进行分配,非常不利于程序的扩展和维护.因此绝对地址段通常是用在某些特定的场合,例如确定中断向量的入口地址、数据存储空间等.

3.通过可重定位段实现多文件编译

在KeilμVision2中,通过SEGMENT指令即可定义可重定位段.定义可重定位段时必须指定段的名称和存储类型,其格式如下:

四、总结

通过以上三种方式,均可以实现多文件编译,但是在实际使用过程中,INCLUDE指令通常用于包含特殊功能寄存器的定义等;绝对地址段则通常用于确定中断向量的入口地址、数据存储空间;而可重定位段的方式则广泛地用于各种代码段或数据段的定义.

通过多文件编译的方式,解决了单文件编译会导致程序文件过于臃肿、可读性差、不便于维护等缺点,大大提高汇编程序代码的可读性以及可维护性.