之前的彙編語言課學的是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
編譯器會編譯成下面這個模樣:
push ecx
push eax
call mysubpro
invoke原文:http://blog.sina.com.cn/s/blog_3dc2673e0100027m.html