【问题标题】:Converting from lower case to upper case从小写转换为大写
【发布时间】:2012-05-01 06:50:59
【问题描述】:

我正在尝试从小写转换为大写。我知道这很容易做到,

SUB AL, 20H

但我得到了另一种解决方案,

AND AL, 0DFH

请帮助我理解这一点。谢谢

【问题讨论】:

    标签: assembly x86-16


    【解决方案1】:

    查看位模式:

    • A (0x41):0100 0001
    • a (0x61): 0110 0001
    • M (0x4d): 0100 1101
    • m (0x6d): 0110 1101
    • Z (0x5a): 0101 1010
    • z (0x7a): 0111 1010

    小写 ASCII 是大写 ASCII + 0x20 (0010 0000) - 即与 第六位设置的位模式相同。

    0xdf 是二进制的1101 1111。 AND: 使用 AL 将第六位设置为零,但保留其他位值。

    【讨论】:

      【解决方案2】:

      SUB AL, 20H正在从 AL 中减去 0x20

      AND AL,0DFH将清除第 5 位(设为“0”)。 因为 0x20 是 00100000 ,所以从一个值中减去它与清除第 5 位相同。

      【讨论】:

        猜你喜欢
        • 2011-07-21
        • 1970-01-01
        • 2015-11-28
        • 1970-01-01
        • 2022-01-24
        • 2022-01-19
        • 2011-10-29
        • 2016-02-24
        • 2019-05-15
        相关资源
        最近更新 更多