语法:

sub{条件}{s} Rd, Rs, 寄存器移位操作或立即数

备注:

  • {条件} 可选项
  • {s} 可选项.
    有s时,最终运算结果影响CPSR的条件标志位;
    没有s时,最终运算结果不影响CPSR的条件标志位;
  • Rd 目的寄存器
  • Rs 源寄存器

运算原理:

Rd = Rs - 寄存器移位操作或立即数

常见减法的形式:

sub Rd, Rn         ;//Rd -= Rn
sub Rd, Rn, #立即数 ;//Rd = Rn-立即数
sub Rd, #立即数     ;//Rd -= 立即数
sub Rd, Rn, Rm     ;//Rd = Rm-Rm

示例:

  • 减法操作:

    sub r0, r0, #1    ;//r0=r0-1
  • 当 subs 指令与跳转指令配合使用时,可以实现循环,此时不再需要 cmp :

    
      mov    r0, #0x10
    1
      subs    r0, r0, #1
      ;//当上面 r0 递减之后,不为 0 时,就向前调整到标号 1 处执行
      bne    %B1