为什么mov指令直接使用ax而不是两个段寄存器?

sam*_*moz 6 x86 assembly nasm accumulator addressing-mode

我看到代码如下:

mov ax, cs
mov ds, ax
mov es, ax
Run Code Online (Sandbox Code Playgroud)

为什么我不能将其压缩为:

mov ds, cs
mov es, cs
Run Code Online (Sandbox Code Playgroud)

自使用累加器寄存器以来,第一种方式更快吗?但这似乎并不直观,因为cs和ds是段寄存器.还是有一些我不知道的限制?

顺便说一句,我正在使用nasm.

Dav*_*ave 10

你不能将段寄存器移动到段寄存器 - 没有指令.

  • @Neil - 实际上这个*是*"为什么这本书的作者不能动摇,cs?"的答案.甚至更具体地说他的问题"我有什么限制,我不知道?" 然而,下一个自然问题是"wtf,为什么不呢?" 所以你的答案在那里很有帮助. (3认同)