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

我现在用的是KeilC51,网上介绍的直接调用汇编语言的语句不合适,不能用,是不是我的编译器有问题?再有,哪位大神能给个C语言调用汇编语言的方法,最好能举个例子,谢谢各位... 我现在用的是Keil C51,网上介绍的直接调用汇编语言的语句不合适,不能用,是不是我的编译器有问题?
再有,哪位大神能给个C语言调用汇编语言的方法,最好能举个例子,谢谢各位大神了。
对于能真正帮上忙的回答,愿意再奖励100百度知道积分。
展开
 我来答
ghost4063
2013-07-11 · TA获得超过6531个赞
知道大有可为答主
回答量:2940
采纳率:75%
帮助的人:3010万
展开全部
首先写个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
匿名用户
2013-07-11
展开全部
最好的办法就是写一个于汇编语言接口一致的C语言函数原型。然后反汇编,复制他的汇编代码修改。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式