m_asadpoor
New Member
سلام دوستان من یک قطعه کد اسمبلی دانلود کردم ولی نمی تونم کامل بفهمم که این کد چی کار می کنه .کسی هست که بتونه به من کمک کنه؟
کد:
[B][FONT="].386[/FONT][/B]
[B][FONT="].model flat,stdcall[/FONT][/B]
[B][FONT="]option casemap:none[/FONT][/B]
[B][FONT="]WinMain proto :DWORD,:DWORD,:DWORD,:DWORD[/FONT][/B]
[B][FONT="]include \masm32\include\windows.inc[/FONT][/B]
[B][FONT="]include \masm32\include\user32.inc[/FONT][/B]
[B][FONT="]include \masm32\include\kernel32.inc[/FONT][/B]
[B][FONT="]include \masm32\include\gdi32.inc[/FONT][/B]
[B][FONT="]includelib \masm32\lib\user32.lib[/FONT][/B]
[B][FONT="]includelib \masm32\lib\kernel32.lib[/FONT][/B]
[B][FONT="]includelib \masm32\lib\gdi32.lib[/FONT][/B]
[B][FONT="].data[/FONT][/B]
[B][FONT="]ClassName db "SimpleWinClass",0[/FONT][/B]
[B][FONT="]AppName db "Our First Window",0[/FONT][/B]
[B][FONT="]char WPARAM 20h[/FONT][/B]
[B][FONT="].data?[/FONT][/B]
[B][FONT="]hInstance HINSTANCE ?[/FONT][/B]
[B][FONT="]CommandLine LPSTR ?[/FONT][/B]
[B][FONT="].code[/FONT][/B]
[B][FONT="]start:[/FONT][/B]
[B][FONT="] invoke GetModuleHandle, NULL[/FONT][/B]
[B][FONT="] mov hInstance,eax[/FONT][/B]
[B][FONT="] invoke GetCommandLine[/FONT][/B]
[B][FONT="] mov CommandLine,eax[/FONT][/B]
[B][FONT="] invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT[/FONT][/B]
[B][FONT="] invoke ExitProcess,eax[/FONT][/B]
[B][FONT="]WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD[/FONT][/B]
[B][FONT="] LOCAL wc:WNDCLAS***[/FONT][/B]
[B][FONT="] LOCAL msg:MSG[/FONT][/B]
[B][FONT="] LOCAL hwnd:HWND[/FONT][/B]
[B][FONT="] mov wc.cbSize,SIZEOF WNDCLAS***[/FONT][/B]
[B][FONT="] mov wc.style, CS_HREDRAW or CS_VREDRAW[/FONT][/B]
[B][FONT="] mov wc.lpfnWndProc, OFFSET WndProc[/FONT][/B]
[B][FONT="] mov wc.cbCl***tra,NULL[/FONT][/B]
[B][FONT="] mov wc.cbWndExtra,NULL[/FONT][/B]
[B][FONT="] push hInst[/FONT][/B]
[B][FONT="] pop wc.hInstance[/FONT][/B]
[B][FONT="] mov wc.hbrBackground,COLOR_WINDOW+1[/FONT][/B]
[B][FONT="] mov wc.lpszMenuName,NULL[/FONT][/B]
[B][FONT="] mov wc.lpszClassName,OFFSET ClassName[/FONT][/B]
[B][FONT="] invoke LoadIcon,NULL,IDI_APPLICATION[/FONT][/B]
[B][FONT="] mov wc.hIcon,eax[/FONT][/B]
[B][FONT="] mov wc.hIconSm,eax[/FONT][/B]
[B][FONT="] invoke LoadCursor,NULL,IDC_ARROW[/FONT][/B]
[B][FONT="] mov wc.hCursor,eax[/FONT][/B]
[B][FONT="] invoke RegisterClas***, addr wc[/FONT][/B]
[B][FONT="] INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\[/FONT][/B]
[B][FONT="] WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\[/FONT][/B]
[B][FONT="] CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\[/FONT][/B]
[B][FONT="] hInst,NULL[/FONT][/B]
[B][FONT="] mov hwnd,eax[/FONT][/B]
[B][FONT="] INVOKE ShowWindow, hwnd,SW_SHOWNORMAL[/FONT][/B]
[B][FONT="] INVOKE UpdateWindow, hwnd[/FONT][/B]
[B][FONT="] .WHILE TRUE[/FONT][/B]
[B][FONT="] INVOKE GetMessage, ADDR msg,NULL,0,0[/FONT][/B]
[B][FONT="] .BREAK .IF (!eax)[/FONT][/B]
[B][FONT="] INVOKE TranslateMessage, ADDR msg[/FONT][/B]
[B][FONT="] INVOKE DispatchMessage, ADDR msg[/FONT][/B]
[B][FONT="] .ENDW[/FONT][/B]
[B][FONT="] mov eax,msg.wParam[/FONT][/B]
[B][FONT="] ret[/FONT][/B]
[B][FONT="]WinMain endp[/FONT][/B]
[B][FONT="]WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM[/FONT][/B]
[B][FONT="] LOCAL hdc:HDC[/FONT][/B]
[B][FONT="] LOCAL ps:PAINTSTRUCT[/FONT][/B]
[B][FONT="] .IF uMsg==WM_DESTROY[/FONT][/B]
[B][FONT="] invoke PostQuitMessage,NULL[/FONT][/B]
[B][FONT="] .ELSEIF uMsg==WM_CHAR[/FONT][/B]
[B][FONT="] push wParam[/FONT][/B]
[B][FONT="] pop char[/FONT][/B]
[B][FONT="] invoke InvalidateRect, hWnd,NULL,TRUE[/FONT][/B]
[B][FONT="] .ELSEIF uMsg==WM_PAINT[/FONT][/B]
[B][FONT="] invoke BeginPaint,hWnd, ADDR ps[/FONT][/B]
[B][FONT="] mov hdc,eax[/FONT][/B]
[B][FONT="] invoke TextOut,hdc,0,0,ADDR char,1[/FONT][/B]
[B][FONT="] invoke EndPaint,hWnd, ADDR ps[/FONT][/B]
[B][FONT="] .ELSE[/FONT][/B]
[B][FONT="] invoke DefWindowProc,hWnd,uMsg,wParam,lParam[/FONT][/B]
[B][FONT="] ret[/FONT][/B]
[B][FONT="] .ENDIF[/FONT][/B]
[B][FONT="] xor eax,eax[/FONT][/B]
[B][FONT="] ret[/FONT][/B]
[B][FONT="]WndProc endp[/FONT][/B]
[B][FONT="]end start[/FONT][/B]