(MASM32)如何创建一个宏来从用户输入中获取字符串?

时间:2017-12-04 03:31:37

标签: macros scanf masm32

我仍然是大会的新手,目前正在我当地的社区学院上课。

我们的作业要求之一是使用宏来打印文本并接收用户输入。

我很确定我的打印代码是正确的:

displayString MACRO message:REQ
  lea  eax, message
  push eax
  call printf    
  add esp, 4
ENDM

我对如何获取用户输入感到困惑。以下是我到目前为止的情况:

obtainString MACRO input:REQ, msgformat:REQ
  lea eax, input
  push eax
  lea eax, msgformat
  push eax
  call scanf
  add esp, 8
ENDM

因为宏是一个单独的文件,我很确定变量不会传输到我的主文件。我只是想知道如何传输'输入'的内容?从宏文件到我的主文件中的变量。 谢谢。

附注:由于某些原因,我的项目无法编译,因为它找不到宏文件,尽管它与主文件位于同一文件夹中。

1 个答案:

答案 0 :(得分:0)

input不是变量,它是一个宏参数。宏基本上只是文本替换功能。所以当你写下这样的东西时:

obtainString foo, bar

汇编程序将用以下代码替换该行:

lea eax, foo
push eax
lea eax, bar
push eax
call scanf
add esp, 8

所以没有什么可以“转移”。无论你传递给obtainString的第一个参数的标签是什么,用户输入都将被写入。