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則繼續迴圈
... ; 省略後面的程式碼
在彙編程式碼中,大小寫不區分,可以寫BNE也可以寫成bne。這個程式碼最開始設定R0=3,每次比較R0是否為0,如果為0則跳出迴圈,不為0則R0=R0-1後繼續進行迴圈判斷。
因為程式碼是從上往下執行的,也就是下方是前方(向前執行程式碼),而上方則對應稱之為後方。標號可以重複,這就要在數字標號上加上F或B表示向前還是向後跳。
如果只有一個數字標號1,那麼可以不指定B和F,可以直接寫成BNE 1。
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。