回覆列表
  • 1 # lanfengz2

    bne 1b說的是測試條件非0(CPSR的Z位不為0)則向後跳,跳到標號1的位置。在ARM彙編中,數字標號的名稱是可以重複的,也就是可以有多個標號“1”,這就要透過標號後面的b(below)和f(forward)確定跳到哪個標號。譬如說,以下彙編指令:

    MOV R0, #3 ; R0=0x03

    1

    CMP R0, #0 ; 比較R0是否等於0,結果寫入到CPSR的Z位(Z for zero)

    BEQ 1F ; R0等於0則退出迴圈

    SUB R0, R0, #1 ; R0=R0-1

    BNE 1B ; R0不等於0則繼續迴圈

    1

    ... ; 省略後面的程式碼

    在彙編程式碼中,大小寫不區分,可以寫BNE也可以寫成bne。這個程式碼最開始設定R0=3,每次比較R0是否為0,如果為0則跳出迴圈,不為0則R0=R0-1後繼續進行迴圈判斷。

    因為程式碼是從上往下執行的,也就是下方是前方(向前執行程式碼),而上方則對應稱之為後方。標號可以重複,這就要在數字標號上加上F或B表示向前還是向後跳。

    如果只有一個數字標號1,那麼可以不指定B和F,可以直接寫成BNE 1。

  • 中秋節和大豐收的關聯?
  • 剛出生幾天的寶寶老是打噴嚏?