assembly - x86 Cálculo de AX dado AH y AL?
cpu-registers (1)
Tengo problemas para comprender los registros en x86 Assembly, sé que EAX son los 32 bits completos, AX son los 16 bits inferiores y luego AH y AL los 8 bits superiores e inferiores de AX, pero estoy haciendo una pregunta.
Si AL = 10 y AH = 10, ¿cuál es el valor en AX?
Mi pensamiento sobre esto es convertir 10 en binario (1010) y luego tomar eso como los bits más altos y más bajos de AX (0000 1010 0000 1010) y luego convertir esto a decimal (2570) Estoy cerca de la respuesta correcta aquí, o lejos?
Como sugirió Peter Cordes, imagino que los datos son valores hexadecimales:
RR RR RR RR EE EE HH LL
| | || ||
| | || AL
| | AH |
| | |___|
| | AX |
| |_________|
| EAX |
|_____________________|
RAX
... donde
RAX
es el registro de 64 bits que existe en
x86-64
.
Entonces, si tuviera
AH = 0x12
y
AL = 0x34
, así:
00 00 00 00 00 00 12 34
| | || ||
| | || AL
| | AH |
| | |___|
| | AX |
| |_________|
| EAX |
|_____________________|
RAX
... entonces tenías
AX = 0x1234
y
EAX = 0x00001234
etc.
Tenga en cuenta que, como se muestra en este gráfico,
AH
es el único registro "extraño" aquí que no está alineado con los bits inferiores.
Los otros (
AL
,
AX
,
EAX
,
RAX
para 64 bits) son de diferentes tamaños, pero todos están alineados a la derecha.
(Por ejemplo, los dos bytes marcados
EE EE
en el gráfico no tienen un nombre de registro propio).