Настройки TASM16 для RadASM

Тема в разделе "WASM.BEGINNERS", создана пользователем bigredcat, 6 сен 2007.

  1. bigredcat

    bigredcat New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    54
    При использовании 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?
     
  2. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    WinAsm Studio + надстройка FASM

    в русской справке написано как установить студию и надстройку. в аттаче - примеры. если что не ясно - спрашивай.
    ------
    ой, архив из битых проектов (эхо потери HDD)... щас поищу нормальный
     
  3. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    Вот нормальные проекты. Хорошо, что глянул :)
     
  4. bigredcat

    bigredcat New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    54
    Честно говоря совсем не понял, что с этим файлом делать watasm.zip.
    Поясни если не в лом.
    Русскую справку и не русскую читал, но (кстати, у файла в архиве нет расширения, тектовым редактором открыл, но мало пользы) я не понял, куда его ложить и как в натройках прописать, если это бинарник.
     
  5. bigredcat

    bigredcat New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    54
    ПРЕАМБУЛА:
    (можно не читать)
    По данной теме на этом форуме и форуме разработчиков толковых ответов (ДЛЯ НОВИЧКОВ) я не нашел. Хотя вопросы, хоть и не многочисленные, но существуют (думаю, что вопросов так мало по-тому, что НОВИЧКИ просто и не знают о том, что кроме 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).
     
  6. bigredcat

    bigredcat New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    54
    СУТЬ СООБЩЕНИЯ:
    Разбирался сам методом "нучного тыка", пришел вот к чему (ВСЕ ЭТО ОТНОСТИСЯ ТОЛЬКО К 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):
    1. ;НАЗНАЧЕНИЕ СЕГМЕНТОВ
    2. assume  cs:code, ds:data
    3.  
    4. СЕГМЕНТ КОДА
    5. code    segment
    6. ;Главная процедура - точка входа (начало программы)
    7.     main    proc
    8.         ;Адрес сегмента данных помещаем в регистр сегмента данных DS:
    9.         mov ax, data
    10.         mov ds, ax
    11.         ;Вызываем процедуру вывода сообщения "Hello, World!":
    12.         call prnt_hello
    13.         ;Выход в DOS:
    14.         mov ax, 4c00h
    15.         int 21h
    16.     main    endp
    17.  
    18. ; Процедура вывода сообщения "Hello, World!"  
    19.     prnt_hello   proc
    20.         ;Получаем адрес строки mesHello в регистр DX:
    21.         lea dx, mesHello
    22.         ;Вызываем функцию MS-DOS 09h int 21h - вывод строки на консоль:
    23.         mov ah, 9
    24.         int 21h
    25.         ;Возвращаемся в процедуру вызова:
    26.         ret
    27.     prnt_hello    endp
    28. code    ends
    29.  
    30. ;СЕГМЕНТ ДАННЫХ
    31. data    segment
    32.     ;Наше сообщение:
    33.     mesHello db 'Hello, Wolrd!$'
    34. data    ends
    35. ;КОНЕЦ - ТОЧКА ВХОДА ПО УМОЛЧАНИЮ - не линкуется в RadASM
    36. end
    А здесь все работает:
    Только в самой последней строке для дерективы END указан параметр main.
    Код (Text):
    1. ;НАЗНАЧЕНИЕ СЕГМЕНТОВ
    2. assume  cs:code, ds:data
    3.  
    4. СЕГМЕНТ КОДА
    5. code    segment
    6. ;Главная процедура - точка входа (начало программы)
    7.     main    proc
    8.         ;Адрес сегмента данных помещаем в регистр сегмента данных DS:
    9.         mov ax, data
    10.         mov ds, ax
    11.         ;Вызываем процедуру вывода сообщения "Hello, World!":
    12.         call prnt_hello
    13.         ;Выход в DOS:
    14.         mov ax, 4c00h
    15.         int 21h
    16.     main    endp
    17.  
    18. ; Процедура вывода сообщения "Hello, World!"  
    19.     prnt_hello   proc
    20.         ;Получаем адрес строки mesHello в регистр DX:
    21.         lea dx, mesHello
    22.         ;Вызываем функцию MS-DOS 09h int 21h - вывод строки на консоль:
    23.         mov ah, 9
    24.         int 21h
    25.         ;Возвращаемся в процедуру вызова:
    26.         ret
    27.     prnt_hello    endp
    28. code    ends
    29.  
    30. ;СЕГМЕНТ ДАННЫХ
    31. data    segment
    32.     ;Наше сообщение:
    33.     mesHello db 'Hello, Wolrd!$'
    34. data    ends
    35. ;КОНЕЦ - ТОЧКА ВХОДА main - нормально линкуется в RadASM
    36. end    main
    Вот описание файла настроек для TASM
    (за исключением секций [Project] и добавления раздела [DOS App] ничего менять не надо:

    В секции [Project] в разделе Type необходимо добавить через запятую "DOS App":
    Результат:
    Код (Text):
    1. [Project]
    2. Type=Win32 App, DOS App
    3. Files=ASM,INC,RC,DEF,TXT,MAK
    4. Folders=Bak,Mod,Res
    5. MenuMake=Compile RC,Assemble,Link,Build,Go,Run,Run w/debug,Go All,Assemble Modules
    6. Group=1
    7. GroupExpand=1
    Добавить раздел DOS App
    В секции
    Код (Text):
    1. [DOS App]
    2. Files=1,0,0,0,0,0
    3. Folders=1,0,0
    4. MenuMake=0,1,1,1,0,1,0,0,0
    5. ;x=FileToDelete/CheckExistsOnExit,
    6. ;(O)utput/(C)onsole/0,Command,
    7. ;MakeFile1[,MakeFile2[,MakeFile3...]]
    8. 1=
    9. 2=3,C,$B\TASM.EXE /mx /m4 /z /q /zn  /I"$I",2
    10. 3=5,C,$B\TLINK.EXE /x /Tde /c /L"$L" $3
    11. 4=0,0,,5
    12. 5=
    13. 6=*.obj,C,$B\TASM.EXE /mx /m4 /z /q /zn  /I"$I",*.asm
    14. 7=0,0,$E\TD.EXE,5
    15. 11=
    16. 12=3,C,$B\TASM.EXE /mx /m4 /z /q /zn  /I"$I",*.obj
    17. 13=5,C,$B\TLINK.EXE /x /Tde /c /L"$L",3
    18. 14=0,0,,5
    19. 15=
    20. 16=*.obj,C,$B\TASM.EXE /mx /m4 /z /q /zn  /I"$I",*.asm
    21. 17=0,0,$E\TD.EXE,5
    ВСЕ
     
  7. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    С радасмом я никогда не работал - ничего сказать не могу.
    Отвечаю подробно по 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):
    1. tasmcom\
    2.  tasmcom.wap
    3.  tasmcom.asm
    4.  tasmcom.map
    5.  tasmcom.com
    6. tasmexe\
    7.  tasmexe.wap
    8.  tasmexe.asm
    9.  tasmexe.obj
    10.  tasmexe.map
    11.  tasmexe.exe
     
  8. bigredcat

    bigredcat New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    54
    Насамом деле в файле watasm.zip, скачанном по ссылке с этой страницы, содержится файл watasm (без расширения). Оказывается это тоже ZIP-архив и в нем-то уже и содержатся указанные файлы.

    Спасибо, теперь все встало на свои места. Буду пробовать.
     
  9. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    видимо, проблема скачивания. (у меня скачивается нормально)