为什么在Intel微处理器的64位模式下不支持MOV AH,1?

Pre*_*rko 2 x86 assembly x86-64

在Barry B. Brey的"THE INTEL MICROPROCESSORS"一书中写道

MOV AH, 1
Run Code Online (Sandbox Code Playgroud)

在64位模式下不允许,但在32位或16位模式下允许.如果MOV AL, 1可以在64位模式下允许,有什么问题MOV AH, 1

Joh*_*ica 9

没有问题mov ah,1.它在X64模式下运行良好.

它的操作码是b4 01.

唯一mov ah不允许的时间是movREX前缀的时候.

来自:http://www.felixcloutier.com/x86/MOV.html

***在64位模式中,r/M8不能被编码访问随后的字节的寄存器,如果使用REX前缀:AH,BH,CH,DH.

在这种情况下,高字节寄存器(AH,BH,CH,和DH)被重新定义为 DIL,SIL,BPLSPL.但这只有在存在REX前缀的情况下才会出现.

带有REX前缀的说明如下:

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.
Run Code Online (Sandbox Code Playgroud)