首先,TST指令是位测试指令,其将寄存器Rn值与操作数2的值按位进行与操作,但它操作完并不存储操作后的数据,只是更新CPSR中相应位。具体为,TST指令测试的结果为全0时,CPSR中的EQ标志有效,只要有一位为1,则CPSR中的NE标志有效。而BIC指令就是简单地将寄存器的值与操作数的反码与操作,结果存入寄存器。结合你的具体语句:
TST R5 , #BIT23 ;意思就是测试R5中值的23位,R5 & 0x0080_0000,用结果更新CPSR
BICNE R5 , R5 , #0x00000040 ;意思就是当“NE”标志位有效时,也就是当测试的R5的结果是23位为1,则执行BIC指令,R5 & ~0x00000040,也就是清除第6位。这样能明白吗?
q 应当称为“判断的条件”,上一条影响 Z