【问题标题】:the why of MOV command restrictionsMOV命令限制的原因
【发布时间】:2015-02-27 10:13:52
【问题描述】:

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

【问题讨论】:

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

标签: assembly x86 mov restrictions


【解决方案1】:

x86 MOV 指令根本不支持在同一指令中同时进行加载和存储。

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

【讨论】:

    【解决方案2】:

    组装命令的规则是由处理器定义的,或者更确切地说是由生产处理器的公司......以及电子设备。寄存器在 proc 内部,因此可以在一个机器周期内复制到内存或从内存复制。但从内存复制到另一个内存需要经过处理器(或通过协处理器进行 DMA 操作)。

    【讨论】:

      猜你喜欢
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-01
      • 2021-03-02
      • 2017-06-12
      • 1970-01-01
      • 2014-12-25
      相关资源
      最近更新 更多