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

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

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

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

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2010, 03:27   #1
Yagamy Liet
Пользователь
 
Регистрация: 15.08.2010
Сообщений: 16
По умолчанию Как скомпилировать файл*на*Ассемблер

Только начал изучать Асм и уже столкнулся с проблемой.Наверное не я
первый, но Гугл об этом умолчал. MASM32 стоит 'по-умолчанию', сразу
на диске С. B mой компьютер в PATH ;D:\MASM32\bin написал. B command
prompt пишу build prax (prax.asm - название файла). А оно мне в ответ:
fatal error A1000: can't open file.
Сразу говорю дело не в файле, я пытался запустить и образцы, что в
комплекте с прогой идут.
И еще - не по теме, но может кто-нибудь знает - есть какой-нибудь text
editor с ВНУТРЕННЕЙ поддержкой русского текста. Объясню, в чем дело:
недавно поставил ХР х64, а она, зараза, русскую кодировку не
поддерживает. B Regional & language options заглядывал - не помогает.
Буквы то я в нете вижу (Opera мне в помощь), а вот текст (который я уже
здесь написал, и который мне вам еще писать) составлять на Гугл
клавиатуре - поверьте, ЭТО ЖЕСТЬ!!! :-/

Последний раз редактировалось Yagamy Liet; 15.08.2010 в 03:32. Причина: Strange symbols instead space.
Yagamy Liet вне форума Ответить с цитированием
Старый 15.08.2010, 03:40   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,003
По умолчанию

а текущая директория какая при выполнении команды?точно нужная?(в которой файлы)
или указывайте полный путь.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.08.2010, 05:09   #3
Yagamy Liet
Пользователь
 
Регистрация: 15.08.2010
Сообщений: 16
По умолчанию

В обучении ничего про путь сказано не было (если хотите - (http://bitfry.narod.ru/
07.htm)абзац 'Первый пример Windows-программы', 11-я строка). Я так понял, что
видимо файл, "по-умолчанию" должен лежать где-то в корне. Короче сейчас он у меня
аж в 3-х местах: C:\; C:\MASM32; C:\MASM32\BIN.
Сейчас попробовал написать 'build C:\prax' - другую ошибку выдает: ' LINK : fatal error LNK1181: cannot open input file "C:\prax.obj" '.
Странно, ведь он, как я понял этот .obj и должен, в частности создавать.
P.S.
Надо же - никогда бы не подумал, что оказываеться Eng и Rus пробелы имеют разную кодировку.Это я к тому, что пишу здесь сообщение,
отправляю, и вижу, там где переключался на English вместо пробелов знак * - честное слово, нажал сейчас пробел. :-)

Последний раз редактировалось Yagamy Liet; 15.08.2010 в 05:25.
Yagamy Liet вне форума Ответить с цитированием
Старый 15.08.2010, 07:07   #4
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

obj создаётся в той директории, в которой ты на данный момент стоишь. То есть, если у тебя в консоли приглашение вида:

Код:
C:\Documents and settings\Пользователь
То и obj создаётся в этой директории. Тебе нужно сначала перейти в директорию, в которой лежит твой исходник.

Как исправить?
Ну можно перед компляцией всегда переходить в папку с исходником - это бред.
Лучше исправить build.bat на следующий:

Код:
@echo off

if exist %1.obj del %1.obj
if exist %1.exe del %1.exe

@echo %1

C:\masm32\bin\ml /c /coff /Fo%1.obj %1.asm
if errorlevel 1 goto errasm

if not exist rsrc.obj goto nores

C:\masm32\bin\Link /SUBSYSTEM:WINDOWS /OPT:NOREF /OUT:%1.exe %1.obj rsrc.obj
if errorlevel 1 goto errlink

dir "1.*
goto TheEnd

:nores
C:\masm32\bin\Link /SUBSYSTEM:WINDOWS /OPT:NOREF /OUT:%1.exe %1.obj
if errorlevel 1 goto errlink
dir %1.*
goto TheEnd

:errlink
echo _
echo Link error
goto TheEnd

:errasm
echo _
echo Assembly Error
goto TheEnd

:TheEnd

pause
Тогда, можно будет компилировать им так, как хочешь ты. То есть:
Из любого места:

Код:
Build C:\ishodnik\proga
Ещё, скачай себе RadASM, он очень легко настраивается (вернее вообще ничего настраивать не нужно почти) и всё компилируется и линкуется одной кнопкой. Плюс там все удобства.

И ещё. Грешить на файл build.bat не нужно. Он написан верно. Просто он - часть того маленького IDE, что звать qeditor. Пункт меню assemble&link выполняет именно он. qeditor как раз и устанавливает ту директорию в которой находится сорец активной. Поэтому через него всё работает.

Цитата:
русскую кодировку не поддерживает
Вот это новости ^_^

Последний раз редактировалось r9m; 15.08.2010 в 07:24.
r9m вне форума Ответить с цитированием
Старый 16.08.2010, 02:54   #5
Yagamy Liet
Пользователь
 
Регистрация: 15.08.2010
Сообщений: 16
По умолчанию

Еще раз повторюсь я его только начал изучать поэтому объясняйте на пальцах.:-)
1.В каком смысле где я стою? Открыть папку что ль. Если речь о cmd, то я не знаю, как в ней переходить
в какую-то папку. Если просто ввести адрес какойто директории, то он пишет, что команда не распознана.
2.Спасибо - про .bat файл в обучении ничего не говорилось.Как им работать то - цепляешь
исходник курсором, и кидаешь на .bat файл? Если так, то он выводит мне ошибку.
Впрочем по ее описанию я уже понял, что явно что-то не то делаю.
3.Спасибо, если там попроще с компиляцией перейду на RadASM.
Вообще-то не хотелось бы уходить на другой Ассемблер - обучение написано на MASM32'e.
P.S.
С кодировкой разрешилось, oказалось наоборот - у меня нормальная кодировка
пробелов - а странные символы появляются из-за пробелов, скопированых с Гугла.:-)
P.P.S.
Блин, попытался сделать блокнот с русской кодирровкой в Delphi - ведь это работа, максимум на час.
В течении последующих 6-ти часов успел вспомнить всех родственников Борландостроителей,
а заодно и причину, по-которой мне его не хотелось устанавливать.
Последний раз я так матерился полтора года назад, перед армией, когда пытался написать программу
шашек (я в этот момент его более-менее изучил, и решил занятся этим, как проверкoй своих сил)
и застрял в самом начале процесса - вместо того что-бы нарисoвать шахматное поле в 64 клетки программа по необъяснимой причине
зависала. Вот и сейчас почему-то работать не хочет. Если кто разбирается - при желании можете глянуть.
http://programmersforum.ru/showthread.php?t=110195
Yagamy Liet вне форума Ответить с цитированием
Старый 16.08.2010, 03:22   #6
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Цитата:
1.В каком смысле где я стою? Открыть папку что ль. Если речь о cmd, то я не знаю, как в ней переходить в какую-то папку. Если просто ввести адрес какойто директории, то он пишет, что команда не распознана.
Ты серьёзно ? o_O Если да, то я думаю, что тут ассемблером рановато. (вообще есть команда cd - может быть ты слыхал про такую)

Цитата:
2.Спасибо - про .bat файл в обучении ничего не говорилось.Как им работать то - цепляешь
исходник курсором, и кидаешь на .bat файл? Если так, то он выводит мне ошибку.
Впрочем по ее описанию я уже понял, что явно что-то не то делаю.
Ты как писал (уж и незнаю теперь где ) build prax, так и пиши. Только указывай полный путь до файла. То есть: пуск- выполнить- cmd- enter

Код:
build C:\prax
Можно ещё твой реальный возраст узнать?

Можно работать через qedit, там тоже на первых парах удобно, но потом этого "удобство" начинает жать =//
r9m вне форума Ответить с цитированием
Старый 16.08.2010, 04:34   #7
Yagamy Liet
Пользователь
 
Регистрация: 15.08.2010
Сообщений: 16
По умолчанию

To r9m
Цитата:
Ты серьёзно ? o_O Если да, то я думаю, что тут ассемблером рановато. (вообще есть команда cd - может быть ты слыхал про такую)
Вообще-то нет, я стараюсь не пользоваться командной строкой - не вижу смысла.
Цитата:
Можно ещё твой реальный возраст узнать?
Если прям уж так интересно, конечно можно - 19 лет.

Отлично - заработало.
Я не застал Dos , поэтому раньше командной строкой вообще не пользовался.
Благодарю, всех кто потратил время мне на ответы.
Yagamy Liet вне форума Ответить с цитированием
Старый 16.08.2010, 08:19   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,803
По умолчанию

Цитата:
поэтому раньше командной строкой вообще не пользовался.
DOS тут ни при чем. Достань себе надстройку MASM Builder и получишь IDE для MASM.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.08.2010, 14:09   #9
Wardrag
Пользователь
 
Регистрация: 14.08.2010
Сообщений: 31
По умолчанию

Напиши мне на айсикью 6-977-577.Я тоже начинающий.Подскажу что сам умею

Цитата:
Сообщение от Yagamy Liet Посмотреть сообщение
To r9m

Вообще-то нет, я стараюсь не пользоваться командной строкой - не вижу смысла.
Я часто задумываюсь,правильно ли это... Пока ответа не нашёл.Вдруг да пригодится.

Цитата:
Сообщение от Yagamy Liet Посмотреть сообщение
В обучении ничего про путь сказано не было (если хотите - (http://bitfry.narod.ru/
07.htm)абзац 'Первый пример Windows-программы', 11-я строка). Я так понял, что
видимо файл, "по-умолчанию" должен лежать где-то в корне. Короче сейчас он у меня
аж в 3-х местах: C:\; C:\MASM32; C:\MASM32\BIN.
Сейчас попробовал написать 'build C:\prax' - другую ошибку выдает: ' LINK : fatal error LNK1181: cannot open input file "C:\prax.obj" '.
Странно, ведь он, как я понял этот .obj и должен, в частности создавать.
P.S.
Надо же - никогда бы не подумал, что оказываеться Eng и Rus пробелы имеют разную кодировку.Это я к тому, что пишу здесь сообщение,
отправляю, и вижу, там где переключался на English вместо пробелов знак * - честное слово, нажал сейчас пробел. :-)

Да - мне очень полюбилась эта ошибка.Она возникает,если указана директива includelib/include с неверным путём.На мсдн или рсдн была инфа по всем ошибкам и причинам их возникновения.Бывает,что расширением ошибаешься.Советую тебе создать папку в корне и назвать masm32.На васм-е его перестроили под d:/ диск(ассемблер).

Последний раз редактировалось Stilet; 16.08.2010 в 14:22.
Wardrag вне форума Ответить с цитированием
Старый 16.08.2010, 14:17   #10
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Цитата:
часто задумываюсь,правильно ли это... Пока ответа не нашёл.Вдруг да пригодится.
Знать, как пользоваться конечно нужно. И как пользоваться ассемблером и линкером тоже.
r9m вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не понимаю как скомпилировать прогу в С++ FireFly37 Visual C++ 9 10.07.2010 19:16
Как скомпилировать с dcu? Jupiter Общие вопросы Delphi 7 11.12.2009 20:46
Как скомпилировать прогу, если у меня есть только *.cpp файл? TwiX Общие вопросы C/C++ 4 13.11.2009 21:13
C и ассемблер, не могу скомпилировать Olen' Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 19.02.2009 19:57
Как правильно скомпилировать программу ГОСЕАН БД в Delphi 14 26.07.2007 13:18