?? tut21.html
字號(hào):
<br><b><font face="Arial"><font color="#999900"><font size=-1>include \masm32\include\gdi32.inc</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>includelib
\masm32\lib\gdi32.lib</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>includelib
\masm32\lib\user32.lib</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>includelib
\masm32\lib\kernel32.lib</font></font></font></b>
<p><b><font face="Arial"><font color="#999900"><font size=-1>WinMain PROTO
:DWORD,:DWORD,:DWORD,:DWORD</font></font></font></b>
<p><b><font face="Arial"><font color="#999900"><font size=-1>.const</font></font></font></b>
<br><b><font face="Arial"><font size=-1><font color="#999900">IDR_MAINMENU
equ 101 </font><font color="#993366">
; the ID of the main menu</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>IDM_ASSEMBLE
equ 40001</font></font></font></b>
<p><b><font face="Arial"><font color="#999900"><font size=-1>.data</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>ClassName
db "PipeWinClass",0</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>AppName
db "One-way Pipe Example",0 EditClass db "EDIT",0</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>CreatePipeError
db "Error during pipe creation",0</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>CreateProcessError
db "Error during process creation",0</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>CommandLine
db "ml /c /coff /Cp test.asm",0</font></font></font></b>
<p><b><font face="Arial"><font color="#999900"><font size=-1>.data?</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>hInstance
HINSTANCE ?</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>hwndEdit
dd ?</font></font></font></b>
<p><b><font face="Arial"><font color="#999900"><font size=-1>.code</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>start:</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke GetModuleHandle, NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov hInstance,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke WinMain, hInstance,NULL,NULL, SW_SHOWDEFAULT</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke ExitProcess,eax</font></font></font></b>
<p><b><font face="Arial"><font color="#999900"><font size=-1>WinMain proc
hInst:DWORD,hPrevInst:DWORD,CmdLine:DWORD,CmdShow:DWORD</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
LOCAL wc:WNDCLASSEX</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
LOCAL msg:MSG</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
LOCAL hwnd:HWND</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov wc.cbSize,SIZEOF WNDCLASSEX</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov wc.style, CS_HREDRAW or CS_VREDRAW mov wc.lpfnWndProc, OFFSET WndProc</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov wc.cbClsExtra,NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov wc.cbWndExtra,NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
push hInst</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
pop wc.hInstance</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov wc.hbrBackground,COLOR_APPWORKSPACE</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov wc.lpszMenuName,IDR_MAINMENU</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov wc.lpszClassName,OFFSET ClassName</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke LoadIcon,NULL,IDI_APPLICATION</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov wc.hIcon,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov wc.hIconSm,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke LoadCursor,NULL,IDC_ARROW</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov wc.hCursor,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke RegisterClassEx, addr wc</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR ClassName,ADDR AppName,\ WS_OVERLAPPEDWINDOW+WS_VISIBLE,CW_USEDEFAULT,\
CW_USEDEFAULT,400,200,NULL,NULL,\ hInst,NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov hwnd,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
.while TRUE</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke GetMessage, ADDR msg,NULL,0,0</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
.BREAK .IF (!eax)</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke TranslateMessage, ADDR msg</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke DispatchMessage, ADDR msg</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
.endw</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov eax,msg.wParam</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
ret</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>WinMain endp</font></font></font></b>
<p><b><font face="Arial"><font color="#999900"><font size=-1>WndProc proc
hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
LOCAL rect:RECT</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
LOCAL hRead:DWORD</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
LOCAL hWrite:DWORD</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
LOCAL startupinfo:STARTUPINFO</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
LOCAL pinfo:PROCESS_INFORMATION</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
LOCAL buffer[1024]:byte</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
LOCAL bytesRead:DWORD</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
LOCAL hdc:DWORD</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
LOCAL sat:SECURITY_ATTRIBUTES</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
.if uMsg==WM_CREATE</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke CreateWindowEx,NULL,addr EditClass, NULL, WS_CHILD+ WS_VISIBLE+
ES_MULTILINE+ ES_AUTOHSCROLL+ ES_AUTOVSCROLL, 0, 0, 0, 0, hWnd, NULL, hInstance,
NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov hwndEdit,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
.elseif uMsg==WM_CTLCOLOREDIT</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke SetTextColor,wParam,Yellow</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke SetBkColor,wParam,Black</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke GetStockObject,BLACK_BRUSH</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
ret</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
.elseif uMsg==WM_SIZE</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov edx,lParam</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov ecx,edx</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
shr ecx,16</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
and edx,0ffffh</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke MoveWindow,hwndEdit,0,0,edx,ecx,TRUE</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
.elseif uMsg==WM_COMMAND</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
.if lParam==0</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov eax,wParam</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
.if ax==IDM_ASSEMBLE</font></font></font></b>
<br>
<b><font face="Arial"><font color="#999900"><font size=-1>
mov sat.nLength,sizeof SECURITY_ATTRIBUTES</font></font></font></b> <br>
<b><font face="Arial"><font color="#999900"><font size=-1>
mov sat.lpSecurityDescriptor,NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov sat.bInheritHandle,TRUE</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke CreatePipe,addr hRead,addr hWrite,addr sat,NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
.if eax==NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke MessageBox, hWnd, addr CreatePipeError, addr AppName, MB_ICONERROR+
MB_OK</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
.else</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov startupinfo.cb,sizeof STARTUPINFO</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke GetStartupInfo,addr startupinfo</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov eax, hWrite</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov startupinfo.hStdOutput,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
mov startupinfo.hStdError,eax</font></font></font></b>
<br>
<b><font face="Arial"><font color="#999900"><font size=-1>
mov startupinfo.dwFlags, STARTF_USESHOWWINDOW+ STARTF_USESTDHANDLES</font></font></font></b>
<br>
<b><font face="Arial"><font color="#999900"><font size=-1>
mov startupinfo.wShowWindow,SW_HIDE</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>
invoke CreateProcess, NULL, addr CommandLine, NULL, NULL, TRUE, NULL, NULL,
NULL, addr startupinfo, addr pinfo</font></font></font></b>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -