Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
 Аватар для Dimarik__
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
MASM32

Создание окна

22.06.2011, 17:28. Показов 6566. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
в MASM реализую создание окна. что-то ругается он очень на мою писанину. Код набирал из книги вроде правильно всё. Да и ошибки он в непонятных местах указывает.
Microsoft Windows [Version 6.1.7600]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:\Users\Dimarik>cd c:/masm32/bin

c:\masm32\bin>ml /c window.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

Assembling: window.asm
window.asm(183) : error A2008: syntax error : WNDPROC
window.asm(263) : error A2008: syntax error : WNDPROCENDP
window.asm(103) : error A2006: undefined symbol : WNDPROC
window.asm(104) : error A2006: undefined symbol : CLSEXTRA
window.asm(119) : error A2006: undefined symbol : CLBGROUND
window.asm(123) : error A2006: undefined symbol : RegisterClassA@4
window.asm(136) : error A2006: undefined symbol : WS_OVERLAPPEWINDOW
window.asm(140) : error A2006: undefined symbol : CreateWindowEXA@48
window.asm(194) : error A2006: undefined symbol : oCH
window.asm(229) : error A2206: missing operator in expression

особенно непонятны первые 2 ошибки. С остальными ещё можно разобраться.
Код здесь. http://zalil.ru/31315441
Гляньте кто может, пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.06.2011, 17:28
Ответы с готовыми решениями:

Создание окна в ассемблере
;Сегмент кода. _TEXT SEGMENT DWORD PUBLIC USE32 'CODE' START: PUSH 0 PUSH OFFSET TIT PUSH OFFSET...

Создание модального окна
Приветствую! Не получается создать модальное окно при использовании CreateWindowEx -не могу выйти из цикла сообщений. Подскажите где...

Создание окна на MASM32
При создании окна на MASM32 еслия хочу вставить полосы прокруток в С позиции обозначаются через static int VertPosition и т.д. При...

7
43 / 42 / 5
Регистрация: 22.06.2011
Сообщений: 71
22.06.2011, 19:44
Это вроде как твой текст объявления процедуры
WNDPROC
....
WNDPROCENDP

В нем явно не хватает директивы PROC, на что транслятор и ругается. Правильно:
WND PROC
...
WND ENDP

НУ ИЛИ:

WNDPROC PROC
...
WNDPROC ENDP
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
22.06.2011, 20:09
Dimarik__, сам код набирал или он так скопировался? Ошибок полно и все глупые. То пробел пропущен, то регистр не правильный, то o(о) вместо 0(нуль)
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
23.06.2011, 00:29
мне как-то FASM ближе если интересно вот чистое окно
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
format PE GUI
entry start
include 'win32a.inc'
;______________________________________________________________
 
section '.data' data readable writeable
 
class  db 'FASMWIN32',0
title  db 'Окно',0
wc WNDCLASS 0,WindowProc,0,0,0,0,0,COLOR_BTNFACE+1,0,class
msg MSG
;______________________________________________________________
 
section '.code' code readable executable
 
start:
invoke GetModuleHandle,0
mov [wc.hInstance],eax
invoke RegisterClass,wc
cmp eax,0
 
invoke CreateWindowEx,0,class,title,WS_VISIBLE+WS_DLGFRAME+WS_SYSMENU,128,128,256,192,0,0,[wc.hInstance],0
cmp eax,0
 
msg_loop:
invoke GetMessage,msg,0,0,0
cmp eax,0
je end_loop
invoke TranslateMessage,msg
invoke DispatchMessage,msg
jmp msg_loop
end_loop:
invoke ExitProcess,[msg.wParam]
 
proc WindowProc hwnd,wmsg,wparam,lparam
push ebx esi edi
cmp [wmsg],WM_DESTROY
je .wmdestroy
.defwndproc:
invoke DefWindowProc,[hwnd],[wmsg],[wparam],[lparam]
jmp .finish
.wmdestroy:
invoke PostQuitMessage,0
mov eax,0
.finish:
pop edi esi ebx
ret
endp
;______________________________________________________________
 
section '.idata' import data readable writeable
 
library kernel32,'KERNEL32.DLL',\
    user32,'USER32.DLL'
 
include 'api\kernel32.inc'
include 'api\user32.inc'
1
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
23.06.2011, 07:35
Dimarik__, мой вариант
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
.686P
.model flat
include windows.inc
includelib user32.lib
includelib kernel32.lib
extern _imp__CreateWindowExA@48:dword
extern _imp__RegisterClassA@4:dword
extern _imp__GetMessageA@16:dword
extern _imp__DispatchMessageA@4:dword
extern _imp__ExitProcess@4:dword
extern _imp__DefWindowProcA@16:dword
.code
start:  xor ebx,ebx
         mov esi,400000h
    mov edi,offset wTitle
;------------------------------
; registering the window class 
;------------------------------
    push edi
    push ebx
    push COLOR_WINDOW+1
    push 10011h
    push ebx
    push esi
    push ebx
    push ebx
    push offset window_procedure
    push ebx
    push esp
    call _imp__RegisterClassA@4
;--------------------------+
; creating the main window |
;--------------------------+
    push ebx
    push esi
    shl esi,9
    push ebx
    push ebx
    push esi
    push esi
    push esi
    push esi
    push WS_OVERLAPPEDWINDOW or WS_VISIBLE
    push edi
    push edi
    push ebx    
      call _imp__CreateWindowExA@48
     mov ebp,esp ; обходимся без структуры MSG
  @@:   push ebx
    push ebx
    push ebx
    push ebp;offset wmsg
    call _imp__GetMessageA@16
    push ebp;offset wmsg
    call _imp__DispatchMessageA@4
      jmp @b
window_procedure: cmp dword ptr [esp+08],WM_DESTROY
    je short wmDESTROY
    jmp _imp__DefWindowProcA@16
wmDESTROY: push ebx
          call _imp__ExitProcess@4
wTitle db 'Iczelion Tutorial #3:A Simple Window in MASM',0
end start
1
 Аватар для Dimarik__
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
23.06.2011, 10:30  [ТС]
я читал про функцию printf. Автор писал что после её использования надо делать add EXP,8 (так как (как я понял) в функции printf отсутствует Ret 8). (если всего 8 бит занимают параметры)
Почему такого не надо делать после вызова API-функций?
Или у них всё прописано или как? подскажите, пожалуйста.
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
23.06.2011, 11:34
Цитата Сообщение от Dimarik__ Посмотреть сообщение
Почему такого не надо делать после вызова API-функций?
Или у них всё прописано или как? подскажите, пожалуйста.
http://ru.wikipedia.org/wiki/Соглашение_вызова
Обрати внимание на разницу в соглашениях cdecl и stdcall.
cdecl Очистку стека производит вызывающая программа.
stdcall Очистку стека производит вызываемая подпрограмма.
1
 Аватар для Dimarik__
21 / 21 / 3
Регистрация: 29.04.2010
Сообщений: 444
23.06.2011, 16:22  [ТС]
спасибо большущее
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.06.2011, 16:22
Помогаю со студенческими работами здесь

Создание окна на fasm
Всем привет. Только что начал изучать ассемблер fasm. Возник первый вопрос: как создать окно? Прошу не просто дать мне код, а ещё...

Создание окна с элементами управления (кнопки, список, комбинированный список)
Помогите создать окно на assembler'е (MASM32) с этими элементами управления: Четыре кнопки, список, комбинированный список. Заранее...

Как избавится от родительского консольного окна при создание WinAPI окна
добрый день. использую DEV-C++, но так понимаю разницы нет, какая у нас IDE. создаём просто файл или пустой проект методом...

Создание модального диалогового окна поверх окна родителя
Не могу не где найти пример как это сделать. Нужно создать модальное окно поверх окна родителя вывести там информацию и закрыть через 5...

Создание невидимого окна поверх окна другой программы
Здравствуйте, как сделать невидимое окно поверх окна сторонней программы , например блокнота, и если изменился размер блокнота то и окно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru