关于如何将汇编语言字符串进行运算(含16进制)

在汇编语言中,将字符串进行运算,包含16进制

需要注意的是首先要将读取的ASCII码进行转换,使其能够成为进行运算的有效数字,在对于16进制的时候还需要检查其是否为字母

我们这里假设的是一空白(null)作为终止符

具体代码如下

SUB     R1, R1, #1

MOV     R0, #0
MOV     R2, #0      //目前的
MOV     R3, #0      //上一个操作字符
MOV     R4, #0      //目前操作字符

READNEXTDEC:

ADD     R1, R1, #1
LDRB    R2, [R1]

CMP     R2, #120        //寻找16进制
BEQ     READNEXTHEX

CMP     R2, #0
BEQ     APPLYOPERATOR   
CMP     R2, #42         //进行乘法运算
BEQ     APPLYOPERATOR       
CMP     R2, #43         //进行加法运算
BEQ     APPLYOPERATOR
CMP     R2, #45         //进行减法运算
BEQ     APPLYOPERATOR

SUB     R2, #48

MOV     R10, #10
MUL     R4, R4, R10
ADD     R4, R4, R2

B       READNEXTDEC

READNEXTHEX:

ADD     R1, R1, #1
LDRB    R2, [R1]

CMP     R2, #120
BEQ     READNEXTHEX

CMP     R2, #0
BEQ     APPLYOPERATOR   
CMP     R2, #42         //进行乘法运算
BEQ     APPLYOPERATOR       
CMP     R2, #43         //进行加法运算
BEQ     APPLYOPERATOR
CMP     R2, #45         //进行乘法运算
BEQ     APPLYOPERATOR
CMP     R2, #120        //遇见X进入16进制程序
BEQ     READNEXTHEX

CMP     R2, #65         //如果是字母
BGE     READTHISHEX

SUB     R2, #48         //ASCII码进行实际数字的转换

MOV     R10, #10
MUL     R4, R4, R10
ADD     R4, R4, R2

B       READNEXTDEC

READTHISHEX:

SUB     R2, #55

MOV     R10, #10
MUL     R4, R4, R10
ADD     R4, R4, R2

B       READNEXTHEX

APPLYOPERATOR:

CMP     R3, #0
BEQ     ADD         //遇见终止符
CMP     R3, #4
BEQ     ADD
CMP     R3, #5
BEQ     SUB
CMP     R3, #6
BEQ     MUL

ADD:

ADD     R0, R0, R4
B       STORENEXTOPERATOR

SUB:

SUB     R0, R0, R4
B       STORENEXTOPERATOR

MUL:

MUL     R0, R0, R4
B       STORENEXTOPERATOR

STORENEXTOPERATOR:

MOV     R4, #0

CMP     R2, #0      //遇见终止符
BEQ     End_Main
CMP     R2, #43     //进行加法运算
BEQ     SETADD
CMP     R2, #45     //进行剑法运算
BEQ     SETSUB
CMP     R2, #42     //进行乘法运算
BEQ     SETMUL
CMP     R2, #120    //在遇见‘x’的时候,表示进行16进制操作
BEQ     READNEXTHEX

SETADD:

MOV     R3, #4
B       READNEXTDEC

SETSUB:

MOV     R3, #5
B       READNEXTDEC

SETMUL:

MOV     R3, #6
B       READNEXTDEC

上一篇:FreeDroid开发过程中遇到的一些问题


下一篇:Trie 字典树