1. 程式人生 > >ARM彙編:BNE和TST和BEQ

ARM彙編:BNE和TST和BEQ

                                  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向下執行。

總結:其實上邊兩句都是跳轉指令,跳轉到相關函式處執行。區別在於執行跳轉的條件不同。