【发布时间】:2020-10-30 04:30:02
【问题描述】:
我有这个代码:
AREA palindrome, CODE, READONLY
SWI_Exit EQU 0x11
ENTRY
start
LDR r0,=string
MOV r1,r0
loop LDRB r2,[r1],#1
CMP r2,#0
BNE loop
SUB r1,r1,#2
BL pal
stop SWI SWI_Exit
pal MOV r10,#0x0
again LDRB r3,[r0]
LDRB r4,[r1]
CMP r3,r4
BNE notpal
CMP r0,r1
BEQ waspal
ADD r2,r0,#1
CMP r2,r1
BEQ waspal
ADD r0,r0,#1
SUB r1,r1,#1
B again
waspal MOV r0,#0x1
notpal MOV r0, #0x2
string DCB "abcba",0
END
但现在它只检查它是否是没有任何标点符号的字符串的回文。我希望这样当我输入一个带或不带标点符号和空格的字符串时,它将 1 存储在 r0 中,如果不是,则存储 2。
所以现在当我进入时:
"abcba"
我知道这是回文,但是当我有时
"abc ba"
算作不是回文。
我也有这个错误,它在完成循环时不会在寄存器 0 中存储任何值。但是,如果我将其更改为将结果存储在两个不同的寄存器中(一个在 r0 中,一个在 r10 中),那么它就可以工作了。
【问题讨论】: