单片机c语言与汇编语言混合编程84028

单片机c语言与汇编语言混合编程84028

ID:34493936

大小:276.46 KB

页数:4页

时间:2019-03-06

单片机c语言与汇编语言混合编程84028_第1页
单片机c语言与汇编语言混合编程84028_第2页
单片机c语言与汇编语言混合编程84028_第3页
单片机c语言与汇编语言混合编程84028_第4页
资源描述:

《单片机c语言与汇编语言混合编程84028》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、文章编号:1004-5422(2008)03-0208-04单片机C语言与汇编语言混合编程杨加国(成都大学电子信息工程学院,四川成都610106)摘要:介绍了单片机C语言与汇编语言混合编程的两种基本方式,C语言程序中嵌入汇编程序和调用汇编程序的参数传递方法,以及在keilC51中的具体处理方法.关键词:混合编程;嵌入汇编;编译;参数传递中图分类号:TP314文献标识码:A有复杂的跳转的时候.在单片机C语言程序中嵌0引言入汇编程序是通过C51中的预处理指令#pragma在单片机应用系统设计中,过去主要采用汇asmPendasm语句实现,格式如下:编语言开发程序.汇编语言编写的程序对单片机

2、#pragmaASM;汇编程序代码硬件操作很方便,编写的程序代码短,效率高,但#pragmaENDASM系统设计的周期长,可读性和可移植性都很差.C语言程序开发是近年来单片机系统开发应用所采通过#pragmaasm和#pragmaendasm告诉用的主要开发方式之一,C语言功能丰富、表达能C51编译器它们之间的语句行不用编译成汇编程力强、使用灵活方便、开发周期短、可读性强、可移序代码.植性好.但是,采用C语言编程还是存在着如对硬1.2在C51中调用汇编程序件没有汇编方便、效率没有汇编高、编写延时程序在C51中调用汇编程序的方法应用较多,C模精确度不高等缺点,因而现在单片机系统开发中块与

3、汇编模块的接口较简单,分别用C51与A51对经常用到C语言与汇编语言混合编程技术.混合源程序进行编译,然后用L51将obj文件连接即可,编程技术可以把C语言和汇编语言的优点结合起关键问题在于C函数与汇编函数之间的参数传递来,编写出性能优良的程序.单片机混合编程技术和得到正确返回值,以保证模块间的数据交换.通常是,程序的框架或主体部分用C语言编写,对2C51与汇编程序的参数传递那些使用频率高、要求执行效率高、延时精确的部分用汇编语言编写,这样既保证了整个程序的可在C51中嵌入汇编程序或调用汇编程序,其[1,2]参数传递的过程是不一样的.读性,又保证了单片机应用系统的性能.2.1在C51中

4、嵌入汇编程序的参数传递1混合编程的基本方式对于在C语言程序中通过#pragmaasm和#C语言与汇编语言混合编程通常有两种基本pragmaendasm嵌入的汇编程序,C51编译器在编译方法:在C语言中嵌入汇编程序和在C语言中调时只是将当中的汇编程序不编译,而不做其他任用汇编程序.何处理,因此不存在函数调用时的参数传递和返1.1在C51中嵌入汇编程序回值问题.如果要在C程序中和汇编程序中实现在C51中嵌入汇编程序主要用于实现延时或数据传递,可以通过变量或特殊功能寄存器来实中断处理,以便生成精练的代码,减少运行时间.现,例如,在C程序的变量定义部分定义Z变量,嵌入式汇编通常用在当汇编函数不

5、大,且内部没在C语言程序和汇编程序中共同访问Z变量,这收稿日期:2008-05-08.作者简介:杨加国(1972—),男,硕士,讲师,从事单片机应用技术研究1第3期杨加国:单片机C语言与汇编语言混合编程·209·样,C语言程序可以通过Z变量把参数传递给汇表2函数参数传递举例编程序,汇编程序可以通过Z变量把参数返回给C声明说明语言程序.func1(inta)惟一一个参数a在寄存器R6中和R7中传递.2.2在C51中调用汇编程序的参数传递第一个参数b在寄存器R6中和R7在C51中调用汇编程序是通过函数调用的形func2(intb,中传递,第二个参数c在寄存器R4intc,int3d)中和R

6、5中,传递第三个参数d在式来实现的.由于C51程序函数有明确的参数和寄存器R1中、R2中和R3中传递.返回值约定,因此在C51中调用汇编程序进行参第一个参数e在寄存器R4中、R5中,R6中和R7中传递,第二个参数func3(longe,数传递时都必须严格遵守C51函数的参数和返回f不能用寄存器,因为long类型可longf)用的寄存器已被第一个参数所用,值相关约定.这个参数用固定存储区传递.在C51中调用汇编程序进行参数传递关键在第一个参数g在寄存器R4中、R5func4(floatg,中、R6中和R7中传递,第二个参数于要弄清C51函数的参数传递规则.在C51中调charh)h不能用

7、寄存器传递,只能用固定用汇编程序进行参数传递的方式有两种存储区传递.:一种是通过寄存器传递参数;一种是通过固定存储区传段首地址“,?function-name?BYTE”保存别的参[3,4]递.数段首地址,即使通过寄存器传递参数,参数也将2.2.1通过寄存器传递参数.在这些段中分配空间,参数按声明的先后在每个FranklinC51规定调用函数最多可通过51单段中顺序保存.片机的工作寄存器传递3个参数,余下的通过固用做参数传递的固定存储区可在内部

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。