Assembly 16位寄存器在保护模式x86下是否可访问?
我能否在Windows x86上以保护模式访问16位寄存器(Assembly 16位寄存器在保护模式x86下是否可访问?,assembly,x86,cpu-registers,protected-mode,Assembly,X86,Cpu Registers,Protected Mode,我能否在Windows x86上以保护模式访问16位寄存器(AX,CX等)?这个代码有效吗mov ax,123谢谢。是的,它很好(你也可以访问AH和AL)。是的,它很好(你也可以访问AH和AL)。有32位和16位模式 在32位模式下,您可以使用特殊的前缀字节访问16位寄存器 在16位模式下,情况正好相反,即前缀生成32位指令 因此,在每种模式下,您都可以使用所有寄存器,但代码不是二进制兼容的。 尽管受保护模式通常使用32位模式,但这是两件不同的事情 因此,在汇编程序中,必须对32位或16位代
AX
,CX
等)?这个代码有效吗<代码>mov ax,123谢谢。是的,它很好(你也可以访问AH
和AL
)。是的,它很好(你也可以访问AH
和AL
)。有32位和16位模式
- 在32位模式下,您可以使用特殊的前缀字节访问16位寄存器
- 在16位模式下,情况正好相反,即前缀生成32位指令
如果省略32位指令,代码将进行汇编,但执行将不符合预期 有32位和16位模式
- 在32位模式下,您可以使用特殊的前缀字节访问16位寄存器
- 在16位模式下,情况正好相反,即前缀生成32位指令
如果省略32位指令,代码将进行汇编,但执行将不符合预期 是的,您可以在保护模式下使用
eax
,ax
,ah
,al
。
此外,您还可以在实模式下使用它们,甚至eax
但不是
rax
(如果您的系统支持)是的,您可以在保护模式下使用eax
、ax
、ah
、al
。
此外,您还可以在实模式下使用它们,甚至eax
但不
rax
(如果您的系统支持)您应该知道段寄存器(CS、DS、ES、SS、FS和GS)中的值在实模式和保护模式下具有完全不同的含义。您应该知道段寄存器(CS、DS、ES、SS、FS和GS)中的值在真实模式和受保护模式中具有完全不同的含义。