Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с компилированием программы. Не хочет появляться файл с расшир. .exe 
:(
    Опции темы
Zastra
Дата 20.12.2009, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 13.12.2009

Репутация: нет
Всего: нет



Всем привет. Работаю с ASM в Far manager'е, тоесть сначала пишу через редактор фара листинг в файле с расшир. .asm, потом получаю файл *.obj, захожу в него ошибок нету, в командной строке пишу far (так мы делаем в универе), но файл *.exe не появляется.
Подскажите в чём может быть проблема.

PM MAIL   Вверх
Mikl_
Дата 21.12.2009, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 8
Всего: 14



Zastra
с каким конкретно ассемблером ты работаешь? tasm, masm, fasm, yasm, a86, gas, ... ? Ответь на этот вопрос и тебе подскажут в чем проблема. Еще немаловажный вопрос -- под какую операционную среду ты пишешь ехе? DOS, Windows 3.11, Windows 95/98/NT/ME/2k/XP/Vista там разные exe-шники получаются -- уточни  smile 
PM MAIL   Вверх
Zastra
Дата 21.12.2009, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 13.12.2009

Репутация: нет
Всего: нет



Понял, говорю)
TASM, Windows XP SP2.
PM MAIL   Вверх
Mikl_
Дата 23.12.2009, 05:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 8
Всего: 14



Zastra
приходится писать под DOS и Windows используя TASM, MASM, WASM (Watcom Assembler), FASM, NASM - исходный файл с расширением asm, а требуется com,exe,dll,lib  да еще могут быть console, gui... Можно ли предельно упростить сборку. а не писать каждый раз новый bat?
Итак первая строка asm-файла - нам требуется masm, dos, com
Код
; masm com dos #
.model tiny
.code
org 100h
start:
. . .

Вариант первый. Если ASM файлы набираются в FAR'е жмем на F9-->команды-->асоциации файлов-->F4  "Маска файла"-->"*.asm" "Команда, выполняемая по Enter"-->"call asm.bat !" а сам asm.bat копируем в %windir%. 
Вариант второй. Если набор ASM файлов в NotePad, или еще где-то тогда в bat'е переделай все %1 на %~n1 щелкаем по "Мой компьютер"-->"Сервис"-->"Свойства папки"-->"Типы файлов" и связываем файлы асм с батником. Пишем asm.bat следующего содержания
Код
cls
set filename=%1
rem получаем имя asm файла без расширения и передаем его в процедуру
call :read_settings %filename%
goto %compiler%%os%%kind_of_file%
rem в зависимости от требуемого ассемблера, ос и типа файла идем
rem на соответствующую ветку
...
:masmdoscom
if exist %filename%.%kind_of_file% del %filename%.%kind_of_file%
ml /AT %filename%.asm
del %filename%.obj
exit
...
:read_settings 
for /f "eol=# tokens=2-5" %%A in (%filename%.asm) do (
set compiler=%%A
set kind_of_file=%%B
set os=%%C
if %%D == # exit /b)
exit /b

Процедура read_settings читает первую строку asm-файла и работат с первыми пятью лексемами, разделенными пробелами или табуляцией и сопоставлет их с переменными начиная с %%A, первое поле знак ";" экранирует всю строку
второе поле -- %%A, третье -- %%B, если пятое поле равно # -- выходим из процедуры. Далее по значениям в переменых compiler, kind_of_file, os обрабатываем asm- файл, как из них делать com,exe,dll,lib  для TASM и MASM написано здесь От себя добавлю для NASM
Код
set nasm_path=c:\Assemblers\_NASM
if exist %1.exe del %1.exe
%nasm_path%\bin\nasmw -f bin %1.asm -o %1.exe -I%nasm_path%\inc\

для WASM (здесь указаны наиболее часто используемые dll)
Код
set wasm_path=c:\Assemblers\WASM
if exist %1.exe del %1.exe
%wasm_path%\bin\wasm -6prs -mf %1.asm || exit
%wasm_path%\bin\wlink file %1.obj form windows nt op c LIBPath ^
%wasm_path%\lib\ Library user32.lib,kernel32.lib,gdi32.lib,^
comctl32.lib,shell32.lib,ole32.lib,comdlg32.lib option Alignment= 512 || exit
if exist %1.rc (
%wasm_path%\bin\wrc -bt=nt -t %1.rc
del %1.res
)
if exist %1.obj del %1.obj

для GOASM (console)
Код
set goasm_path=c:\Assemblers\GoAsm
%goasm_path%\bin\GoAsm %1.asm 
%goasm_path%\bin\GoLink /console %1.obj kernel32.dll
del %1.obj

для GOASM (gui)
Код
set goasm_path=c:\Assemblers\GoAsm
cls
if exist %1.exe del %1.exe
%goasm_path%\bin\GoAsm %1 || exit
if exist %1.rc (
%goasm_path%\bin\GoRc /r %1.rc  
%goasm_path%\bin\GoLink %1.obj %1.res user32.dll kernel32.dll gdi32.dll ^
comctl32.dll shell32.dll ole32.dll comdlg32.dll || exit
del %1.res
) else (
%goasm_path%\bin\GoLink %1.obj user32.dll kernel32.dll gdi32.dll comctl32.dll ^
shell32.dll ole32.dll comdlg32.dll || exit
)
if exist %1.obj del %1.obj
Более подробно о bat-файлах Урок bat-аникиWindows Batch Files – Commands ReferenceWindows 2000. Команды: Карманный справочник. Э. Фриш. – М.: Мир, 2003, Уильям Р. Станек Командная строка Windows,  и %windir%\help\ntcmds.chm smile 
В аттаче универсальный бат-файл для ассемблирования

Это сообщение отредактировал(а) Mikl_ - 23.12.2009, 08:08

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  asm2.rar 2,15 Kb
PM MAIL   Вверх
Zastra
Дата 23.12.2009, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 13.12.2009

Репутация: нет
Всего: нет



Mikl_, спасибо тебе огромное, сейчас же буду пробовать!)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.1049 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.