在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 –
随着跳转指令。如果测试通过,你会跳过。 –