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__前缀函数与之对应就行了!