【原创】Masm32中使用VC运行时函数(msvcrt.inc)

  Masm32 SDK包中有一个msvcrt.inc头文件和msvcrt.lib导入库文件。这个头文件中的函数是由Masm32爱好者从VC的运行时库中导出整理的,msvcrt.inc头文件开头就说了:“prototypes for EXPORT msvcrt functions”。因此,在Win32汇编中用这个头文件来使用VC运行库的函数对编写Win32汇编程序来说是非常方便的。

  从msvcrt.inc中各个函数的原型可以看出,VC运行时中的各个函数名称前都多了一个crt__xxx,crt_xxx的前缀,使用这些函数只需要将msvcrt.inc和msvcrt.lib包含到源代码中,然后就可以直接用invoke伪指令来调用这些函数。下面是一个简单的例子:

.386
.model flat, stdcall

include        msvcrt.inc
includelib    msvcrt.lib

.const
    ; Note:不要在字符串中包含\n来换行;\n是C语言中的转义字符,它由C编译器在编译阶段处理成换行符,
    ;    而不是由printf函数来解析的,汇编器是不会将\n解释为换行符的
    szFmt    DB    "EAX = %d, EBX = %d, ECX = %d",0DH, 0AH, 0
.code

start:
    mov eax, 1
    mov ebx, 2
    mov ecx, 3
    invoke crt_printf, offset szFmt, eax, ebx, ecx
    invoke crt__getch
    ret
    
end start

 

 在Masm32中要使用VC运行时的函数,只要在msvcrt.inc中搜索一下VC运行时的函数名,确保一下有一个crt_或crt__前缀函数与之对应就行了!

posted on 2012-04-09 19:18  克劳德曼  阅读(1929)  评论(0)    收藏  举报