为什么MOV不能将两个操作数都作为内存位置?

时间:2013-01-24 20:38:19

标签: assembly x86-16

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

赞:不允许MOV [0012H], [0016H]

为什么会这样?

其他指令可以为其两个操作数设置内存位置吗?

1 个答案:

答案 0 :(得分:8)

创建CPU时,这是一个设计决策。您拥有更多寻址模式和更多指令,指令获得更大(就表示指令所需的位数而言)。更大的指令需要更长的时间才能从内存中获取。

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

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