我仍然是大会的新手,目前正在我当地的社区学院上课。
我们的作业要求之一是使用宏来打印文本并接收用户输入。
我很确定我的打印代码是正确的:
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
因为宏是一个单独的文件,我很确定变量不会传输到我的主文件。我只是想知道如何传输'输入'的内容?从宏文件到我的主文件中的变量。 谢谢。
附注:由于某些原因,我的项目无法编译,因为它找不到宏文件,尽管它与主文件位于同一文件夹中。
答案 0 :(得分:0)
input
不是变量,它是一个宏参数。宏基本上只是文本替换功能。所以当你写下这样的东西时:
obtainString foo, bar
汇编程序将用以下代码替换该行:
lea eax, foo
push eax
lea eax, bar
push eax
call scanf
add esp, 8
所以没有什么可以“转移”。无论你传递给obtainString
的第一个参数的标签是什么,用户输入都将被写入。