ARM汇编

有没有大佬帮我看看 我的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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值