小文字から大文字に変換しようとしています。私はそれが簡単にできることを知っています、
SUB AL, 20H
しかし、私は別の解決策を与えられました。
AND AL, 0DFH
これを理解するのを手伝ってください。ありがとう
ビットパターンを見てください:
0100 00010110 00010100 11010110 11010101 10100111 1010小文字のASCIIは、大文字のASCII + 0x20( )-つまり、6番目のビットが設定され0010 0000た同じビットパターンです。
0xdfは1101 1111バイナリです。AND:それでALを実行すると、6番目のビットがゼロに設定されますが、他のビット値は保持されます。
SUB AL, 20HALから0x20を引いています
AND AL,0DFHビット5をクリアします(「0」にします)。0x20は00100000なので、値から減算すると、ビット5をクリアするのと同じになります。