代码如下;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
都是一样的;