欢迎来到天天文库
浏览记录
ID:33590660
大小:252.50 KB
页数:4页
时间:2019-02-27
《单片机c语言与汇编语言的混合编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、万方数据科技信息oIT技术论坛oSCmNCE&TEC删OLOGY唧0蹦ATl0N2008年第6期单片机C语言与汇编语言的混合编程陈百良(中山火炬职业技术学院职高部广东中山528437)【摘要】汇编语言的机器代码生成效率高、执行速度快,但可读性却并不强;而C语言的可读性和可移植性却远远超过汇编语言,用C语言开发中大型软件的周期要比用汇编语言短很多,但C语言很难解决高时效性等代码编写的问题,此时便可利用汇编语言来实现。本文便是针对这一问题,详细介绍了单片机C语言与汇编语言混舍编程的实现方法。【关键词】
2、C语言:汇编语言;混合编程在单片机C语言与汇编语言的混合编程过程中.C语言调用汇编代码常有两种方法:一是直接在C语言程序中嵌入汇编语句:二是C语言调用汇编语言子程序。把汇编语言程序加入到C语言程序中.必须使汇编程序和C程序一样具有明确的边界、参数、返回值和局部变量,必须为汇编语言编写的程序段指定段名并进行定义。如果要在它们之问传递参数,则必须保证汇编程序用来传递参数的存储区和C函数使用的存储区是一样的。1.C语言内嵌汇编代码1.1内嵌汇编代码的格式在C语言程序中嵌入汇编代码。可以通过预编译指令“∞
3、m”来实现。其格式如下::C代码卸阳舭a鹊m:汇编代码却ra殍Mend∞m:C代码1.2Keil软件中含内嵌扩编代码的C文件的编译与连接1.2.1工程相关选项的设置在喇ect窗口中包含汇编代码的C文件上点击右键,选择“0pti∞sfor⋯”,然后在弹出的窗口中选中“GenerateAssemblerSRCFile”和“A8∞mbleSRCFile”两项。选中这两项编译器才会将“∞m”与“end鹊m”中的代码复制到输出的SRC文件中.然后才会将这些代码放入它所产生的目标文件中。在编译过程中产生SRC
4、文件为C文件对应的汇编文件,我们还可以对sRC文件进行仔细的分析来了解其函数封装规则。1.2.2加入库文件根据所选择的编译模式,在工程中添加相应的库文件(如Small模式时。库文件为C5lS.“b)。1.2.3编译与连接选择“Projec曲uild1k铲t”仅对修改过的文件进行编译与连接处理,或选择“Pmject,BuildallTar8etFiles”对所有源程序全部进行编译与连接,生成目标代码。1.3内嵌汇编代码的C文件实例}幸木奉宰事幸车幸宰奉}霉ex咖plel.c幸········}···
5、·★·椭ncludevoid咖in(void){P2=1:#p阳孕na髓mMOVR7搿lODEI由:MOVR6.#20DELl:DJNZR6.DELlDJNZR7.DELO。卸ml伊mendasmP2=o:le枷plel.c经过编译与连接后可得到下面的咖pkl.sRc文件:;沁xmplel.SRCgeneratedfmm:ex咖plel.c⋯⋯(寄存器描述省略)?PR?main?EXAMPLElSEGMENTCODEEx‘nlNCODE(?C—贸ARTUP)PUBUC啪in;撕n
6、clude;voidmain(void)RSEG?PR?main?EXAMPLElmain::SOURCEUNE撑2;{:SOURCELINE#3;P2=l;MOV:SOURCEUNE#4P2.椰1H;#p糟gmaasm:MOVR7_#10MOVR7.#10:DEL0:MOVR6.#20DEID:MOVR6.#20:DELl:DJNZR6,DELlDELl:DJNZR6.DELl;DJNZR7,DEL0DJNZR7,DEL0;卸mgmaend∞m;P2=0;:SOURCELIN
7、E撑llCLRAMOVP2A;l:SOURCEUNE撑12RET:ENDOFmainEND从上述SRC文件中可以看出。在“∞m”与“end∞m”中的代码被复制到输出的SRC文件中2.C语言调用汇编函数2.1C语言调用不传递参数的汇编函数2.1.1汇编文件的格式在汇编语言中。要求用汇编语言编写的函数和用C编译器编译出来的代码风格一样,这样可以让开发的程序具有很好的可读性和可维护性。另外也很容易和C编写的函数进行连接。首先在程序存储区中定义段,其次利用PUBuC声明函数为公共函数,再用RSEG表示函数
8、可被连接器放置在任何地方,最后编写汇编函数。其实例DELAY.幽m如下:·+·¨:·}···¨聿DELAY.鸽m······宰·}·}··}宰宰?PR?DELAYsEGMENTCODE:/,在程序存储区中定义段PUBUCDELAY;,,声明函数为公共函数RSEG?PR?DELAY:/,函数可被连接器放置在任何地方DEL气Y:MOVR7.#lODELO:MOVR6.#20DELl:DJNZR6,DELlDJNZR7。DEIJD万方数据科技信息oIT技术论坛o20∞年第6期RE-rEN
此文档下载收益归作者所有