Проблема с программой от ICZELION

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
mustafa1453
Сообщения: 5
Зарегистрирован: 23 июл 2009, 13:59

Вобщем изучаю сейчас MASM по туториалу ICZELION. Пробую откомпилировать код программы, выдает кучу ошибок на этапе компиляции.
Код:

Код: Выделить всё

.386
.model flat,stdcall

option casemap:none
include D:\masm32\include\windows.inc
include D:\masm32\include\user32.inc
includelib D:\masm32\lib\user32.lib ; calls to functions in user32.lib and kernel32.lib
include D:\masm32\include\kernel32.inc
includelib D:\masm32\lib\kernel32.lib


WinMain proto :D WORD, :D WORD, :D WORD, :D WORD

.DATA                           ; initialized data

ClassName db "SimpleWinClass",0 ; Имя нашего класса окна
AppName db "Our First Window",0 ; Имя нашего окна


.DATA?                  ; Hеиницилизируемые данные
hInstance HINSTANCE ?   ; Хэндл нашей программы
CommandLine LPSTR ?
.CODE                ; Здесь начинается наш код
start:
invoke GetModuleHandle, NULL ; Взять хэндл программы
                             ; Под Win32, hmodule==hinstance mov hInstance,eax
mov hInstance,eax

invoke GetCommandLine   ; Взять командную строку. Вы не обязаны
           ;вызывать эту функцию ЕСЛИ ваша программа не обрабатывает командную строку.
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine,SW_SHOWDEFAULT  ; вызвать основную функцию
invoke ExitProcess, eax ; Выйти из программы.
                        ; Возвращаемое значение, помещаемое в eax, берется из WinMain'а.

WinMain proc

hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow :D WORD
    LOCAL wc:WNDCLASSEX      ; создание локальных переменных в стеке
    LOCAL msg:MSG
    LOCAL hwnd:HWND


    mov   wc.cbSize,SIZEOF WNDCLASSEX   ; заполнение структуры 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  ; регистрация нашего класса окна
    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 ; отобразить наше окно на десктопе
    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 ; сохранение возвращаемого значения в eax
     ret

WinMain endp

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

    .IF uMsg==WM_DESTROY            ; если пользователь закрывает окно
        invoke PostQuitMessage,NULL ; выходим из программы
    .ELSE
        invoke DefWindowProc,hWnd,uMsg,wParam,lParam ; Дефаултная функция обработки окна
        ret
    .ENDIF
    xor eax,eax

    ret
WndProc endp


end start
Ошибки:
[ATTACH]1004[/ATTACH]
Вложения
asm.jpg
asm.jpg (91.92 КБ) 56 просмотров
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

хоть копи паст освойте у Вас переменные не определены
wc и прочие
icq:3(один)7748666
mail:airyashov( а)inbox.ru
Ответить