• 《现代电子技术》2006年第24期摘录:Keil C51中C51程序与汇编程序的接口方法

如发现有乱码, 请直接从这里浏览原文
正文摘录:

张玉峰等:KeilC51虫垦!!堡壁墨汇绳堡星鱼堡旦亘鎏KeilC51中C51程序与汇编程序的接口方法张玉峰,荀建军(西安通信学院陕西西安710106)摘要:C语言程序与汇编语言程序的相互调用可视为函数的调用,只不过此函数是采用不同语言编写。在c和汇编程序的相互调用中,要求汇编程序必须服从KeilC51中对函数名的转换规则,同时也要弄清C函数的参数传递规则,通过实例详细介绍KeilC51中C51程序与汇编程序相互调用以及汇编程序与C51程序相互调用时的接口建立方“I-,并给出在不同的应用中对接口进行简化的方法。关键词:KeilC51;C51函数;参数传递;汇编函数;接口中图分类号:TP311文献标识码:B文章编号:1004—373X(2006)24—058—03InterfaceMethodofC51inKeliC51andAssemblerZHANGYufeng.XUNJianjun(Xi’anCommunicationInstitute,Xi’an,710106,China)Abstract:TheinteractivetransferofCLanguageProgramandAssemblyLanguageProgramcouldberegardedasfunction—a1transfer.IninteractivetransferofCandassembler,itisrequiredthatassemblershouldobeythetransferruleoffunctionnameinKeliC51.Meanwhile,itisalsorequiredtounderstandparametertransferruleofCfunction.Withactualexamples,thispaperexDlainstheinterfacemethodofinteractivetransferbetweenKeliC51abdassembler,betweenassemblerandC51,andthesimplificationmethodforinterfacesinvariousapplications.Keywords:KeliC51;C51function;parametertransfer;assemblefunction;interface1引言Cx51编译器能对C51源程序进行高效率的编译,生成高效简洁的目标代码,在绝大多数场合采用c语言编程即可完成预期的任务。尽管如此,有时仍需要采用一定的汇编语言程序,如对于某些特殊的I/O接口地址的处理、中断向量地址安排、提高程序代码执行速度等。为此Cx51编译器提供了与?[编语言程序的接口规则,按此规则可以方便地实现C语言程序与汇编语言程序的相互调用。实际上C语言程序与汇编语言程序的相互调用也可视为函数的调用,只不过此函数是采用不同语言编写的而已。当C51模块程序编译成目标文件后,其中的函数名依据其定义的性质不同会转换为不同的函数名,因此,在c和汇编程序的相互调用中,要求汇编程序必须服从这种函数名的转换规则,否则将无法调用到所需的函数或出现错误,同时也要弄清C函数的参数传递规则,这样才能做到正确调用。2C语言程序模块间参数传递规则C51中参数传递方法有2种。收稿日期:2006—07—2658(1)通过寄存器传递函数参数最多只能有3个参数通过寄存器传递,规律如表1所示。表1通过寄存器传递参数的规律(2)通过固定存储区传递(fixedmemory)这种参数传递的段的地址空间取决于编译时所选择的存储器模式。参数传递段首地址所采用的共公符号(public)如下:?functionname?BIT//bit类型数据参数传递段首地址?functionname?BYTE//其他类型数据参数传递段首地址至于这个固定存储区本身在何处,则由存储模式默认,small模式位于片内RAM空间,其他模式位于外部RAM内。(3)函数的返回值函数返回值一律存放于寄存器中,有如表2所示的规律。

阅读此文(图):   在线翻阅