打印

请教如何操作寄存器的低4位

[复制链接]
1190|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gurong60|  楼主 | 2013-6-4 11:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
叶伤| | 2013-6-4 11:30 | 只看该作者
先取出来,再清低四位,再或你要写入的低四位,比如写入A,data=read(),data=data&0xf0,data=data|A,send(data)就行了。

使用特权

评论回复
板凳
兰天白云| | 2013-6-4 11:37 | 只看该作者
采用与指令和或指令组合实现

使用特权

评论回复
地板
zwz7219| | 2013-6-4 11:57 | 只看该作者
unsigned char Data;

//下文中的 X 表示 0-F

Data &= 0xF0;       //低 4 位先清 0,后赋值为 X
Data |= 0x0X;

Data &= 0xFX;     //X 的某位为 0 时低 4 位相应位清0

Data |= 0x0X;      //X 的某位为 1 时低 4 位相应位置位

Data ^= 0x0X;     //X 的某位为 1 时低 4 位相应位取反

使用特权

评论回复
5
gurong60|  楼主 | 2013-6-4 12:19 | 只看该作者
太好了,谢谢

使用特权

评论回复
6
airwill| | 2013-6-4 13:09 | 只看该作者
51 倒是有个特别的指令, 对半个寄存器赋值,  XCHD 半字节交换
但不被 C 支持.
现在常见的其他处理器都得象楼上各位那样, 多条指令来完成

使用特权

评论回复
7
SunFans| | 2013-6-4 13:13 | 只看该作者
嗯,二楼说得很详细……

使用特权

评论回复
8
coody| | 2013-6-4 17:20 | 只看该作者
data = (data & 0xF0) | (i & 0x0F);

使用特权

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

本版积分规则

个人签名:对手,队友

179

主题

1307

帖子

4

粉丝