Assembly MASM:传递到宏时寄存器的使用无效

Assembly MASM:传递到宏时寄存器的使用无效,assembly,x86,masm,Assembly,X86,Masm,我是MASM的新手,正在尝试使用宏完成一个练习,但是,每次我尝试向宏传递参数时,都会收到错误错误A2032:寄存器的使用无效。据我所知,我正确地使用了宏。这是配置问题吗?下面是我的代码中引起这个问题的部分的要点。宏在单独的过程中调用,参数通过堆栈传递给该过程 mDoThing MACRO temp push edx push ecx mov edx,offset stringToWrite call WriteString mov edx,offset temp mov

我是MASM的新手,正在尝试使用宏完成一个练习,但是,每次我尝试向宏传递参数时,都会收到错误
错误A2032:寄存器的使用无效
。据我所知,我正确地使用了宏。这是配置问题吗?下面是我的代码中引起这个问题的部分的要点。宏在单独的过程中调用,参数通过堆栈传递给该过程

mDoThing MACRO temp
  push edx
  push ecx
  mov edx,offset stringToWrite
  call WriteString
  mov edx,offset temp
  mov ecx,MAXSIZE
  call ReadString
  pop ecx
  pop edx
ENDM

.code 

main PROC

push offset arrayToFill
push offset strBuffer
call ReadVal


main ENDP

ReadVal PROC

  push ebp
  mov  ebp,esp
  mov edx,[ebp+8]  ; strBuffer

  mDoThing edx    ; trying to use macro here

  .... etc

ReadVal ENDP

您将
edx
作为
temp
参数传递,宏将尝试对其应用
offset temp
,这是无效的,因为寄存器没有地址。PS:尽可能避免宏,并考虑使用函数。通过谷歌搜索这些信息,我可以使用很多信息。谢谢。您将
edx
作为
temp
参数传递,宏将尝试对其应用
offset temp
,这是无效的,因为寄存器没有地址。PS:尽可能避免宏,并考虑使用函数。通过谷歌搜索这些信息,我可以使用很多信息。谢谢