有没有大佬帮我看看 我的ARM代码要怎么改一下,可以有偿,十分感谢!
图里是问题,代码在下面
Main:
MOV R3, #0 @ 1) R3=0
MOV R4, #0
MOV R5, #10 @ 1) R5=10
MOV R6, #0 @ 1) R6=0
If :
LDRB R2,[R1] @ 1) Take Address
CMP R2, #0x30 @ 1) 0x32
BLO Another
CMP R2, #0x39 @ 1) 0x32
BHI Another
Ascii :
SUB R2, R2, #0x30 @ 1) 0x32-0x30=2(R4)
MUL R3, R3, R5 @ 1) 10x0=0(R3)
ADD R3, R3, R2 @ 1) 2+0=2(R3)
ADD R1, R1, #1 @ 1) Address+1
B If
FirstValue : @First Value= R4
MOV R6, R2
MOV R0, R3 @MOV R4, R3
B Another
Another :
CMP R2, 'x'
CMP R6, 'x'
BEQ Hexadecimal
CMP R0, #0 @R4, #0
BEQ FirstValue
CMP R6, #0x2b
BEQ Addition
CMP R6, #0x2d
BEQ Substract
CMP R6, #0x2a
BEQ Multiply
CMP R6, #0x0
BEQ End_Main
Addition :
MOV R3, #0
ADD R1, R1, #1
If2 :
LDRB R2,[R1] @ 1) Take Address
CMP R2, #0x30 @ 1) 0x32
BLO DoAddition
CMP R2, #0x39 @ 1) 0x32
BHI DoAddition
Ascii2 :
SUB R2, R2, #0x30 @ 1) 0x32-0x30=2(R4)
MUL R3, R3, R5 @ 1) 10x0=0(R3)
ADD R3, R3, R2 @ 1) 2+0=2(R3)
ADD R1, R1, #1 @ 1) Address+1
B If2
DoAddition :
ADD R0, R0, R3 @ADD R0, R4, R3
MOV R6, R2
B Another
Multiply :
MOV R3, #0
ADD R1, R1, #1
If3 :
LDRB R2,[R1] @ 1) Take Address
CMP R2, #0x30 @ 1) 0x32
BLO DoMultiply
CMP R2, #0x39 @ 1) 0x32
BHI DoMultiply
Ascii3 :
SUB R2, R2, #0x30 @ 1) 0x32-0x30=2(R4)
MUL R3, R3, R5 @ 1) 10x0=0(R3)
ADD R3, R3, R2 @ 1) 2+0=2(R3)
ADD R1, R1, #1 @ 1) Address+1
B If3
DoMultiply :
MUL R0, R0, R3
MOV R6, R2
B Another
Substract :
MOV R3, #0
ADD R1, R1, #1
If4 :
LDRB R2,[R1] @ 1) Take Address
CMP R2, #0x30 @ 1) 0x32
BLO DoSubstract
CMP R2, #0x39 @ 1) 0x32
BHI DoSubstract
Ascii4 :
SUB R2, R2, #0x30 @ 1) 0x32-0x30=2(R4)
MUL R3, R3, R5 @ 1) 10x0=0(R3)
ADD R3, R3, R2 @ 1) 2+0=2(R3)
ADD R1, R1, #1 @ 1) Address+1
B If3
DoSubstract :
SUB R0, R0, R3
MOV R6, R2
B Another
Hexadecimal :
@R2= x @ R6= x
ADD R1, R1, #1
LDRB R3, [R1]
Another1 :
CMP R3, #0x2b
BEQ Addition
CMP R3, #0x2d
BEQ Substract
CMP R3, #0x2a
BEQ Multiply
CMP R3, #0x0 @look
BEQ End_Main
SUB R3, R3, #0x30
CMP R3, #0x9
BLS HexaNumber
SUB R3, R3, #7
B Hexadecimal
HexaNumber :
@MUL R3, R3, #16
@CMP R2, 'x'
@BEQ R2, R2, R3
@CMP R6, 'x'
@BEQ R6, R6, R3
@B Hexadecimal
DoHexadecimal :
MOV R4, R3
MOV R6, R2
B Hexadecimal