之前的汇编语言课学的是16位汇编,各种中断调用不胜其烦,这学期的编译原理开始使用masm32,编写intel的32位汇编,有些不习惯。纪念一下第一个helloworld程序。
.486
.model flat, stdcall
option casemap: none
include D:\masm32\include\msvcrt.inc
include D:\masm32\include\kernel32.inc
includelib D:\masm32\lib\msvcrt.lib
includelib D:\masm32\lib\kernel32.lib
.data
szText db 'Hello World!', 0
.code
start:
invoke crt_printf, addr szText
invoke ExitProcess, 0
end start
调用了自带的msvcrt库,比起之前的汇编语言没有任何封装的输出,crt_printf函数还是很方便的。
invoke用法【转】
invoke既可以调用WINDOWS API,也可以调用汇编子程序。
格式为invoke 程序名,参数1,参数2,。。。。
参数2先入堆栈,参数1再入堆栈,以此类推
如invoke mysubpro,eax,ecx