如何解释这个例子中的 BLO

How to interpret BLO in this example

在这个例子中,我试图弄清楚 BLO 比较的是什么。如果未设置进位标志,我知道它会分支。它是将 r1 与旧的 r1(上面的指令?)进行比较,因为代码不会在 BGE 分支。非常感谢。

        LDR     r0,=0X3
        LDR     r1, =0X8F
        CMP     r0,r1
        BGE     a_label
        SUBS    r1,r1,#0XC9

a_label BLO     stop
        SUBS        r1,r1,#0X7D

stop      

在没有 CMP 指令的情况下解释条件代码可能会很棘手,因为编写助记符是为了在有 CMP 的情况下使解释变得容易。但在这个例子中,还不错:记住 CMP 只是 SUBS 并丢弃了结果,所以

SUBS   r1, r1, #0xC9
BLO    stop

表示与

相同的条件
CMP    r1, #0xC9
BLO    stop

但在 r1 中留下不同的结果。因此,条件是当 r1(旧值)lower than 0xC9 时,在无符号意义上,它会分支——换句话说,当 SUBS导致 r1.

的无符号值换行