C51里编写移位与汇编写移位不同

2019-03-24 20:09发布

   用C51写的程序:头文件略了。            uchar a;            a=0xfe;            a<<=1;          此处运行后的结果为0xfc,            a<<=1;          运行后的结果为0xf8,    用汇编写的程序:            MOV  A,#0FE;            RL A      ;结果为#0FD            RL A      ;结果为#0FB   请教高手,怎样在C51里面实现象汇编这样的功能,我的C51也是刚学的。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
ddllxxrr
1楼-- · 2019-03-25 01:31
用那个进位位C,反正能实现,就是把进位位给加进来,就对了,
好像这样编:
  uchar a;
     a=0xfe;
     a<<=1;
     a= a+CY;
CY据体是什么你可查一下

其实你的汇编叫循环右移,C实现不了,就得加上进位位来实现
keli55
2楼-- · 2019-03-25 04:25
不用查,是进位标志,
keli55
3楼-- · 2019-03-25 05:34
非常感谢2楼的朋友,
keli55
4楼-- · 2019-03-25 05:37
 精彩回答 2  元偷偷看……
keli55
5楼-- · 2019-03-25 06:17
可以了,再次感谢2楼的朋友提示,只要在移位后再加上0x01就可以了,CY是位标志,不能够与寄存器里的数相加,在调试的时候发现在C51里面移位是先对CY清0后再进行带进位的移位,至此,这个问题终于搞清楚了,困惑了我好几天
David_Lee
6楼-- · 2019-03-25 12:05
intrins.h里包含了一个循环移位函数,貌似可以直接用,楼主可以试一下。

一周热门 更多>