Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Линковка


Автор: alligator 27.7.2004, 15:23
Купил книжку по Асму начал читать и застрял на первой программе..... помогите пожалуйста!!
Код
codseg segment
assume cs:codseg, ds:codseg, ss:codseg, es:codseg
org 100h
begin:
jmp beg_code
text db "First Program",0
beg_code:
mov ax,cs
mov ds,ax
lea dx,text
mov ah,9
int 21h
mov ah,4ch
int 21h
codseg ends
end begin


Компилирую так:
@echo off
bin\ml test.asm /AT
pause
Вот такую штуку пишет ((

Microsoft ® Macro Assembler Version 6.14.8444
Copyright © Microsoft Corp 1981-1997. All rights reserved.

Assembling: test.asm
Microsoft ® Incremental Linker Version 5.12.8078
Copyright © Microsoft Corp 1992-1998. All rights reserved.

/z2
"test.obj" /t
"test.com"
NUL
LINK : warning LNK4044: unrecognized option "z2"; ignored
LINK : warning LNK4044: unrecognized option "t"; ignored
test.obj : warning LNK4033: converting object format from OMF to COFF
test.obj : fatal error LNK1190: invalid fixup found, type 0x0001
Для продолжения нажмите любую клавишу . . .

Автор: cardinal 27.7.2004, 19:18
А какие файлы еще в директории bin сидят? По идее перед тем как линковать надо помоему тебе сначало откомпилировать твой asm файл (получишь obj файл). А уже потом как бы линковать. А что в книжке твоей по этому поводу написано?

Автор: alligator 27.7.2004, 19:39
Дык он должен автоматом делать всё

Автор: cardinal 27.7.2004, 20:03
Попробуй так и посмотри скомпилирует он что-нибудь или нет, если нет, то и линковаться ничего не будет. Тогда неправильно что-то списал. Если все правильно, то изучай option'ы linker'а.

@echo off
bin\ml test.asm /AT /c
pause

Вот тут написано все про MS MASM
http://webster.cs.ucr.edu/AsmTools/MASM/MASMDoc/MASMReference.pdf

Напиши как что нового будет...

Автор: Jin X 27.7.2004, 21:17
У меня такое чувство, что masm32 вообще не способен генерить проги в DOS-формате. Решить проблему можно используя линкер из TASM'а (tlink):
Код
ml /c /AT ИмяФайла
tlink /t /x ИмяФайла
Да и вообще tasm для DOS-прог лучше (сейчас придёт oleg1973 и скажет, что лучше FASM biggrin.gif).
p.s. Старый tlink 3.01 тоже покатит http://filezzz.nm.ru/pub/tlink.exe smile.gif

Автор: oleg1973 27.7.2004, 21:59
Jin X
я уже пришел biggrin.gif biggrin.gif biggrin.gif и совершенна верно что рулит фасм biggrin.gif
alligator
береш этот самы фасм и делаеш
Код

org 100h
begin:
jmp beg_code
text db "First Program",0
beg_code:
mov ax,cs
mov ds,ax
mov dx,text
mov ah,9
int 21h
mov ah,4ch
int 21h

нажимаеш F9 и получаеш готовый файл

Автор: alligator 28.7.2004, 04:24
Проста если я возьму другой компилер мне будет неудобно учить по книге асм ((
пасиба попробую откомпилить
Добавлено @ 04:28
cardinal ошибки перестали вылезать но файлик не появляеться

Автор: alligator 28.7.2004, 05:42
Попробовал так скомпилить его
ml /c /coff 1.asm
link /SUBSYSTEM:WINDOWS /OPT:NOREF 1.obj
теперь другая штука вылазит
---------------------------------------------------------------------------------------------
Microsoft ® Macro Assembler Version 6.14.8444
Copyright © Microsoft Corp 1981-1997. All rights reserved.

Assembling: 1.asm
1.asm(17) : warning A4023: with /coff switch, leading underscore required for st
art address : begin
Microsoft ® Incremental Linker Version 5.12.8078
Copyright © Microsoft Corp 1992-1998. All rights reserved.

LINK : error LNK2001: unresolved external symbol _begin
1.exe : fatal error LNK1120: 1 unresolved externals
Для продолжения нажмите любую клавишу . . .

Автор: Uri 28.7.2004, 11:23
Ты используешь 32-разрядный ассемблер и линкер, которые НЕ СОЗДАЮТ старый 16-разрядный код. Используй для этого пакет tasm. Кстати, он поддерживает синтаксис masm, так что проблем с книгой не будет.

А вообще - переходи на fasm. Намного меньше интерфейсных заморочек и намного более мощный макроязык.

Автор: oleg1973 28.7.2004, 11:27
Jin X
вот видиш в нашем полку любителей фасм прибыло biggrin.gif
Uri
так держать smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)