Como é que o AX, ah, Al mapeia o EAX?
Neste exemplo EAX
sendo um registo de 32 bits, se chamarmos AX
deve devolver os primeiros 16 bits, e se chamarmos AH
ou {[7] } deve devolver os próximos 8 bits após os 16 bits e AL
deve devolver os últimos 8 bits.
EAX
conservação
0000 0000 0000 0000 0000 0000 0000 0111
Por isso, se acedermos, deve voltar.
0000 0000 0000 0000
se lermos AH
deve voltar
0000 0000
E quando lermos, deve voltar.
0000 0111
Isto está correcto? e se for qual o valor que AH
realmente tem?
5 answers
EAX is the full 32-bit value
AX is the lower 16-bits
AL is the lower 8 bits
AH is the bits 8 through 15 (zero-based)
Editar:
Para completar, além do acima, que foi baseado em uma CPU de 32 bits, 64 bits Intel / AMD CPUs têm
RAX, which hold a 64-bit value, and where EAX is mapped to the lower 32 bits.
O machado são os 16 bits inferiores do EAX. AH é os 8 bits altos de AX (ou seja, os bits 8-15 de EAX) e AL é o byte menos significativo (bits 0-7) de EAX, bem como AX.
Exemplo (algarismos hexadecimais):
EAX: 12 34 56 78
AX: 56 78
AH: 56
AL: 78
A selecção de Al E Ah é de AX não de EAX
E. g
EAX=0000 0000 0000 0000 0000 0000 0000 0111
Por isso, se ligarmos ao AX, deve voltar.
0000 0000 0000 0111
Se chamarmos AH, deve voltar.
0000 0000
E quando chamarmos o AL, deve voltar.
0000 0111
Exemplo número 2
EAX: 22 33 55 77
AX: 55 77
AH: 55
AL: 77
Exemplo 3
EAX: 1111 0000 0000 0000 0000 0000 0000 0111
AX= 0000 0000 0000 0111
AH= 0000 0000
AL= 0000 0111
Não ... o AL é os 8 pedaços de Machado menos significativos. O AX é o 16 bits menos significativos de EAX.
Talvez seja mais fácil lidar com isso se começarmos com 04030201h em eax. Neste caso, o AX conterá 0201h, AH conterá 02h e AL conterá 01h.O excerto abaixo examina o EAX usando o GDB.
(gdb) info register eax
eax 0xaa55 43605
(gdb) info register ax
ax 0xaa55 -21931
(gdb) info register ah
ah 0xaa -86
(gdb) info register al
al 0x55 85
- EAX - valor total de 32 bits
- AX-valor inferior de 16 bits
- Ah - Bits de 8 a 15
- AL - menor 8 bits de EAX / AX