当前位置: 首页 > 工具软件 > bic > 使用案例 >

汇编指令——bic(位清除)、orr(位或)、eor (异或)

翟新
2023-12-01

以下内容源于网络资源的整理,如有其侵权请告知删除。

1、bic 位清除指令(Bit Clear)

指令格式

bic{条件}{S}  Rd,Rn,operand

指令说明

将 Rn 的值与操作数 operand 的反码按位逻辑”与”,结果存放到目的寄存器Rd 中(?)

(对于上面这个描述我是存在疑问的。根据实际代码的效果,操作数operand的哪位为1,则Rn对应的位将清除。我不清楚这里的清除是不是变为0,如果是的话,感觉bic指令的作用,是将Rn的值与操作数operand按位逻辑或,然后再将结果按位取反。因为这个指令的说明,是一些人从ARM官方文档翻译下来的,然后被传播,也不知道会不会以讹传讹呢?这个翻译会不会是说“将 Rn 的值与操作数 operand 按位取反之后的值进行按位逻辑与?因此我理解为,根据operand哪个位为1,清除Rn对应的位,然后将结果存入Rd。

关于反码的介绍,见博客原码、反码、补码,以及负数的位操作

指令示例

bic	r0, r0, #0x00002000    @ clear bits 13 (--V-)  0010 0000 0000 0000
bic	r0, r0, #0x00000007    @ clear bits 2:0 (-CAM) 0000 0000 0000 0111

2、orr 位或指令

指令格式
orr{条件}{S}  Rd,Rn,operand

指令说明

orr指令将Rn 的值与操作数operand2按位逻辑”或”,结果存放到目的寄存器Rd 中。

根据operand哪个位为1,将Rn对应的位设置为1,然后将结果存入Rd。

指令示例

orr R0,R0,#0xd3 @将R0的第[7:0]位与b'1101 0011按位或,并保存在R0中

3、eor 异或指令(exclusive or)

指令格式
eor{条件}{S}  Rd,Rn,operand 

指令说明

eor指令将Rn 的值与操作数operand2按位逻辑”异或”,相同为0,不同为1,结果存放到目的寄存器Rd 中。

 类似资料: