вообщем под ос калашникова учебник освоил и внял так сказать
сечас выдалась свободная минутка слил с wasm.ru изеслона туториал под win32 как кодить
второй урок почемуто не компилится
сам код
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
WinMain proto

WORD,

WORD,

WORD,

WORD
.DATA
ClassName db "SimpleWinClass",0
AppName db "Our First Window",0
.DATA?
hInstance HINSTANCE ?
CommandLine LPSTR ?
.CODE ; Здесь начинается наш код
start:
invoke GetModuleHandle, NULL ; Взять хэндл пpогpаммы
; Под Win32, hmodule==hinstance mov
; hInstance,eax
mov hInstance,eax
invoke GetCommandLine ; Взять командную стpоку. Вы не обязаны
; вызывать эту функцию если ваша
; пpогpамма не обpабатывает командную стpоку.
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine,SW_SHOWDEFAULT
invoke ExitProcess, eax ; Выйти из пpогpаммы.
; Возвpащаемое значение, помещаемое в eax,
; беpется из WinMain.
WinMain proc
Inst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,C mdShow

WORD
LOCAL wc:WNDCLASSEX ; создание локальных пеpеменных в стеке
LOCAL msg:MSG
LOCAL hwnd:HWND
mov wc.cbSize,SIZEOF WNDCLASSEX ; заполнение стpуктуpы wc
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL
push hInstance
pop wc.hInstance
mov wc.hbrBackground,COLOR_WINDOW+1
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc ; pегистpация нашего класса окна
invoke CreateWindowEx,NULL,\
ADDR ClassName,\
ADDR AppName,\
WS_OVERLAPPEDWINDOW,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
NULL,\
NULL,\
hInst,\
NULL
mov hwnd,eax
invoke ShowWindow, hwnd,CmdShow ; отобpазить наше окно на десктопе
invoke UpdateWindow, hwnd ; обновить клиентскую область
.WHILE TRUE ; Enter message loop
invoke GetMessage, ADDR msg,NULL,0,0
.BREAK .IF (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
.ENDW
mov eax,msg.wParam ; сохpанение возвpащаемого значения в
; eax
ret
WinMain endp
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.IF uMsg==WM_DESTROY ; если пользователь закpывает окно
invoke PostQuitMessage,NULL ; выходим из пpогpаммы
.ELSE
invoke DefWindowProc,hWnd,uMsg,wParam,lParam ; Дефаултная функция
; обpаботки окна
ret
.ENDIF
xor eax,eax
ret
WndProc endp
end start
вот что выдает компилятор
Assembling: C:\test.asm
C:\test.asm(35) : error A2111: conflicting parameter definition
C:\test.asm(37) : error A2008: syntax error : HINSTANCE
C:\test.asm(39) : error A2012: PROC, MACRO, or macro repeat directive must precede LOCAL
C:\test.asm(40) : error A2012: PROC, MACRO, or macro repeat directive must precede LOCAL
C:\test.asm(41) : error A2012: PROC, MACRO, or macro repeat directive must precede LOCAL
C:\test.asm(58) : error A2006: undefined symbol : wc
C:\test.asm(58) : error A2114: INVOKE argument type mismatch : argument : 1
C:\test.asm(59) : error A2006: undefined symbol : hInst
C:\test.asm(59) : error A2114: INVOKE argument type mismatch : argument : 11
C:\test.asm(73) : error A2006: undefined symbol : CmdShow
C:\test.asm(73) : error A2114: INVOKE argument type mismatch : argument : 2
C:\test.asm(73) : error A2006: undefined symbol : hwnd
C:\test.asm(73) : error A2114: INVOKE argument type mismatch : argument : 1
C:\test.asm(74) : error A2006: undefined symbol : hwnd
C:\test.asm(74) : error A2114: INVOKE argument type mismatch : argument : 1
C:\test.asm(76) : error A2006: undefined symbol : msg
C:\test.asm(76) : error A2114: INVOKE argument type mismatch : argument : 1
C:\test.asm(78) : error A2006: undefined symbol : msg
C:\test.asm(78) : error A2114: INVOKE argument type mismatch : argument : 1
C:\test.asm(79) : error A2006: undefined symbol : msg
C:\test.asm(79) : error A2114: INVOKE argument type mismatch : argument : 1
C:\test.asm(43) : error A2006: undefined symbol : wc
C:\test.asm(44) : error A2006: undefined symbol : wc
C:\test.asm(45) : error A2006: undefined symbol : wc
C:\test.asm(46) : error A2006: undefined symbol : wc
C:\test.asm(47) : error A2006: undefined symbol : wc
C:\test.asm(49) : error A2006: undefined symbol : wc
C:\test.asm(50) : error A2006: undefined symbol : wc
C:\test.asm(51) : error A2006: undefined symbol : wc
C:\test.asm(52) : error A2006: undefined symbol : wc
C:\test.asm(54) : error A2006: undefined symbol : wc
C:\test.asm(55) : error A2006: undefined symbol : wc
C:\test.asm(57) : error A2006: undefined symbol : wc
C:\test.asm(72) : error A2006: undefined symbol : hwnd
C:\test.asm(82) : error A2006: undefined symbol : msg
’®¬ ў гбва®©б⢥ C *Ґ Ё¬ҐҐв ¬ҐвЄЁ.
‘ҐаЁ©*л© *®¬Ґа ⮬*: 3438-BA06
‘®¤Ґа¦Ё¬®Ґ Ї*ЇЄЁ C:\
03.03.2007 21:43 2я667 test.asm
1 д*©«®ў 2я667 Ў*©в
0 Ї*Ї®Є 437я686я272 Ў*©в бў®Ў®¤*®
какя то лажа при вызове winmain
что не так у него пока сам понять еще не в состоянии