【问题标题】:(MASM32) How would I create a macro to obtain a string from user input?(MASM32) 如何创建宏以从用户输入中获取字符串?
【发布时间】:2017-12-04 03:31:36
【问题描述】:

我对 Assembly 还是很陌生,目前正在我当地的社区大学上入门课程。

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

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

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

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

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

【问题讨论】:

    标签: macros scanf masm32


    【解决方案1】:

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

    obtainString foo, bar
    

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

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

    所以没有什么可以“转移”的。无论您作为第一个参数传递给obtainString 的任何标签都是用户输入的写入位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      • 1970-01-01
      • 2017-03-31
      相关资源
      最近更新 更多