在Assembly中使用分支命令困惑,主要是BNE
和BEQ
。 所以,我必須寫的僞代碼的彙編代碼:如果其他OR語句在Assembly中?
X = 5,Y = 10,Z = 15
如果X = 4 & &ý== 10 || Z = 20
A = X + Y - 2
否則R 1 = Z - 5 + X
我編碼凱爾uVision5的的ARM Cortex M0加(如果沒有線索是需要信息)在它的低寄存器是R0-R7這個特定的板。
我知道如何編寫if else
聲明本身,但我主要是問我如何處理代碼的OR
部分。明顯的X!= 4是真的,並且Y == 10是真的,然後檢查Z = 20是否爲假,那麼我將檢查X!= 4是否先跳,使用BNE
標籤跳轉來檢查Y,使用BEQ
來檢查Z,這是錯誤的,但既然方程已經是真的,我會跳到BNE
endif聲明A=X+Y-2
?
然後在它們之間沒有標籤我會寫彙編器的else語句,如果第一個BNE標籤是某種錯誤..?
A EQU 0x2000000
R EQU 0x2000004
X EQU 0x2000008
Y EQU 0x200000C
Z EQU 0x2000010
LDR R7, =X
LDR R0, [R7]
ADD R0, #5 ; X = 5 in R0
CMP R0, #4 ; Compare X != 4
BNE jumpToY
jumpToY
LDR R7, =Y
LDR R1, [R7] ; Y = 10 in R1
CMP R1, #10 ; Compare Y == 10
BEQ jumpToZ
jumpToZ
etc...
測試失敗後立即跳轉到失敗目標。 –
對不起,我仍然是一個彙編程序的初學者,我將如何去分支到代碼中的失敗目標(這意味着else語句正確..?)。 @ IgnacioVazquez-Abrams –
隨着跳轉指令。如果測試通過,你會跳過。 –