3

小文字から大文字に変換しようとしています。私はそれが簡単にできることを知っています、

SUB AL, 20H

しかし、私は別の解決策を与えられました。

AND AL, 0DFH

これを理解するのを手伝ってください。ありがとう

4

2 に答える 2

6

ビットパターンを見てください:

  • 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( )-つまり、6番目のビットが設定され0010 0000た同じビットパターンです。

0xdfは1101 1111バイナリです。AND:それでALを実行すると、6番目のビットがゼロに設定されますが、他のビット値は保持されます。

于 2012-05-01T07:02:17.790 に答える
2

SUB AL, 20HALから0x20を引いています

AND AL,0DFHビット5をクリアします(「0」にします)。0x20は00100000なので、値から減算すると、ビット5をクリアするのと同じになります。

于 2012-05-01T07:02:20.303 に答える