数据处理指令之: TST测试指令

  • 2013/09/13

6.9  TST测试指令

1.指令的编码格式

TST(Test)测试指令用于将一个寄存器的值和一个算术值做比较。条件标志位根据两个操作数做“逻辑与”后的结果设置。

指令的编码格式如图6.10所示。

图6.10  TST指令编码格式

2.指令的语法格式

TST{<cond>}  <Rn>,<shifter_operand>

① <cond>

为指令编码中的条件域。它指示指令在什么条件下执行。当<cond>忽略时,指令为无条件执行(cond=AL(Alway))。

② <Rn>

指定第一个源操作数寄存器。

③ <shifter_operand>

使用ARM的通用寻址模式确定第二个源操作数。它影响指令编码格式中的I(bit[25])位和shifter_operand(bits[11∶0])位。

注意

当指令的编码格式中I位等于0并且移位操作数shifter_operand中bit[7]和bit[4]也都等于1时,指令并非TST指令。详情请参阅ARM系统结构参考手册。

 

3.指令操作的伪代码

指令操作的伪代码如下面程序段所示。

If  ConditionPassed{cond}  then

     ALU_out = Rn AND shifter_operand

     N Flag = ALU_out[31]

     Z Flag = if ALU_out==0 then 1 else 0

     C Flag =shifter_carry_out

     V Falg=unaffected

 

4.指令举例

【例6.9】TST指令举例。

TST类似于CMP,不产生放置到目的寄存器中的结果。而是在给出的两个操作数上进行操作并把结果反映到状态标志上。使用TST来检查是否设置了特定的位。操作数1是要测试的数据字而操作数2是一个位掩码。经过测试后,如果匹配则设置Zero标志,否则清除它。和CMP指令一样,该指令不需要指定S后缀。

下面的指令测试在R0中是否设置了位0

  TST     R0, #%1

人工客服
(售后/吐槽/合作/交友)

相关资讯

  1. 1.
  2. 2.
  3. 3.
  4. 4.
  5. 5.
  6. 6.
  7. 7.
  8. 8.
  9. 9.
  10. 10.
  11. 11.
  12. 12.
  13. 13.
  14. 14.
  15. 15.
  16. 16.
  17. 17.
  18. 18.
  19. 19.
  20. 20.
查看全部20条内容