assembly x86 cpu-registers

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).