При использовании tasm.exe и tlink.exe (16-bit) ничего не ассемблируется и не линкуется в RadASM. Вернее, *.obj создается, но какой-то кривой. Он даже из командной строки потом не линкуется в *.exe. Пути в tasm.ini все прописал в соответствии. RadASM.chm, RadASMini.rtf, поиск по форуму и google юзал. Пробовал убирать все ключи, переводить вывод на консоль (C вместо O). На форуме есть пара-тройка вопросов по этому поводу, но ответы не решают проблемы. Ничего не помогло (видимо, клинический случай). Вот с MASM 16-bit все работает (есть кое-какие странности, но приложения создаются и даже работают). А для TASM под DOS получается, что RadASM просто более усовершенствованный, чем notepad, редактор кода, а не IDE. Хотя и это уже хорошо, т.к. notepad и command line это круто, но хочется чего-то более светлого. Дело в том, что в нашем университете основное направление C++ и Assembler. А с 1-го по 3-й курс это в сновном 16-разрядные Borland C++ и TASM (именно Borland, а не Microsoft). Думаю можно написать bat-файл, но это не правильно. Команды компиляции должны настраиваться в самой IDE. И думаю, что реализация поддержки 16-ти разрядных компиляторов в RadASM не такая уж сложная задача для разработчиков этой IDE. Так может ли RadASM нормально работать с 16-ти разрядным компилятором TASM? Может есть другие IDE для TASM 16-bit?
WinAsm Studio + надстройка FASM в русской справке написано как установить студию и надстройку. в аттаче - примеры. если что не ясно - спрашивай. ------ ой, архив из битых проектов (эхо потери HDD)... щас поищу нормальный
Честно говоря совсем не понял, что с этим файлом делать watasm.zip. Поясни если не в лом. Русскую справку и не русскую читал, но (кстати, у файла в архиве нет расширения, тектовым редактором открыл, но мало пользы) я не понял, куда его ложить и как в натройках прописать, если это бинарник.
ПРЕАМБУЛА: (можно не читать) По данной теме на этом форуме и форуме разработчиков толковых ответов (ДЛЯ НОВИЧКОВ) я не нашел. Хотя вопросы, хоть и не многочисленные, но существуют (думаю, что вопросов так мало по-тому, что НОВИЧКИ просто и не знают о том, что кроме notepad (или любой другой текстовый редатор) для редактирования исходников может еще что-то подойти). Программирование на ассемблере под DOS 16-bit до сих пор актуальная тема. Уж так устроена наша российская система высшего образования, что до сих пор в не малом количестве университетов изучение низкоуровнего программирования (и, кстати, программирования на C++) начинается с рассмотрения и выполнения задач по программированию под MS-DOS (16 bit). Да и книг (очень даже хороших) по программироанию под 16-ти разрядную OS написано не мало. И не редко для обучения используются BC++ 3.1 и TASM 5. Оправдано это или нет - не берусь судить. С одной стороны, для изучения основ это может быть и правильно, с другой - это уже далеко от реальности (думаю, начинать изучение RAD и visual IDE более актуально в наши дни, но преподавателям из 90-х, похоже, лень себя перестраивать, а может уже и невозможно). Короче, реальность такова, что людям приходится программировать используя TASM16. Возможно для обучения полезно (а может даже и круто) использовать Блокнот и Командную строку. Но когда ключи сборки уже выучил и хочешь заострить свое внимание на сути программы, тогда редактирование текста в notepad и переключение в cmd достает. Вообщем, нужна IDE для TASM16. И вот она вроде бы есть RadASM. Но, ХЗ, как ее использовать с TASM16 и можно ли вообще. Я сам несколько лет назад пытался напиcать на VBA в Word простенький редктор кода для TASM (было совсем немного - подсветка и проверка (правда не полная) - но работало, и что еще приятно - поддержка кодировки DOS, т.е. документ сохранялся как DOs TXT, естесственно, с расширением ASM). Вот сейчас думаю, что можно было и команды сборки вставить, и, видимо, перехват сообщений от TASM.EXe и TLINK.EXe. Но, жесткий диск от IBM ("дятел") умер, а заново все это писать ни желания, ни времени нет. Хотя, я встречал давнии предложения на форуме о создании IDE для ассемблера под ACCSES, думаю, правильней будет писать под WORD и можно попробовать (правда, я слабо знаком с базами данных, и с другой стороны, ОХ, используется VB).
СУТЬ СООБЩЕНИЯ: Разбирался сам методом "нучного тыка", пришел вот к чему (ВСЕ ЭТО ОТНОСТИСЯ ТОЛЬКО К TASM 16-BIT): 1) При ассемблировании исходных файлов и линковке объектных файлов СООБЩЕНИЯ О КОНКРЕТНЫХ ОШИБКАХ в среду RadASM ПОЛУЧИТЬ НЕ ВОЗМОЖНО (все сообщения необходимо перенаправлять на консоль, т.е. использовать в файле tasm.ini в разделе [DOS App] в командных ключах "C" вместо "O", иначе команда (ассемблирование, линковка, сборка) не выполнятся и, видимо, процесс запущенный в XP останется в памяти; 2) Использование в файле tasm.ini в разделе [DOS App] параметра "*.obj" ни XYЯ НЕ ДАЕТ. НЕОБХОДИМО ПРОПИСЫВАТЬ "$3" (аналогично, "*.asm" -"$2"): $ - дает ИМЯ файла из заголовка. Я так понимаю, что это ИМЯ того самого файла, что мы указали при создании проекта и далее редактируем и собираем - отображается в заголовке. В справке RadASM написано так: "'$' Gets the filename from topmost editor window without extension", что в моем вольном переводе означает: "Символ '$' получет имя из главного окна редактора без расширения", т.е. то, что написано в заголовке главного окна (может из-за этого и вся проблема с DOS-проектами); 3 - расширение файла - т.е. OBJ. Т.е. получается $3 = ИМЯ.OBJ. 3) Из RadASM можно ассемблировать и собирать только ОДНОМОДУЛЬНЫЕ ПРОЕКТЫ Думаю, что это из-за проблем в пункте 2) моего сообщения: если по переменной "$" (из среды RadASM) передается конкретное имя, например, "file1", то как можно собрать "file1+file2" - это вопрос для ГУРУ; 4) Для разработки приложений RadASM, по большому счету, можно использовать только как РЕДАКТОР КОДА (довольно удобный, но редактор); 5) Еще замечано, что RadASM не может ассемблировать (хотя это не он делает) иструкцию END БЕЗ ПАРАМЕТРА. Вот пример: Из командной строки все собирается отлично и при запуске программы мы получаем "Hello, World!". В RadASM ассемблируется (т.е. объектный файл создается), но не линкуется (т.е. исполняемый файл не создается). Код (Text): ;НАЗНАЧЕНИЕ СЕГМЕНТОВ assume cs:code, ds:data СЕГМЕНТ КОДА code segment ;Главная процедура - точка входа (начало программы) main proc ;Адрес сегмента данных помещаем в регистр сегмента данных DS: mov ax, data mov ds, ax ;Вызываем процедуру вывода сообщения "Hello, World!": call prnt_hello ;Выход в DOS: mov ax, 4c00h int 21h main endp ; Процедура вывода сообщения "Hello, World!" prnt_hello proc ;Получаем адрес строки mesHello в регистр DX: lea dx, mesHello ;Вызываем функцию MS-DOS 09h int 21h - вывод строки на консоль: mov ah, 9 int 21h ;Возвращаемся в процедуру вызова: ret prnt_hello endp code ends ;СЕГМЕНТ ДАННЫХ data segment ;Наше сообщение: mesHello db 'Hello, Wolrd!$' data ends ;КОНЕЦ - ТОЧКА ВХОДА ПО УМОЛЧАНИЮ - не линкуется в RadASM end А здесь все работает: Только в самой последней строке для дерективы END указан параметр main. Код (Text): ;НАЗНАЧЕНИЕ СЕГМЕНТОВ assume cs:code, ds:data СЕГМЕНТ КОДА code segment ;Главная процедура - точка входа (начало программы) main proc ;Адрес сегмента данных помещаем в регистр сегмента данных DS: mov ax, data mov ds, ax ;Вызываем процедуру вывода сообщения "Hello, World!": call prnt_hello ;Выход в DOS: mov ax, 4c00h int 21h main endp ; Процедура вывода сообщения "Hello, World!" prnt_hello proc ;Получаем адрес строки mesHello в регистр DX: lea dx, mesHello ;Вызываем функцию MS-DOS 09h int 21h - вывод строки на консоль: mov ah, 9 int 21h ;Возвращаемся в процедуру вызова: ret prnt_hello endp code ends ;СЕГМЕНТ ДАННЫХ data segment ;Наше сообщение: mesHello db 'Hello, Wolrd!$' data ends ;КОНЕЦ - ТОЧКА ВХОДА main - нормально линкуется в RadASM end main Вот описание файла настроек для TASM (за исключением секций [Project] и добавления раздела [DOS App] ничего менять не надо: В секции [Project] в разделе Type необходимо добавить через запятую "DOS App": Результат: Код (Text): [Project] Type=Win32 App, DOS App Files=ASM,INC,RC,DEF,TXT,MAK Folders=Bak,Mod,Res MenuMake=Compile RC,Assemble,Link,Build,Go,Run,Run w/debug,Go All,Assemble Modules Group=1 GroupExpand=1 Добавить раздел DOS App В секции Код (Text): [DOS App] Files=1,0,0,0,0,0 Folders=1,0,0 MenuMake=0,1,1,1,0,1,0,0,0 ;x=FileToDelete/CheckExistsOnExit, ;(O)utput/(C)onsole/0,Command, ;MakeFile1[,MakeFile2[,MakeFile3...]] 1= 2=3,C,$B\TASM.EXE /mx /m4 /z /q /zn /I"$I",2 3=5,C,$B\TLINK.EXE /x /Tde /c /L"$L" $3 4=0,0,,5 5= 6=*.obj,C,$B\TASM.EXE /mx /m4 /z /q /zn /I"$I",*.asm 7=0,0,$E\TD.EXE,5 11= 12=3,C,$B\TASM.EXE /mx /m4 /z /q /zn /I"$I",*.obj 13=5,C,$B\TLINK.EXE /x /Tde /c /L"$L",3 14=0,0,,5 15= 16=*.obj,C,$B\TASM.EXE /mx /m4 /z /q /zn /I"$I",*.asm 17=0,0,$E\TD.EXE,5 ВСЕ
С радасмом я никогда не работал - ничего сказать не могу. Отвечаю подробно по WinAsm Studio: этап №1 По инструкции в русской справке устанавливаем IDE и надстройку фасм этап №2 Настраиваем окружение: предполагается, что tasm.exe расположен в папке вроде "c:\tasm\bin", поэтому открываем менеджер окружения: меню "Надстройки\Менеджер окружения", открываем закладку "Студия" и добавляем переменную "tasm" со значением "c:\tasm" для данного случая. этап №3 Распаковываем папки из watasm.zip куда угодно: это два готовых проекта-примера (com и exe). этап №4 Открываем файл проекта (например, tasmcom.wap) в IDE одним из способов: либо "Открыть проект" в студии, либо создав ассоциацию wap-файлов с winasm.exe. этап №5 Выполняем компиляцию нажатием "Ctrl+Enter": если все успешно - наблюдаем диалог успешного завершения, иначе открывается внизу окно с консольным выводом. Если окно настроено автоматически закрываться после успешного вывода, а нужно посмотреть результаты - Shift+Esc не понял у какого файла в каком архиве нет расширения, поэтому не могу ответить. содержимое watasm.zip: Код (Text): tasmcom\ tasmcom.wap tasmcom.asm tasmcom.map tasmcom.com tasmexe\ tasmexe.wap tasmexe.asm tasmexe.obj tasmexe.map tasmexe.exe
Насамом деле в файле watasm.zip, скачанном по ссылке с этой страницы, содержится файл watasm (без расширения). Оказывается это тоже ZIP-архив и в нем-то уже и содержатся указанные файлы. Спасибо, теперь все встало на свои места. Буду пробовать.