比较相同字母的大写和小写版本是否相等
Compare for equal to uppercase and lowercase versions of the same letter
你好,目前我正在用 asm 语言做一个项目,我想出了这段代码:
mov ah, 07h
int 21h
mov bl,al
cmp bl, 'w'
je up
cmp bl, 'W'
je up
代码是输入一个字母跳转到另一个函数。我想做的是比较它,即使它是大写或小写。有办法吗?
因为大写字母 [A,Z](ASCII 码 [65,90])与小写字母 [a,z](ASCII 码 [97,122])相差 32,并且由于 ASCII table 是有组织的,所有小写字母都设置了 bit5,而大写字母的 none 设置了 bit5。
成功case-insensitive
比较前可以or
字符编码为32,然后只需要比较一次即可。
mov ah, 07h
int 21h
mov bl, al
or al, 32 ; Make case-insensitive
cmp al, 'w' ; Only comparing lowercase, but accepting both cases
je up
这条or al, 32
指令的作用是:
- 如果 AL 是 [A,Z] 它变成 [a,z]
- 如果 AL 是 [a,z] 它仍然是 [a,z]
你好,目前我正在用 asm 语言做一个项目,我想出了这段代码:
mov ah, 07h
int 21h
mov bl,al
cmp bl, 'w'
je up
cmp bl, 'W'
je up
代码是输入一个字母跳转到另一个函数。我想做的是比较它,即使它是大写或小写。有办法吗?
因为大写字母 [A,Z](ASCII 码 [65,90])与小写字母 [a,z](ASCII 码 [97,122])相差 32,并且由于 ASCII table 是有组织的,所有小写字母都设置了 bit5,而大写字母的 none 设置了 bit5。
成功case-insensitive
比较前可以or
字符编码为32,然后只需要比较一次即可。
mov ah, 07h
int 21h
mov bl, al
or al, 32 ; Make case-insensitive
cmp al, 'w' ; Only comparing lowercase, but accepting both cases
je up
这条or al, 32
指令的作用是:
- 如果 AL 是 [A,Z] 它变成 [a,z]
- 如果 AL 是 [a,z] 它仍然是 [a,z]