×
单片机 > 单片机程序设计 > 详情

arm学习——有关位操作的总结

发布时间:2021-03-16 发布时间:
|

在学习arm的过程中,感觉寄存器,基本不会提供位操作,而是整体的操作, 
整体操作的就是要注意在对某位赋值的时候不要影响到其他位,看上去不简单, 
其实,整体操作有技巧, 


那么就来总结一下:

 
1、首先要理解,“|”符号就是用来置1的,“&”就是用来置0的。 
2、不管置1还是置0,”<


结合上面两条规则,事情就很简单了: 
比如先把某个寄存器的第6位置1,那么首先写出(1<<6)待用。 
然后置1就用“|”的规则,所以就是:reg |= (1<<6); 
要是第6位置0呢: 
一样的,首先写出(1<<6)待用。 
置0就用“&”,加上取反符号的规则。所以就是:reg &= ~(1<<6);


好了,现在理解一个难一点的: 
reg &= ~( (1<<6) | (1<<7) | (1<<2) ); 
这个表示什么意思?看到“&=”就知道要将某位置0. 
(1<<6) | (1<<7) | (1<<2)就表示,2,6,7都置1,在看到取反。 
那么这句话的意思就是将2,6,7都置0.


我们再返回到程序 :

if(dwDat & (1<<2) ) 
这句有是什么意思呢? 
就是判断swDat的第二位是否为1,第二位如果为1,则结果为1,if判断为真。 
这个可以理解为一个读操作~

关键字:arm  位操作  寄存器 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会