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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2011, 18:56   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию Ошибка в windows.inc

Приветствую всех посетителей этого форума. Возник вопрос начинающего (т.к. я только начинаю изучать ассемблер). Я написал простую программку по книге крупника и слегка ее изменил. Masm начал выбивать ошибки. В пятьдесят раз больше, чем у меня строк в коде. Пришлось точно списать из книги. Все равно. Пишет о файле windows.inc. Ошибки я прикрепил. Вот сам код:
Код:
.386
.model flat, stdcall 
include \myasm\include\windows.inc
include \myasm\include\kernel32.inc
includelib \myasm\lib\kernel32.lib
MyProc proto : DWORD, :DWORD
.data
msg BYTE "Я вообще не могу молчать !", 0dh,0ah
.code
start:
invoke MyProc, Addr msg, SizeOf msg
invoke ExitProcess, 0
MyProc proc addrmsg : DWORD, strsize: DWORD
sub esp,8 
invoke GetStdHandle, STD_OUTPUT_HANDLE
mov [esp-4], eax
invoke WriteConsoleA,
       [esp-4],
       [esp+8],
       [esp+12],
       Addr[esp-8],
       NULL     
ret 8
MyProc endp
end start

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 01.05.2011, 19:02   #2
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Забыл прикрепить файл.
Изображения
Тип файла: jpg Ошибка.jpg (208.3 Кб, 170 просмотров)

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 02.05.2011, 18:45   #3
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Если никто не знает, то киньте мне свой windows.inc (для MASM естественно). Может MASM не хороший попался.

p.s. Извините за большое количество сообщений (подряд идущих).

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 02.05.2011, 19:06   #4
UsamaBenLadan
Пользователь
 
Аватар для UsamaBenLadan
 
Регистрация: 01.05.2011
Сообщений: 23
По умолчанию

При компиляции нужно указыать некоторые условные символы (для условной компиляции внутри windows.inc).
У меня нормально компилирует с такими параметрами:
-c -nologo -Cx -coff -DMASM6 -DBLD_COFF -DIS_32
Вложения
Тип файла: zip win_inc.zip (180.9 Кб, 19 просмотров)
UsamaBenLadan вне форума Ответить с цитированием
Старый 03.05.2011, 06:13   #5
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

_PROGRAMM_
Не знаю что там у тебя с windows.inc, этот файл собрание всевозможных констант и структур. Все что тебе нужно это найти в твоем windows.inc константы STD_OUTPUT_HANDLE и NULL и вставить их в свой ассемблерный файл сразу после строки .model flat, stdcall а перед строкой include \myasm\include\windows.inc поставить "точку с запятой"
Код:
NULL                                 equ 0
STD_OUTPUT_HANDLE                    equ -11
Mikl___ вне форума Ответить с цитированием
Старый 03.05.2011, 10:33   #6
UsamaBenLadan
Пользователь
 
Аватар для UsamaBenLadan
 
Регистрация: 01.05.2011
Сообщений: 23
По умолчанию

Пардон - условной компиляции тут действительно нет (перепутал с Win DDK).
Всё должно быть нормально так:

.386
.model flat, stdcall
option casemap:none
...
UsamaBenLadan вне форума Ответить с цитированием
Старый 03.05.2011, 14:41   #7
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

UsamaBenLadan
мы же не знаем с какими ключами идет компиляция у _PROGRAMM_, например, добавление ключа компиляции /Cp - "сохранить регистр символов во всех идентификаторах" позволяет не писать каждый раз в тексте ассемблерного файла "option casemap:none".
Добавление ключа компиляции /I:путь - "установить путь для включаемых файлов" позволяет нам не указывать каждый раз полный путь к inc-файлам.
Добавление ключа компиляции /Gz - "Определить соглашение о именах и стиле вызова функций stdcall" позволяет нам не указывать каждый раз "stdcall".
Ключ /LIBPATH:путь говорит линкеру, где находятся библиотеки импорта, что позволяет нам не указывать каждый раз полный путь к lib-файлам.
Mikl___ вне форума Ответить с цитированием
Старый 04.05.2011, 07:26   #8
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
option casemap:none
Вы правы я пропустил.
Цитата:
например, добавление ключа компиляции /Cp - "сохранить регистр символов во всех идентификаторах" позволяет не писать каждый раз в тексте ассемблерного файла "option casemap:none".
Да нет я его не ставил.

Mikl___, UsamaBenLadan огромное вам спасибо

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 27.10.2011, 19:34   #9
Sev-x
 
Регистрация: 20.11.2010
Сообщений: 5
По умолчанию

PROGRAMM_ на счет твоей ошибки:
Открой windows.inc в блокноте и закоменть вначале идущие строки.
; комментарий
Т.е. Текст который в начале файла либо удали полностью или перед каждой строкой поставь ;
Sev-x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при загрузке Windows XP Login60 Помощь студентам 10 16.04.2011 01:09
Windows 7 ошибка на этапе загрузки delphin100 Windows 1 18.12.2010 12:48
Ошибка Windows.Помогите! proglamer Помощь студентам 2 09.12.2009 13:26
Ошибка.Windows.Vista Krost Windows 6 04.11.2009 00:14