Сборка ARM, обнаружение, является ли символ прописным, строчным или специальным - PullRequest
0 голосов
/ 18 октября 2018

У меня есть этот код, и я был уверен, что он сработает.Но он печатает нижний выход каждый раз.Моя логика заключалась в том, чтобы сравнивать r1 (где находится символ) с «a», потому что он имеет более высокое значение ascii, чем «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 голосов
/ 18 октября 2018

Ваш код выглядит вменяемым.

Как уже упоминалось в комментариях, ваш лучший друг здесь - отладчик.Выполните пошаговый ввод кода, посмотрите значение r1 и следите за поведением инструкций blt.Моим лучшим предположением будет то, что значение r1 неверно при вводе.

...