打印

求助,进位位循环移位

[复制链接]
1666|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xueyan82|  楼主 | 2010-11-21 00:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在网上找到,伪本征函数里面内容
#define _rrca_()          CY   = ACC & 0x01 //产生RRC A指令
#define _rlca_()          CY   = ACC & 0x80 //产生RLC A指令
但是我用KEIL C编译看汇编代码时并没有相应代码,还是烧录后就可以呢??
这个宏指令真的能达到效果么???

相关帖子

沙发
原野之狼| | 2010-11-21 01:25 | 只看该作者
最好不要直接操作寄存器

使用特权

评论回复
板凳
ejack| | 2010-11-21 08:21 | 只看该作者
这样操作受到的限制很多,建议别这样自找麻烦。
想让编译器产生移位有多种方法,参看以前的帖子。

使用特权

评论回复
地板
liang7143| | 2010-11-21 13:01 | 只看该作者
keil c库提供这几个函数
在INTRINS.H文件中 看到声明。我帮你摘录一下:

/*--------------------------------------------------------------------------
INTRINS.H

Intrinsic functions for C51.
Copyright (c) 1988-2004 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __INTRINS_H__
#define __INTRINS_H__

extern void          _nop_     (void);
extern bit           _testbit_ (bit);
extern unsigned char _cror_    (unsigned char, unsigned char);
extern unsigned int  _iror_    (unsigned int,  unsigned char);
extern unsigned long _lror_    (unsigned long, unsigned char);
extern unsigned char _crol_    (unsigned char, unsigned char);
extern unsigned int  _irol_    (unsigned int,  unsigned char);
extern unsigned long _lrol_    (unsigned long, unsigned char);
extern unsigned char _chkfloat_(float);
extern void          _push_    (unsigned char _sfr);
extern void          _pop_     (unsigned char _sfr);

#endif

使用特权

评论回复
5
古道热肠| | 2010-11-21 16:39 | 只看该作者
您这函数是C51的内容,标准C没有带进位的移位指令,因而遇此类需求要优化时,建议单独编制汇编函数来实现,然后用C调汇编来实现混合编程,发挥两者的优势。

使用特权

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

本版积分规则

1

主题

1

帖子

1

粉丝