@ 位运算指令 and(与) orr(或) eor(异或) bic(位清除)
@ 语法格式:opcode{s}{cond} Rd, Rn, oprand2
@ 口诀:
@ 与0清0,与1不变
@ 或1置1,或0不变
@ 异或1取反,异或0不变
/*
练习题3:
假设R0寄存器中是一个未知的值。
31 0
**** **** **** **** **** **** **** ****
*/
ldr r0, =0x12345678
@ 1> 将R0寄存器的第[3]位置1,保证其他位不变
orr r0, r0, #0x8
mov r1, #0x1
orr r0, r1, lsl #3
orr r0, r0, #(0x1 << 3)
@ 2> 将R0寄存器的第[6]位清0,保证其他位不变
mov r1, #0x1
mvn r1, r1, lsl #6
and r0, r0, r1
and r0, r0, #(~(0x1 << 6))
bic r0, r0, #(0x1 << 6)
@ 3> 将R0寄存器的第[24:21]位置1,保证其他位不变
orr r0, r0, #(0xF << 21)
@ 4> 将R0寄存器的第[29:25]位清0,保证其他位不变
bic r0, r0,r #(0x1F << 25)
@ 5> 将R0寄存器的第[30:24]位修改为1010101,保证其他位不变
@ 第一步:先清0
bic r0, r0, #(0x7F << 24)
@ 第二步:再把相应的位置1
orr r0, r0, #(0x55 << 24)
bic r0, r0, #0xFF @ 将R0寄存器的[7:0]位清0
位运算指令
最新推荐文章于 2024-08-22 09:29:59 发布