打印

C51里的左移与汇编里的左移的区别,求指点

[复制链接]
2960|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
雷影少年|  楼主 | 2012-6-25 09:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
雷影少年|  楼主 | 2012-6-25 10:34 | 只看该作者
原来学的是汇编,RL、RLC用着挺顺手的,现在学C就纠结了

使用特权

评论回复
板凳
雷影少年|  楼主 | 2012-6-25 17:44 | 只看该作者
没人愿意回答下吗?

使用特权

评论回复
地板
NE5532| | 2012-6-25 18:43 | 只看该作者
C的移位其实就是转成汇编移位来做的啊,只是C没有带进位移位罢了。楼主如果是汇编入门的,可以写个简单的C程序,看反汇编,一目了然。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
雷影少年 + 1 O(∩_∩)O谢谢
5
雷影少年|  楼主 | 2012-6-25 19:35 | 只看该作者
反汇编,这个倒是没想到,
不过C里带进位左移要怎么表示?

使用特权

评论回复
6
NE5532| | 2012-6-25 19:45 | 只看该作者
无此语句,自己多写几句话来实现。

使用特权

评论回复
7
雷影少年|  楼主 | 2012-6-25 20:29 | 只看该作者
无此语句,自己多写几句话来实现。
NE5532 发表于 2012-6-25 19:45

哦!继续百度去

使用特权

评论回复
8
wukunshan| | 2012-6-26 08:25 | 只看该作者
C51里的_crol_,_irol_,_lrol_使用时是不是仅仅针对不同的数据类型,移位后的值与"<<"有区别:C51里的_crol函数移位后补上来的是“1”,而用“<<”运算符移位后补上来的是“0”。

使用特权

评论回复
9
雷影少年|  楼主 | 2012-6-26 09:54 | 只看该作者
经过NE5532的提醒,昨晚看了下反汇编程序大致明白了左移函数的执行过程,就8条汇编指令,
_crol_是8位二进制数循环左移,每次左移执行一次RL指令
"<<"运算符移位是补零

使用特权

评论回复
10
sedatefire| | 2012-6-26 11:16 | 只看该作者
NE5532回答得好

使用特权

评论回复
11
雷影少年|  楼主 | 2012-6-26 11:29 | 只看该作者
恩恩!高手呀~
以后遇到类似的我都直接反汇编:D
学了汇编就是好:lol

使用特权

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

本版积分规则

个人签名:高明的设计不在于是否用了最新的技术,在于是否能用最小的成本做出可靠的东西来。

11

主题

714

帖子

0

粉丝