
51单片机,怎么样使得C语言与汇编语言结合起来?我想在C语言里调用汇编语言函数。
我现在用的是KeilC51,网上介绍的直接调用汇编语言的语句不合适,不能用,是不是我的编译器有问题?再有,哪位大神能给个C语言调用汇编语言的方法,最好能举个例子,谢谢各位...
我现在用的是Keil C51,网上介绍的直接调用汇编语言的语句不合适,不能用,是不是我的编译器有问题?
再有,哪位大神能给个C语言调用汇编语言的方法,最好能举个例子,谢谢各位大神了。
对于能真正帮上忙的回答,愿意再奖励100百度知道积分。 展开
再有,哪位大神能给个C语言调用汇编语言的方法,最好能举个例子,谢谢各位大神了。
对于能真正帮上忙的回答,愿意再奖励100百度知道积分。 展开
2个回答
展开全部
首先写个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
例如:
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语言函数原型。然后反汇编,复制他的汇编代码修改。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询