代碼如下;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退出程式;
建構,
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL9QjMZhXS6JWa50WWqpkMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwkDNzITM1MDM0IDMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
建構成功;
運作,不會有任何表現;任務管理器裡沒有此程序;有時間再看;
寫成
invoke CreateThread,NULL,0,offset _Counter,NULL,NULL,offset dwThreadID
或
invoke CreateThread,NULL,0,offset _Counter,NULL,NULL,0
都是一樣的;