8

我读到该MOV指令的两个操作数都不能有内存位置。

像 :MOV [0012H], [0016H]是不允许的。

为什么这样?

其他指令是否可以为其两个操作数提供内存位置?

4

1 回答 1

9

这是他们创建 CPU 时的设计决定。你有更多的寻址模式和更多的指令,指令得到的更大(就表示指令所需的位数而言)。更大的指令需要更长的时间从内存中获取。

换句话说,x86 的指令集不是正交的。只编写非常有限的汇编代码并不一定是坏事,至少现在不是。

其他一些 CPU(例如同一时代设计的 MC680xx)可以做到这一点。

于 2013-01-24T23:19:23.050 回答