我有这段代码,我非常有信心它会工作。但是它每次都打印较低的输出。我的逻辑是将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:
答案 0 :(得分:0)
您的代码看起来不错。
如评论中所述,您最好的朋友是调试器。单步执行代码,观察r1
的值,并观察blt
指令的行为。我最好的猜测是,r1
的值在输入时不正确。