Преобразование из нижнего регистра в верхний регистр

Я пытаюсь преобразовать из нижнего регистра в верхний регистр. Я знаю, что это легко сделать,

SUB AL, 20H

Но мне дали другое решение, которое,

AND AL, 0DFH

Пожалуйста, помогите мне понять это. Спасибо


person Foo    schedule 01.05.2012    source источник


Ответы (2)


Посмотрите на битовые шаблоны:

  • 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 в двоичном формате. И: соединение AL с этим установит шестой бит в ноль, но сохранит другие значения битов.

person Anders Lindahl    schedule 01.05.2012

SUB AL, 20Hвычитает 0x20 из AL

AND AL,0DFHочистит бит 5 (сделает его «0»). Поскольку 0x20 равно 00100000, вычитание его из значения равносильно очистке бита 5.

person Gil.I    schedule 01.05.2012