现在的位置: 首页嵌入式研究>正文
Keil C51在C程序里调用汇编程序的方法
2011年07月19日 嵌入式研究 暂无评论

在网上的资料,C51与汇编的混合编程都是一般的在C程序里嵌入汇编.很少提及c语言如何调用汇编程序,在汇编中使用C语言中定义的变量等.现在我整理了一下,在这里详尽地说明如何在汇编中使用C变量与在C与汇编如何互动等. 本文仅适用于Keil C51,戒往(QQ:8926785)总结与归类于 嵌入式社区(http://arm.im).转载请注时原出处,谢谢

要实现C与汇编混合编程,对汇编文件的格式要求很好,好在Keil MDK本身自带有一个升成汇编文件的功能,我们可以利用这个功能来完成我们想要的汇编目标文件,然后修改这个文件中的代码,这样就省去了对汇编文件的一些块设置等一堆麻烦事.

这样就有个思路,我们在C语言里先做好某个函数的模型,把我们要用到的变量等放进去.然后利用KEIL自代升成汇编功能升成汇编文件后,再去修改.最后把这汇编文件加入工程中,把原来的C文件从工程中移出.

方法:如果我们想写一个或几个汇编下的函数,可以先用一个单独的C文件,把这些函数用C把它实现,比如新建一个文件"fun.c",然后加入C代码:

unsigned char asmtest(unsigned char isfate)
{
unsigned s;
s=isfate+20;
return s;
}

然后在KEIL工程左边对这个C文件点右键,选择Options for file "xxx"这个选项,点击使右边的"Generate Assembler SRC File"和"Assemble SRC File",使检查框由灰色变成有效状态后,重新编译整个工程.

之后你会发现工程目录里会得到一个这样的文件 fun.src 这个文件就是编译器升成的汇编文件,与平时升成的那个list文件不同,这个文件可以直接拿到工程里编译.

把这个SRC文件改名成 asm后缀,直接加入工程,再把原来的fun.c移出工程,编译.OK.



【上篇】
【下篇】

给我留言

留言无头像?


无觅相关文章插件,快速提升流量