在MASM的宏定义中使用invoke是不可能的吗?

时间:2014-12-20 07:57:11

标签: assembly masm masm32

我正在尝试编写用于打印字符串的宏。这段代码工作正常:

include \masm32\include\masm32rt.inc

.const

    enterA  db  "a: ", 0

.code

    main proc

        invoke crt_printf, addr enterA

        invoke ExitProcess, NULL

    main endp

    end main

但是如果我为此定义宏..

include \masm32\include\masm32rt.inc

.const

    enterA  db  "a: ", 0

.code

    input macro tip
        invoke crt_printf, addr tip
    endm

    main proc

        input enterA

        invoke ExitProcess, NULL

    main endp

    end main

所以,我认为不可能在宏中使用invoke。为什么?

1 个答案:

答案 0 :(得分:1)

在宏中使用invoke是完全可以的。问题是您将宏命名为input。已经在masm32\macros\macros.asm中使用该名称的宏已包含在masm32\include\masm32rt.inc中,该代码包含在{{1}}中。因此,只需为宏选择一个不同的名称。