ARM汇编:BNE和TST和BEQ

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weibo1230123/article/details/84037170

                                  ARM汇编:BNE和TST

(1)例一:TST与BNE搭配

TST r0,#02

BNE sleep

LDR  r1,#0

解释:位比较,先进行and运算,如果r0第2位不为1,则与的结果为0,设置标志位zero=1,继续下面的ldr指令。反之,zero=0,跳转到sleep执行。

bne指令: 非零则跳转

个人总结:TST 和BNE 连用: 先是用TST 进行位与运算,然后将位与的结果与0比较,如果不为0,则跳到bne紧跟着的标记(如bne sleep,则跳到sleep处)。

TST 和BEQ连用: 先是用tst进行位与运算,然后将位与的结果与0比较,如果为0,则跳到beq紧跟着的标记(如bne AAAA,则跳到AAAA处)。

(2)例二:CMP同BNE搭配

CMP r1,r2

BNE copy_loop

这个CMP搭配下边的BNE指令构成了如果r1≠r2则执行BNE指令,跳转到copy_loop函数处执行。否则,就跳过下边,bne指令向下执行。

(3)例三:CMP同BEQ搭配

CMP r0,r1

BEQ clean_bss

如果r0=r1,就执行BEQ,跳转到clean_bss函数处执行,否则跳过BEQ向下执行。

总结:其实上边两句都是跳转指令,跳转到相关函数处执行。区别在于执行跳转的条件不同。
 

猜你喜欢

转载自blog.csdn.net/weibo1230123/article/details/84037170
tst
今日推荐