打印

关于C51混合编程,我来抛砖引玉,大家来讨论下!!!

[复制链接]
2049|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaoyuan_ly|  楼主 | 2007-2-9 14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
一级菜鸟| | 2007-2-9 20:00 | 只看该作者

没看懂你第3点要表达什么

使用特权

评论回复
板凳
mohanwei| | 2007-2-9 20:37 | 只看该作者

先鼓励一下楼主的钻研精神,呵呵

现在普通的单片机编程以C51为主,所谓混合编程,往往都是在关键的地方嵌入一小段汇编代码。
嵌入汇编只要你用过一次你就会觉得很简单了。无非就是将一段汇编代码搞得“像”一个C函数……
所以,我往往是先编写一个C函数,把输入参数、局部变量、返回参数都定义好,然后用#SRC将它编译成汇编代码,这样就得到汇编“函数”的框架了,最后在里面直接编写算法(不要修改那些段定义什么的,虽然它们看起来有点乱)。
想再深入研究的话,还是好好看看keil的编译器手册吧,如果看英文头大,可以搜索一下,有热心网友已经将它翻译成中文了。

使用特权

评论回复
地板
MAME32| | 2007-2-9 21:41 | 只看该作者

汇编编程不一定用绝对地址编程。

汇编编程不一定用绝对地址编程。
简单的汇编程序用绝对地址可以,程序大了,用绝对地址基本上是行不通的。
大的汇编程序要用SEGMENT伪指令定义段的方法编程。

C反汇编就是以段结构的汇编代码。
反汇编出来的汇编代码和原来的C是等效的,
可以把某个C文件用它的反汇编代替。
C调用汇编等效与其反汇编程序调用汇编。
在汇编中调用C一样,等效于汇编调用C的反汇编代码。

手写的汇编代码如果采用段结构可以轻易地被C调用。

最好把C和汇编放在单独的文件中,使他们互不影响。

以固定的寄存器传递参数,如果不能确定,看反汇编代码就知道C与汇编怎么接口。

一句话:能看懂反汇编代码(特别是伪指令的使用),C汇编混合编程就轻而易举。





使用特权

评论回复
5
xiaoyuan_ly|  楼主 | 2007-2-9 21:45 | 只看该作者

谢谢3楼的慷慨!!! 大家再来点玉啊 !!!

谢谢3楼的慷慨!!! 大家再来点玉啊 !!!

使用特权

评论回复
6
一级菜鸟| | 2007-2-9 21:47 | 只看该作者

俺就是看不懂第3段,汇编什么时候必须用绝对地址了?

使用特权

评论回复
7
yanfengzhu| | 2007-2-9 21:56 | 只看该作者

楼主说的基本不正确。

因为这几天我也在整理与这相关的资料,因此就不在这里多说了,希望能在年前赶出来。

使用特权

评论回复
8
xiaoyuan_ly|  楼主 | 2007-2-9 22:02 | 只看该作者

谢谢4的解释!!! 不过还有一个问题想请教!!



    再次感谢MAME32!!!

使用特权

评论回复
9
xiaoyuan_ly|  楼主 | 2007-2-9 22:03 | 只看该作者

感谢yanfengzhu 我等你的好心得,谢谢!!

如体!!!

使用特权

评论回复
10
xiaoyuan_ly|  楼主 | 2007-2-9 22:05 | 只看该作者

不好意思了,一级菜鸟!! 我也是个菜鸟!!

我说得也是自己得一点感觉!!!

很欢迎大家得传道授业和解惑!!!!

使用特权

评论回复
11
hotpower| | 2007-2-10 03:29 | 只看该作者

我喜欢看反汇编的~~~

使用特权

评论回复
12
xiaopet| | 2007-2-10 08:55 | 只看该作者

RE

对于楼主这个主题,我很想说一把,因为自己原来就是一直用汇编的,早段时间才开始用C写一些程序。很想写一个C与汇编汇混合编写的,无耐都是编译出来有警靠错误。
在网上找了好多方法,但一直没解决。正在进一步学习中!

使用特权

评论回复
13
xiaoyuan_ly|  楼主 | 2007-2-10 10:10 | 只看该作者

to:MAME32 补充自己的8楼的提问问题?!

   不好意思了      

使用特权

评论回复
14
wan_aigo| | 2007-2-10 17:33 | 只看该作者

建议

如果对C中调用汇编有固定的格式,如果不熟悉,可以把C写好后,编译成汇编后再根据自己需要改动。可以参考相关书籍。

使用特权

评论回复
15
hotpower| | 2007-2-10 23:38 | 只看该作者

参见《Keil C51红杏出墙记》节选

使用特权

评论回复
16
hotpower| | 2007-2-10 23:46 | 只看该作者

哈哈~~~网上转帖还不少~~~有时间搞个"全集"~~~

不过现在对51已经厌倦了~~~没什么兴趣~~~
相关链接:http://www.baidu.com/s?wd=%A1%B6keil+c51%BA%EC%D0%D3%B3%F6%C7%BD%BC%C7%A1%B7&cl=3&tn=msn886_pg

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

284

帖子

1

粉丝