【问题标题】:Error program.asm(8): error A2070: invalid instruction operands [duplicate]错误program.asm(8):错误A2070:无效指令操作数[重复]
【发布时间】:2016-09-24 13:56:30
【问题描述】:

我想使用寄存器交换到 8 位变量 var1 和 var2,但它给了我这个错误。这段代码有什么问题?

include irvine32.inc

.data

var1 byte 20

var2 byte 30

.code 

main proc

mov al,var2

mov var2,var1

mov var1,al

call dumpregs

exit 

main endp

end main

【问题讨论】:

  • 您不能在一条mov 指令中将内存移动到内存。这是一个问题mov var2,var1。您可以将内存移动到临时寄存器,然后从该寄存器移动到另一个内存位置。

标签: assembly masm irvine32


【解决方案1】:

内存到内存的操作是不允许的,你可以使用这个代码:

mov al,var1

mov ah,var2

mov var1,ah

mov var2,al

【讨论】:

  • 你不需要XCHG,只需将AH存储到var1,AL存储到var2即可。
  • 你是对的,这是一个不必要的操作,我编辑了解决方案。
猜你喜欢
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
相关资源
最近更新 更多