汇编 - 如果条件和大写字母

时间:2011-11-13 16:34:38

标签: assembly x86

我想检查'ep'是否是一个大写字母。

所以我在ascii表中检查它,我发现它是从0x41到< 0x5A。

我尝试做一个if函数,询问它是否是大写字母。有人可以告诉我如何在大会上检查这个条件?我试着写这个,但它当然不正确:

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

1 个答案:

答案 0 :(得分:3)

您可以使用两项检查来完成此操作。像这样:

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)

免责声明:我不知道你的汇编格式(我试图复制它)。但是不要相信我的语法是准确的。