Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2009, 13:46   #1
mustafa1453
 
Регистрация: 16.07.2008
Сообщений: 4
Восклицание Ошибки при компиляции программы (MASM)

Вобщем изучаю сейчас 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 :DWORD,:DWORD,:DWORD,:DWORD

.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:DWORD
    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
Ошибки:
asm.jpg
mustafa1453 вне форума Ответить с цитированием
Старый 26.08.2009, 14:01   #2
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Код:
WinMain proc тут перенос строки лишний
hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
пыщь
JTG вне форума Ответить с цитированием
Старый 28.08.2009, 15:16   #3
mustafa1453
 
Регистрация: 16.07.2008
Сообщений: 4
По умолчанию

Спасибо, заработало!
mustafa1453 вне форума Ответить с цитированием
Старый 06.09.2009, 05:02   #4
LastExale
Новичок
Джуниор
 
Регистрация: 06.09.2009
Сообщений: 3
По умолчанию

да помню)) я когда-то тоже с этой проблемой столкнулся, но слава богу я с ней быстро разобрался)))
LastExale вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка компиляции ALEX INCORPORATEED Помощь студентам 7 14.09.2012 00:46
Проблема с обработкой исключений в Delphi при компиляции программы на сервере ivladak Общие вопросы Delphi 14 15.08.2009 20:58
Ошибки после компиляции Cakeinpanic Общие вопросы C/C++ 8 16.05.2009 14:48
ошибки при компиляции |{ot Общие вопросы Delphi 14 02.08.2008 01:20