⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tut21.html

📁 WINDOWS程序员使用指南--汇编基础
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<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&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#993366">&nbsp;
; 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&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
db "PipeWinClass",0</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>AppName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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&nbsp;&nbsp;&nbsp;&nbsp;
db "Error during pipe creation",0</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>CreateProcessError&nbsp;&nbsp;&nbsp;&nbsp;
db "Error during process creation",0</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>CommandLine&nbsp;&nbsp;&nbsp;&nbsp;
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>&nbsp;&nbsp;&nbsp;
invoke GetModuleHandle, NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
mov hInstance,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
invoke WinMain, hInstance,NULL,NULL, SW_SHOWDEFAULT</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
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>&nbsp;&nbsp;&nbsp;
LOCAL wc:WNDCLASSEX</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
LOCAL msg:MSG</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
LOCAL hwnd:HWND</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
mov wc.cbSize,SIZEOF WNDCLASSEX</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
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>&nbsp;&nbsp;&nbsp;
mov wc.cbClsExtra,NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
mov wc.cbWndExtra,NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
push hInst</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
pop wc.hInstance</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
mov wc.hbrBackground,COLOR_APPWORKSPACE</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
mov wc.lpszMenuName,IDR_MAINMENU</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
mov wc.lpszClassName,OFFSET ClassName</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
invoke LoadIcon,NULL,IDI_APPLICATION</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
mov wc.hIcon,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
mov wc.hIconSm,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
invoke LoadCursor,NULL,IDC_ARROW</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
mov wc.hCursor,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
invoke RegisterClassEx, addr wc</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
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>&nbsp;&nbsp;&nbsp;
mov hwnd,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
.while TRUE</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke GetMessage, ADDR msg,NULL,0,0</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.BREAK .IF (!eax)</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke TranslateMessage, ADDR msg</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke DispatchMessage, ADDR msg</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
.endw</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
mov eax,msg.wParam</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
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>&nbsp;&nbsp;&nbsp;
LOCAL rect:RECT</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
LOCAL hRead:DWORD</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
LOCAL hWrite:DWORD</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
LOCAL startupinfo:STARTUPINFO</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
LOCAL pinfo:PROCESS_INFORMATION</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
LOCAL buffer[1024]:byte</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
LOCAL bytesRead:DWORD</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
LOCAL hdc:DWORD</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
LOCAL sat:SECURITY_ATTRIBUTES</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
.if uMsg==WM_CREATE</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov hwndEdit,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
.elseif uMsg==WM_CTLCOLOREDIT</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke SetTextColor,wParam,Yellow</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke SetBkColor,wParam,Black</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke GetStockObject,BLACK_BRUSH</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ret</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
.elseif uMsg==WM_SIZE</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov edx,lParam</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov ecx,edx</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
shr ecx,16</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
and edx,0ffffh</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke MoveWindow,hwndEdit,0,0,edx,ecx,TRUE</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;
.elseif uMsg==WM_COMMAND</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.if lParam==0</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov eax,wParam</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.if ax==IDM_ASSEMBLE</font></font></font></b>
<br>
    <b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    mov sat.nLength,sizeof SECURITY_ATTRIBUTES</font></font></font></b> <br>
    <b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov sat.lpSecurityDescriptor,NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov sat.bInheritHandle,TRUE</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke CreatePipe,addr hRead,addr hWrite,addr sat,NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.if eax==NULL</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.else</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov startupinfo.cb,sizeof STARTUPINFO</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke GetStartupInfo,addr startupinfo</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov eax, hWrite</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov startupinfo.hStdOutput,eax</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov startupinfo.hStdError,eax</font></font></font></b>
<br>
    <b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    mov startupinfo.dwFlags, STARTF_USESHOWWINDOW+ STARTF_USESTDHANDLES</font></font></font></b> 
    <br>
    <b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov startupinfo.wShowWindow,SW_HIDE</font></font></font></b>
<br><b><font face="Arial"><font color="#999900"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
invoke CreateProcess, NULL, addr CommandLine, NULL, NULL, TRUE, NULL, NULL,
NULL, addr startupinfo, addr pinfo</font></font></font></b>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -