ARM汇编,查找字符是大写,小写还是特殊字符

时间:2018-10-18 18:41:55

标签: assembly arm ascii

我有这段代码,我非常有信心它会工作。但是它每次都打印较低的输出。我的逻辑是将r1(char所在的位置)与“ a”进行比较,因为它的ascii值比“ A”高。如果它大于或等于“ a”,我们知道它必须是小写字母。如果小于,则将其与“ A”进行比较,如果大于或等于“ A”,则必须为大写。如果它小于“ A”,那么我们知道它必须是一个特殊字符。但这不起作用,为什么?

printchar:
    cmp r1, #'a'
    blt T1
    ldr r0, =loweroutput
    bl printf
    b exit
T1: cmp r1, #'A'
    blt T2
    ldr r0, =upperoutput
    bl printf
    b exit
T2: ldr r0, =specialoutput
    bl printf
exit:

1 个答案:

答案 0 :(得分:0)

您的代码看起来不错。

如评论中所述,您最好的朋友是调试器。单步执行代码,观察r1的值,并观察blt指令的行为。我最好的猜测是,r1的值在输入时不正确。