51单片机,怎么样使得C语言与汇编语言结合起来?我想在C语言里调用汇编语言函数。

我现在用的是Keil C51,网上介绍的直接调用汇编语言的语句不合适,不能用,是不是我的编译器有问题?
再有,哪位大神能给个C语言调用汇编语言的方法,最好能举个例子,谢谢各位大神了。
对于能真正帮上忙的回答,愿意再奖励100百度知道积分。

首先写个H文件,把汇编的函数申明在里面
例如:
extern bit plus(iu8 *d_dat,iu8 *s_dat,u8 len);
然后,建立ASM文件,例如tool.asm
先指定存储区
?PR?_plus?TOOL SEGMENT CODE
?PR?固定的,然后是函数名前+下划线,?TOOL 是这个asm的名字,CODE是存储区
然后向外申明函数
PUBLIC _plus
最后是函数体
RSEG ?PR?_plus?TOOL
_plus:
USING 0
。。。。
ret
参数传递,R7是第一个参数,R6是第二个。。。,如果不是char ,或参数是指针,那么占用多个Rn,
例如:
这个函数中,d_dat是R7,R6;s_dat是R5,R4;len是R3追问

谢谢大神,你的回答很有用,我做了个测试,真的成功了,不过我用的是void tt(void)类型的函数,就是没有返回值,没有参数的,想请教大神,你举的例子,返回值怎么办?

追答

如果参数中有指针的,那就指针返回,如果参数中没有指针返回,则用R7,R6等返回,例如char返回,就是R7,int返回就是R6,R7

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-11
最好的办法就是写一个于汇编语言接口一致的C语言函数原型。然后反汇编,复制他的汇编代码修改。