x86 Расчет AX с учетом AH и AL?

У меня возникли проблемы с пониманием регистров в сборке x86. Я знаю, что EAX – это полные 32 бита, AX – младшие 16 бит, а затем AH и AL – более высокие и младшие 8 бит AX. Но я задаю вопрос.

Если AL = 10 и AH = 10, то каково значение в AX?

Мое мышление заключается в том, чтобы преобразовать 10 в двоичный код (1010), а затем принять это как более высокие и младшие бит AX (0000 1010 0000 1010), а затем преобразовать это в десятичное (2570). Я где-нибудь ближе к правильному ответу здесь, или выход?

Как предложил Питер Кордес, я бы представил данные как шестнадцатеричные значения:

 RR RR RR RR EE EE HH LL | | || || | | || AL | | AH | | | |___| | | AX | | |_________| | EAX | |_____________________| RAX 

… где RAX – это 64-битный регистр, который существует в x86-64 .

Итак, если у вас есть AH = 0x12 и AL = 0x34 , вот так:

 00 00 00 00 00 00 12 34 | | || || | | || AL | | AH | | | |___| | | AX | | |_________| | EAX | |_____________________| RAX 

… тогда у вас был AX = 0x1234 и EAX = 0x00001234 и т. д.

Обратите внимание, что, как показано на этой диаграмме, AH является единственным «странным» регистром, который не совпадает с нижними битами. Остальные ( AL , AX , EAX , RAX для 64-разрядных) имеют разные размеры, но все выровнены справа. (Например, два байта, отмеченные EE EE в диаграмме, сами не имеют имени регистра.)

  • Почему нарушение «выходной зависимости» LZCNT имеет значение?
  • Вызов абсолютного указателя в машинный код x86
  • Что происходит, когда запускается компьютерная программа?
  • Что отсутствует / не оптимально в этой реализации memcpy?
  • Что означает `rep ret`?
  • Изменение целевых настроек процессора в Visual Studio 2010 Express
  • Как вы используете gcc для генерации кода сборки в синтаксисе Intel?
  • Что каждый программист должен знать о памяти?
  • Почему GCC, скомпилированный программой C, нуждается в разделе .eh_frame?
  • Сборка, печать номер ascii
  • Почему для x86 (-64) для подписчиков и без знака умножаются разные инструкции?
  • Давайте будем гением компьютера.