Assembly MOV命令限制的原因

Assembly MOV命令限制的原因,assembly,x86,mov,restrictions,Assembly,X86,Mov,Restrictions,为什么MOV变量,变量不正确? 或者,如果我们使用变量作为第一个操作数,为什么必须只有寄存器或立即数? 或者为什么这是错误的: MOV[x],除立即数或寄存器外的任何内容 这些规则是如何定义的? 编辑: 我说的是8086处理器。汇编命令的规则是由处理器定义的,或者更确切地说是由生产处理器的公司定义的。。。而且是电子的。寄存器是proc内部的,因此可以在一个机器周期内复制到内存或从内存复制。但从内存复制到另一个内存需要通过处理器(或通过用于DMA操作的协处理器)。x86 MOV指令根本不支持同一指

为什么MOV变量,变量不正确? 或者,如果我们使用变量作为第一个操作数,为什么必须只有寄存器或立即数? 或者为什么这是错误的: MOV[x],除立即数或寄存器外的任何内容 这些规则是如何定义的? 编辑:
我说的是8086处理器。

汇编命令的规则是由处理器定义的,或者更确切地说是由生产处理器的公司定义的。。。而且是电子的。寄存器是proc内部的,因此可以在一个机器周期内复制到内存或从内存复制。但从内存复制到另一个内存需要通过处理器(或通过用于DMA操作的协处理器)。

x86 MOV指令根本不支持同一指令中的加载和存储


您可以从内存加载到寄存器,也可以将寄存器存储到内存。如果要在一条指令中将内存复制到内存,则需要使用
MOVS
指令,该指令使用两个指针并复制它们。

我不知道“变量”是什么意思。你的意思是“mX操作数”@Griwes是在数据部分定义的变量在汇编中没有“变量”这个词。@Griwes那么这是什么:test db?(使用未知初始值进行测试?)OP似乎在问为什么不能使用
mov
指令将数据从一个内存位置复制到另一个内存位置。