Твой софтовый форум > Тематические форумы > Программирование

MASM32

,

Проблема с компиляцией

Дата публикации: 24.05.2006 - 09:54
Pages: 1, 2
Leon4V
Только-только начал изучать ассемблер, вот, сразу же столкнулся с такой проблемой: при компановке у меня появляется такое предупреждение
warning A4023: /coff switch, leading underscore required for start address : begin

Но, всё равно, файл *.obj создается. Зато при линковании уже появляется не предупреждение, а ошибка:
fatal error LNK1190: invalid fixup found, type 0x0001

Поискал такие ошибки в поисковике, вроде такие вопросы ранше задавались людьми, но никто ничего конкретного не ответил, лишь ссылки на faq-и давали, документации и т.д.

Если нужно, вот код компилируемой программы, но пробовал и другие подобные:
QUOTE
CSEG segment
org 100h

Begin:

mov ah,9
mov dx,offset Message
int 21h

int 20h

Message db 'Hello, world!$'

CSEG ends
end Begin


компилировал в командной строке такими командами
c:\masm32\bin\ml /c /coff 1.asm
c:\masm32\bin\link /SUBSYSTEM:WINDOWS /LIBPATH:c:\masm32\lib 1.obj


Обидно, только начал, а уже застопорился из-за этого. Если кому известно, как исправить, подскажите, если не сложно.
Love.sys
Leon4V, странно - у меня MASM таких ошибок не выдавал. Как альтернатива поробуй TASM, там вообще можно обойтись без стадии компановки.
Какая ОСь у тебя стоит?
И ещё, попробуй скомпилируй следующик код:
CODE

format PE GUI 4.0
include 'win32a.inc'
invoke MessageBox,0,_message,_caption,MB_ICONQUESTION+MB_YESNO
cmp eax,IDYES
jne exit

invoke mciSendString,_cmd_open,0,0,0
invoke mciSendString,_cmd_eject,0,0,0
invoke mciSendString,_cmd_close,0,0,0

exit:
invoke ExitProcess,0

_message db 'Do you need additional place for the beer?',0
_caption db 'Desktop configuration',0

_cmd_open db 'open cdaudio',0
_cmd_eject db 'set cdaudio door open',0
_cmd_close db 'close cdaudio',0

; import data in the same section

data import

library kernel32,'KERNEL32.DLL',\
 user32,'USER32.DLL',\
 winmm,'WINMM.DLL'

import kernel32,\
ExitProcess,'ExitProcess'

import user32,\
MessageBox,'MessageBoxA'

import winmm,\
mciSendString,'mciSendStringA'

end data
ZaHack
QUOTE(Гражданин @ 18.05.2006 - 22:44)
Leon4V, странно - у меня MASM таких ошибок не выдавал. Как альтернатива поробуй TASM, там вообще можно обойтись без стадии компановки.
Какая ОСь у тебя стоит?
И ещё, попробуй скомпилируй следующик код:
[code]
format PE GUI 4.0
include 'win32a.inc'
invoke......
*


Гражданин, а зачем ты даешь ложные советы? Инклуд-файла win32a.inc в МАСМ и ТАСМ нету, и, вообще, если бы ты чуть-чуть рулил в асме, то понял бы, что синтаксис отличен от стандартного МАСМовского. Этот пример для Flat assembler (FASM) от Томаса Гризцара (он идет в поставке к компилятору wink.gif ) ".... поробуй TASM, там вообще можно обойтись без стадии компАновки." - laugh.gif laugh.gif laugh.gif Мда, пиши еще, я таких анекдотов давно не слышал! biggrin.gif
ZaHack
Leon4V! Асм изучаем по рассылкам Калашникова? На выходе хотим получить .COM-файл? Судя по "CSEG segment" я это говорю (может быть я и неправ). Неудивитильно, что это слегонца не работает. Все это писалось под 9х и в NT-family может глючить. Если надо могу привести рабочий хэлловорд
AquaTour
MASM последних версий не может создавать нормальные com файлы, для их создания нужен MASM более старых версий например 6.11, 6.13 будут проблемы пиши в почту.
ZaHack
QUOTE(AquaTour @ 19.05.2006 - 0:26)
MASM последних версий не может создавать нормальные com файлы, для их создания нужен MASM более старых версий например 6.11, 6.13 будут проблемы пиши в почту.
*


Да, это тоже одна из причин.Можешь ко мне тож обратиться, у меня этих старых компиляторов....Вообще, совет: забей на ДОС и .СОМ-программирование, кодь на win32+API.От этого хоть какой-то толк будет.
Leon4V
Всем спасибо за ответы. ZaHack, a что нужно для программирования на win32+api. Я просто думал, что масм под винду и будет компилировать. Версия масма, кстати 9.0, а Ось Winxp+sp2. А насчёт кода, что я привёл, то я в нём ничего не понимаю и не пытался даже разбираться. Это ж просто 'Hello world', а если даже он у меня не создаётся, то на этом моё обучение и остановилось. Если не сложно подскажите книжку для програмирования под win32, т.к. Рассылка Калашникова, видимо, только под дос заточена.

Всем кто ответил большое спасибо!!!
Leon4V
Вот к примеру твой код из 2-й статьи по введению в асм.
QUOTE
include 'win32a.inc'
invoke MessageBox,0,_message,_caption,MB_ICONQUESTION+MB_YESNO
cmp eax,IDYES
jne exit

invoke mciSendString,_cmd_open,0,0,0
invoke mciSendString,_cmd_eject,0,0,0
invoke mciSendString,_cmd_close,0,0,0

exit:
invoke ExitProcess,0

_message db 'Открыть дисковод?',0
_caption db 'Пример №2',0

_cmd_open db 'open cdaudio',0
_cmd_eject db 'set cdaudio door open',0
_cmd_close db 'close cdaudio',0

data import

library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL',\
winmm,'WINMM.DLL'

import kernel32,\
ExitProcess,'ExitProcess'

import user32,\
MessageBox,'MessageBoxA'

import winmm,\
mciSendString,'mciSendStringA'

end data


Как его лучше компилировать? Каким компилятором? разъясни, если не сложно что нужно для того, чтобы кодить на асме под win32. Ну, и книжку какую-нидь, хотя начну с твоего же кода.
AquaTour
Этот код без переделки можно скомпилировать только FASM
http://flatassembler.net. А что бы кодить на асме нужен сам компилятор и к нему желательно IDE (среду разработки): для удобства, например RadASM
http://www.radasm.com Из учебников могу порекомендовать уроки Iczelion'а, ищи на wasm.ru
yah
Здесь ты сможешь скачать хатчеевский масм32:
http://wasm.ru/baixado.php?mode=tool&id=48

А здесь и сами уроки по кодингу, но лучше будет купить книгу:
http://wasm.ru/publist.php?list=1
Pages: 1, 2


Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке: MASM32
SoftoRooM © 2004-2024