【发布时间】:2012-05-01 06:50:59
【问题描述】:
我正在尝试从小写转换为大写。我知道这很容易做到,
SUB AL, 20H
但我得到了另一种解决方案,
AND AL, 0DFH
请帮助我理解这一点。谢谢
【问题讨论】:
我正在尝试从小写转换为大写。我知道这很容易做到,
SUB AL, 20H
但我得到了另一种解决方案,
AND AL, 0DFH
请帮助我理解这一点。谢谢
【问题讨论】:
查看位模式:
0100 0001
0110 0001
0100 1101
0110 1101
0101 1010
0111 1010
小写 ASCII 是大写 ASCII + 0x20 (0010 0000) - 即与 第六位设置的位模式相同。
0xdf 是二进制的1101 1111。 AND: 使用 AL 将第六位设置为零,但保留其他位值。
【讨论】:
SUB AL, 20H正在从 AL 中减去 0x20
AND AL,0DFH将清除第 5 位(设为“0”)。
因为 0x20 是 00100000 ,所以从一个值中减去它与清除第 5 位相同。
【讨论】: