Консультация № 162696
19.03.2009, 00:35
0.00 руб.
0 2 1
Здравствуйте, эксперты!
1)Изучаю асм, купил книгу Калашникова... программы из этой книги не хотят компоноваться
вот например самая первая программа на которую линкер ругается так:

LINK fatal error L1093 helloworld.obj object file not found


сама прога:

CSEG segment
org 100h

Begin:

mov ah, 9
mov dx, offset Message

int 21h

int 20h

Message db 'Hello, world! $'
CSEG ends
end Begin


пояните пжалсто, что не так?!! может сама структура этих программ ему не нравиться..

2)так же почему-то линкер и ассемблер не хотят запускаться, сразу закрываются-приходится через cmd их запускать-как это исправить?!

вот весь текст из cmd
C:\MASM611\BIN\123>ml.exe /c helloworld.asm
Microsoft (R) Macro Assembler Version 6.11
Copyright (C) Microsoft Corp 1981-1993. All rights reserved.

Assembling: helloworld.asm

C:\MASM611\BIN\123>link.exe helloworld.obj ,,NUL,,,

Microsoft (R) Segmented Executable Linker Version 5.31.009 Jul 13 1992
Copyright (C) Microsoft Corp 1984-1992. All rights reserved.

LINK : fatal error L1093: helloworld.obj : object file not found

Обсуждение

давно
Старший Модератор
31795
6196
19.03.2009, 11:18
общий
это ответ
Здравствуйте, IDesper!

1)
Посмотрите рисунок.
Сохранил Ваш код под именем hello.asm(5.3 - 5 символов имени + 3 символа разширения) все скомпилировалось, переименовал в helloworld.asm(10.3) и получил аналогичную ошибку.
Вывод: Вы использовали очень длинное имя, превышающее стандарт MS-DOS - 8(символов для имени максимум)+3(символа для разширения)
2)
Исправить это нельзя, т.к. MASM и ТASM - компиляторы командной строки. Но это можно обойти, к примеру использовать ВАТ-файлы. В блокноте записывате все команды которые Вы собираетесь набирать в командной строке. Сохраняете в файл с любым именем и разширением .bat. После этого в проводнике достаточно клика на этом файле, чтобы запустить компиляторы и получить работующие программы.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
19.03.2009, 11:56
общий
IDesper:

Пару советов на будущее, они избавят Вас от дальнейших вопросов (что-то не правильно работает):
1)
между этими строками добавьте такой код:
int 21h
xor ax,ax
int 16h

int 20h

Т.к. cmd автоматически закрывает окно при завершении программы и Вы не успеете увидеть результат её работы.
2)
В начале программы добавляйте такой код:
Begin:
mov ax,3
int 10h

Это переводит видеоконтролер в 3-ий текстовый режим. Т.к. книга писалась под comand.com(W9x)(который устанавливал его по умолчанию), а cmd(WХР) этого не делает.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа