我现在正在使用以下代码:
push {r1-r2, lr}
mov r1, r0
ldrb r2, [r1]
cmp r2, #'0'
blt notNum
cmpgt r2, #'9'
bgt notNum
ldrltb r2, [r1, #1]
cmplt r2, #0
beq isNum
bne notNum
isNum:
mov r0, #1
notNum:
mov r0, #0
此特定代码的目的是获取存储在r0中的字符串并测试它是否为数字。我目前遇到的问题是,由于某种原因,第一个cmp总是导致通过blt分支到notNum。我做了一些gdb测试并假设我的逻辑是正确的(cmp = input1 - input2)然后比较标志将大于。任何有关我的问题的见解将不胜感激。