为什么英特尔微处理器的64位模式不支持MOV AH,1? [英] Why MOV AH,1 is not supported in 64 bit mode of intel microprocessor?

查看:189
本文介绍了为什么英特尔微处理器的64位模式不支持MOV AH,1?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在巴里·布雷(Barry B. Brey)的英特尔微处理机"一书中,写道

In the book "THE INTEL MICROPROCESSORS" of Barry B. Brey, it is written that

MOV AH, 1

在64位模式下是不允许的,但是在32位或16位模式下是允许的.如果可以在64位模式下允许MOV AL, 1,那么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 ?

推荐答案

mov ah,1没有问题.它可以在X64模式下正常运行.

There is no problem with mov ah,1. It runs just fine in X64 mode.

它的操作码是b4 01.

唯一不允许使用mov ah的时间是mov具有REX前缀的情况.

The only time when mov ah is not allowed is when the mov has a REX prefix.

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

***在64位模式下,如果使用REX前缀,则无法对r/m8进行编码以访问以下字节寄存器:AHBHCHDH.

在这种情况下,高字节寄存器(AHBHCHDH)被重新定义为 DILSILBPLSPL.但这仅在存在REX前缀的情况下.

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.

带有REX前缀的指令是:

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.

这篇关于为什么英特尔微处理器的64位模式不支持MOV AH,1?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆