Сборка - если условие и заглавная буква - PullRequest
1 голос
/ 13 ноября 2011

Я хочу проверить, является ли 'ep' заглавной буквой.

Поэтому я проверил это в таблице ascii и обнаружил, что это значение от 0x41 до <0x5A. </p>

Iпопытался выполнить функцию if, которая спрашивает, является ли она заглавной буквой.Может кто-нибудь подскажите, пожалуйста, как проверить это условие в сборке?Я пытался написать это, но это, конечно, не правильно:

    cmp ep, (>0X40 & <0X5a)
        je letter

1 Ответ

3 голосов
/ 13 ноября 2011

Вы можете сделать это, используя две проверки. Примерно так:

cmp ep, 0x40
jl not_capital
cmp ep, 0x54
jg not_letter

# if we arrive here, it's a capital letter

not_letter:
# continue execution flow

В качестве альтернативы, вы можете вычесть нижнюю границу и проверить, меньше ли значение, чем разница, т.е.

# Note: 0x54 - 0x40 = 0x14
mov ep, <reg>     # replace <reg> with the register of your choice
sub 0x40, <reg>
cmp <reg>, 0x15   # if it's 0-0x14, we're ok. 0x15 or more is bad
jb letter         # we want unsigned check here (jb not jl)

Отказ от ответственности: Я не знаю ваш формат сборки (хотя я пытался скопировать его). Но не верьте моему синтаксису, чтобы быть точным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...