如何从程序集中调用C函数

时间:2015-11-02 23:12:51

标签: c assembly

我在Visual Studio 2012中编写x86程序集。

我试图从汇编程序中调用printf,但是只要包含EXTERN行就会抛出错误。它可能是非常愚蠢的东西,比如包括C函数库,但是我找不到任何可以告诉我如何正确执行它的在线资源。

这是我的代码:

.model flat

            EXTERN  _printf

.data

digits      byte    "0" dup (10), 0         

.code

main proc

            lea     eax,    digits
            push    eax
            call    _printf
            add     esp,    4

main endp

END

抛出的错误是:

error A2008: syntax error : in directive

在第3行(与EXTERN的行)

编辑:添加了有关环境的信息(第一行)。

1 个答案:

答案 0 :(得分:0)

如评论所示,请使用

        extern  _printf:proc

或者如果是32位模式,您可能需要使用:

        extern  _printf:near

externs可能需要放在.code部分。

还要在源代码顶部附近添加这两行,以使链接器查看这些库。

        includelib   msvcrtd
        includelib   oldnames