In the book "THE INTEL MICROPROCESSORS" of Barry B. Brey, it is written that
MOV AH, 1
is not allowed in 64 bit mode, but allowed in 32 bit or 16 bit mode. If MOV AL, 1
can be allowed in 64 bit mode, what is the problem with MOV AH, 1
?
In the book "THE INTEL MICROPROCESSORS" of Barry B. Brey, it is written that
MOV AH, 1
is not allowed in 64 bit mode, but allowed in 32 bit or 16 bit mode. If MOV AL, 1
can be allowed in 64 bit mode, what is the problem with MOV AH, 1
?
There is no problem with mov ah,1
. It runs just fine in X64 mode.
The opcode for it is b4 01
.
The only time when mov ah
is not allowed is when the mov
has a REX
prefix.
from: http://www.felixcloutier.com/x86/MOV.html
***In 64-bit mode, r/m8 can not be encoded to access the following byte registers if a REX prefix is used:
AH
,BH
,CH
,DH
.
In that case the high byte registers (AH
, BH
, CH
, and DH
) are redefined as
DIL
, SIL
, BPL
and SPL
. But this is only if a REX prefix is present.
Instructions with a REX prefix are:
anything with the R8..R15 regs and parts thereof
anything that accesses the new 8 bit regs: DIL, SIL, BPL, SPL
anything that accesses 64 bit registers.