搜索
bottom↓
回复: 15

keilc51如何在c函数中嵌入汇编并使用传递过来的参数?

[复制链接]

出0入0汤圆

发表于 2019-9-6 18:04:15 | 显示全部楼层 |阅读模式
keilc51如何在c函数中嵌入汇编并使用传递过来的参数?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-9-6 19:04:23 | 显示全部楼层
你不是都知道是r7了  

出0入0汤圆

发表于 2019-9-6 19:04:47 | 显示全部楼层
你不是都知道是r7了  

出0入0汤圆

发表于 2019-9-6 19:25:51 | 显示全部楼层
以前有介绍,单字节R7传递,双字节R6R7一起来

出0入0汤圆

 楼主| 发表于 2019-9-6 22:38:48 来自手机 | 显示全部楼层
本帖最后由 kap 于 2019-9-7 10:54 编辑

编译提示参数Data没用到,实际运行是错的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2019-9-7 14:16:24 | 显示全部楼层
本帖最后由 kap 于 2019-9-7 14:17 编辑

自己摸索着搞定了,用汇编最简洁、速度最快

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-9-9 17:19:01 | 显示全部楼层
还是自己写个汇编文件吧,小量参数从R7-R0,顺序按照字节分,可以选写个C代码并生成汇编文件,修改就可以了;

出0入0汤圆

发表于 2019-9-9 18:38:59 | 显示全部楼层
玩了好多年汇编,还不知道可以这样玩

出0入475汤圆

发表于 2019-9-9 22:58:51 来自手机 | 显示全部楼层
既然都C代码中使用了ACC特殊符号了,就应该是可以完全按照汇编的写法写,实际上就是ACC移位和C位赋值到IO口这两句话,不太记得了是不是c语言是可以直接操作的,如果可以的话也就和汇编完全一样了,这样就省去了使用汇编限定宏的操作,全部都是c代码

出0入475汤圆

发表于 2019-9-9 23:21:21 来自手机 | 显示全部楼层
本着助人为乐以及温故知新的态度,刚才专门去复习了一下十来年没摸过的51了,发现果然比我说的还简单100倍:)。    其实你只需要一句话就完成了你的汇编: 就是 : sda=ACC&0x80;   这句话就完全是汇编代码的环移和进位位赋值到sda脚这两句汇编代码,一样一样的,不信你马上试下,神奇吧:)

出0入0汤圆

发表于 2019-9-10 01:23:15 | 显示全部楼层
看过STC的例程代码,用C直接操作ACC累加器

出0入0汤圆

发表于 2019-9-10 05:53:49 来自手机 | 显示全部楼层
楼主的要求是函数体内汇编,也是可以实现的。常见的是定义汇编函数,用c调用。用c调用的话,直接编个demo函数,仿真看汇编,任何单片机的程序都可以依样画葫芦出来的。

出0入0汤圆

 楼主| 发表于 2019-9-10 09:17:25 | 显示全部楼层
1a2b3c 发表于 2019-9-9 23:21
本着助人为乐以及温故知新的态度,刚才专门去复习了一下十来年没摸过的51了,发现果然比我说的还简单100倍: ...

还真是的,我就是想要这种效果,又省去汇编限定宏操作,非常非常感谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入475汤圆

发表于 2019-9-10 18:58:11 来自手机 | 显示全部楼层
kap 发表于 2019-9-10 09:17
还真是的,我就是想要这种效果,又省去汇编限定宏操作,非常非常感谢
...

其实吧,简单的东西要去深究还真可以有好多潜力可挖:) 上面那个代码其实我自己之前都没有整明白过,以前老是想着移位肯定是要有个ACC《1 的专门移位操作,这样菜相当于汇编的RLC ,但是才注意keil的这个感觉是进行了专门优化或者约定的处理:即是只要看到是ACC&0x80,就编译为RLC A,看到ACC&0x01就编译为RRC A 这点一般确实正常不好理解

出0入0汤圆

 楼主| 发表于 2019-9-11 08:52:06 | 显示全部楼层
1a2b3c 发表于 2019-9-10 18:58
其实吧,简单的东西要去深究还真可以有好多潜力可挖:) 上面那个代码其实我自己之前都没有整明白过,以 ...

是的,很多东西要深入才能体会到其中的技巧。

出0入0汤圆

发表于 2020-1-19 20:27:47 | 显示全部楼层
我安装KEIL5时出现了这个,是什么意思呀,我现在把它关掉了,桌面上有5的图标,可以正常用吗
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 09:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表