天天看點

win32彙編建立線程簡單Demo

代碼如下;thread.asm;

.386
		.model flat,stdcall
		option casemap:none

include		windows.inc
include		user32.inc
includelib	user32.lib
include		kernel32.inc
includelib	kernel32.lib

		.data
dwThreadID      dd      ?
 
		.const
szCaption	db	'線程簡單demo',0
szReturn	db	'計數到達1000',0
 
		.code

_Counter	proc	uses ebx _lParam

		xor	ebx,ebx
		.while
		    inc	  ebx
                    .if ebx == 1000
                        invoke	MessageBox,NULL,offset szReturn,offset szCaption,MB_OK
                        invoke	MessageBox,NULL,offset dwThreadID,offset szCaption,MB_OK
                        invoke	ExitProcess,NULL
                    .endif
        	.endw

		ret
_Counter	endp

start:
                invoke	CreateThread,NULL,0,offset _Counter,NULL,NULL,0
		invoke	CloseHandle,eax
		;invoke	ExitProcess,NULL
		end	start
           

    程式啟動,建立一個線程,線程函數是_Counter,線上程裡循環,ebx加1,達到1000,彈出消息框,調用ExitProcess退出程式; 

建構,

win32彙編建立線程簡單Demo

建構成功;

運作,不會有任何表現;任務管理器裡沒有此程序;有時間再看;

寫成

invoke    CreateThread,NULL,0,offset _Counter,NULL,NULL,offset dwThreadID

invoke    CreateThread,NULL,0,offset _Counter,NULL,NULL,0

都是一樣的;

繼續閱讀