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

bat*_*man 7 assembly x86-16

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

喜欢:MOV [0012H], [0016H]不允许.

为什么这样?

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

dbr*_*nk0 8

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

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

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