Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с программой от ICZELION, Программа вывода окна. 
:(
    Опции темы
mustafa1453
  Дата 26.8.2009, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 25.7.2009

Репутация: нет
Всего: нет



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


Ошибки:
user posted image
PM MAIL   Вверх
GoldFinch
Дата 26.8.2009, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



в пакете masm32 этот исходник выглядит так
Код

.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 :DWORD,:DWORD,:DWORD,:DWORD

.data
ClassName db "SimpleWinClass",0
AppName  db "Our First Window",0

.data?
hInstance HINSTANCE ?
CommandLine LPSTR ?
.code
start:
    invoke GetModuleHandle, NULL
    mov    hInstance,eax
    invoke GetCommandLine
    mov    CommandLine,eax
    invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
    invoke ExitProcess,eax

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
    LOCAL wc:WNDCLASSEX
    LOCAL msg:MSG
    LOCAL hwnd:HWND
    mov   wc.cbSize,SIZEOF WNDCLASSEX
    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,SW_SHOWNORMAL
    invoke UpdateWindow, hwnd
    .WHILE TRUE
        invoke GetMessage, ADDR msg,NULL,0,0
        .BREAK .IF (!eax)
        invoke TranslateMessage, ADDR msg
        invoke DispatchMessage, ADDR msg
    .ENDW
    mov     eax,msg.wParam
    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

зачем надо было вот тут вставлять перевод строки? 
Код

WinMain proc
hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD

PM MAIL ICQ   Вверх
500mhz
Дата 27.8.2009, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



мое скромное имхо )
изучать МАСМ да еще сразу по тутору от ICZELION совсем непохек (да и тутор не фонтан, хотя другие еше хуже)

наверно сначала проше сам асм изучить без особой привязки к оси
потом winapi на простых примерах типа ExitProccess, файлики там посоздовать , память повыделять, хеловорд написать в консоли, понять че куда и откуда импортируеться и вообще как оно работает, а уж потом заморачиваться с окошками диалогами и прочей лабудой.
а уж начинать мутить сразу с макросами while итд итп вообще маразм и моветон.
и вообще фасм в данном деле рулит , один инклуд  и все РЕ готов )))

Это сообщение отредактировал(а) 500mhz - 27.8.2009, 01:06


--------------------

PM MAIL ICQ   Вверх
mustafa1453
Дата 28.8.2009, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 25.7.2009

Репутация: нет
Всего: нет



2 500Mhz:
я раньше и изучал TASM по рассілке Калашникова. Вот сейчас перешёл на MASM.

2 GoldGinch:
спасибо за подсказку. теперь все отлично работает.
PM MAIL   Вверх
500mhz
Дата 28.8.2009, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



mustafa1453
да осилит доругу идущий )))

таки зачим вам нужен этот масм? все прогрессивное человечество кодит на фасме
синтаксис ну почти тот же просто заморочек с самим компилером меньше


--------------------

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.1090 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.