Assembly 如何在MASM中使用ADD指令?

Assembly 如何在MASM中使用ADD指令?,assembly,x86,masm,Assembly,X86,Masm,这是我的代码片段: .data Num1 equ 40h Num2 equ 41h Var1 dword 0 Var2 dword 0 ;---------------------------------------------------------------------- align 4 .code ;insert executable instructions below main PROC

这是我的代码片段:

    .data
Num1    equ     40h
Num2    equ     41h
Var1    dword   0
Var2    dword   0
;----------------------------------------------------------------------
    align   4
    .code       ;insert executable instructions below
main    PROC        ;program execution begins here
    mov Var1, Num1
    mov Var2, Num2

    add Var1, Var2
我试图使用ADD指令,但出现以下错误:

error A2070: invalid instruction operands
此错误与添加行有关。
如果省略该行,程序运行正常。

不能将两个内存位置相互添加,应使用其中一个寄存器作为第二个操作数

 .data
Num1    equ     40h
Num2    equ     41h
;----------------------------------------------------------------------
    align   4
    .code       ;insert executable instructions below
    main    PROC        ;program execution begins here

    mov ax, Num2

    add ax, Num1

至少有一个操作数需要是寄存器。你应该会在
mov
s中遇到同样的错误。@Mysticial
mov r/m,imm
是可编码的,对吗
C7/0
?@harold我不太熟悉程序集声明语法。这就是为什么我没有回答。我以前从未见过
eq
。但是,如果它把它当作一个直接变量,那就可以解释它。@它应该是神秘的,这就是本质上的
eq
for@MIH1406将
Var1
移动到寄存器中。然后添加
Var2
。然后把它移回内存。既然它是dword,你不应该使用eax吗?是的,但是我从程序中删除了var1和var2,因为它们不是必需的,它们只是增加了内存读/写开销。equales是汇编时间常数,与正在运行的程序无关。是的,但是var1 dword 0 var2 dword 0是内存变量