关于寄存器操作的一些常用方法

1关于寄存器操作的一些常用方法:

 

1.1 描述:要操作寄存器的某一位或则某些位,可以把相应的数据左移到相应位上,再做处理。文字描述太拗口。直接举实例吧。

例如:

1.2 寄存器A 有32位,现在要让第10位 第11位 分别为1和0,操作如下:

 

A&=~(0x03<<10);//清零寄存器A的第10位 第11位

A|=0x01<<10;//再把第10位置1

1.3寄存器A 有32位,现在要让第10位,第11位,第12位 分别为0、0、1,操作如下:

 

A&=~(0x07<<10);//清零寄存器的第10 11 12 位

A|=(0x01<<12);//把寄存器第12位置1

 

1.2 要操作寄存器的某些位,首先把这些位清零 ,然后再处理。

 

1.2.1清零某位或某n位的操作是:移位取反 再按位相与

1.2.2置1 某位或某n位的操作是:移位按位相或

 

1.3 判断寄存器的某位的状态的方法:

 

把数0x01左移到相应位上,在和寄存器按位与, 结果为1 表示寄存器对应位为1,否则为0.

例如:寄存器A有32位 判断第20位,21位的状态为1还是为0。

 

char status[2];

status[0]=( A&(0x01<<20)) ? 1:0;

status[1]= (A&(0x01<<21) )? 1:0;

 

status[0]=1表示寄存器第20位为 1 否则为0.

status[1]=1表示寄存器第21位为 1 否则为0.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值