( Вход | Регистрация | Поиск )

MASM32, Проблема с компиляцией
Дата обновления: 24.05.2006 - 09:54, перейти к новому сообщению

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


Обидно, только начал, а уже застопорился из-за этого. Если кому известно, как исправить, подскажите, если не сложно.


Ответов(10 - 11)

Leon4V

Ребяяятаааа, огромнейшее вам спасибо!!! Не поверите, как я рад, что после стольких мучений, и, наконец, с вашей помощью всё получилось. Наконец-то начну изучать асм, благодаря вам!!!

ОГРОМНОЕ ВАМ СПАСИБО!!!


·ZaHack
Группа: Заблокированные

Сообщений: 1.252
Leon4V, во-первых, чтобы поблагодарить есть кнопочка Thanks smile.gif Во-вторых, я сделал тут Hello world для win32:

.586P
.Model flat, stdcall
STD_OUTPUT_HANDLE equ -11
EXTERN GetStdHandle@4:NEAR
EXTERN WriteConsole@20:NEAR
EXTERN ExitProcess@4:NEAR
includelib c:\masm32\lib\user32.lib
includelib c:\masm32\lib\kernel32.lib
_DATA SEGMENT
STR1 DB "Console application", 0
LENS DD ?
RES DD ?
_DATA ENDS
_TEXT SEGMENT
START:
PUSH STD_OUTPUT_HANDLE
CALL GetStdHandle@4
Push OFFSET STR1
call LENSTR
push offset RES
push offset LENS
push ebx
push offset STR1
push eax
call WriteConsole@20
push 0
call ExitProcess@4
LENSTR PROC
push ebp
mov ebp,esp
push eax
push edi
cld
mov edi,dword ptr [ebp+08]
mov ebx, edi
mov ecx, 100
xor al,al
repne scasb
sub edi, ebx
mov ebx, edi
dec ebx
pop edi
pop eax
pop ebp
ret 4
LENSTR ENDP
_TEXT ENDS
END START

Вот, примерно так wink.gif