我正在尝试将小写转换为大写。我知道它可以轻松完成,
SUB AL, 20H
但是我得到了另一个解决方案,
AND AL, 0DFH
请帮我理解这一点。感谢
答案 0 :(得分:5)
查看位模式:
0100 0001
0110 0001
0100 1101
0110 1101
0101 1010
0111 1010
小写ASCII是大写ASCII + 0x20(0010 0000
) - 即第六位的相同位模式。
0xdf是二进制的1101 1111
。 AND:使用它将AL将第六位设置为零,但保留其他位值。
答案 1 :(得分:2)
SUB AL, 20H
从AL
AND AL,0DFH
将清除第5位(使其为'0')。
因为0x20是00100000,所以从一个值中减去它,就像清除第5位一样。