Начало работы в MASM32

Тема в разделе "WASM.BEGINNERS", создана пользователем SUNNY, 11 фев 2012.

  1. SUNNY

    SUNNY Member

    Публикаций:
    0
    Регистрация:
    1 окт 2009
    Сообщения:
    32
    Да, что-то совсем туплю. Сначала попробовал в Настройка - шрифты заглянуть, а только потом ваш ответ получил.

    Но как работать мне всё равно не ясно.
    Опишу все проделанные действия:
    1. Скачал с radasm.cherrytree.at архив с самим радасмом, assebly.zip (тут сказано, что необходим) и локализатор language.zip, всё распаковал в одну папку.
    2. Заглянул в Настройки - установить пути. Всё верно, A$ указывает на папку в которой MASM32 и установлен: C:\Masm32
    3. Создаю проект, выбираю ассемблер - masm, тип проекта - Dos App, жму далее, выбираю шаблон DosExe.tpl
    4. Набиваю код в asm-файле
    5. Выбираю Создать - Assemble. Пишет:
    Код (Text):
    1. C:\Masm32\Bin\ML.EXE /DMASM /DDOS /Zm /c /nologo /I"C:\Masm32\Include" "DOS_TEST_PROGA.asm"
    2.  Assembling: DOS_TEST_PROGA.asm
    3.  
    4. Make finished.
    5. Total compile time 1513 ms
    Всё нормально, obj-файл создался.
    6. Теперь выбираю Создать - Link Выдаётся ошибка и пишет:
    Код (Text):
    1. C:\Masm32\Bin\doslnk.exe /NOLOGO "DOS_TEST_PROGA.obj" "",,,,,""
    2. C:\Masm32\Bin\doslnk.exe /NOLOGO "DOS_TEST_PROGA.obj" "",,,,,""
    3.  
    4. Make finished.
    5. Total compile time 9656 ms
    Что-то я делаю не так или ещё каких компонентов не хватает?
     
  2. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    SUNNY
    А номер ошибки было сложно написать? Пишешь программу под ДОС, длина имени файла в ДОСе 8 символов + точка + 3 символа расширение, поэтому переименуй свою "DOS_TEST_PROGA.ASM" в PRG1.ASM и будет тебе счастье!
     
  3. SUNNY

    SUNNY Member

    Публикаций:
    0
    Регистрация:
    1 окт 2009
    Сообщения:
    32
    Переименовал. Всё равно таже ошибка.
    Код (Text):
    1. Error during process creation
    2. C:\Masm32\Bin\doslnk.exe /NOLOGO "DOSTSTPR.obj" ",,,,,"
    Только что посмотрел. У меня в bin нет никакого doslnk.exe, есть только link.exe и link16.exe. MASM32 версии 11, он вообще с RadAsm совместим?
     
  4. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    SUNNY
    используй link16.exe и помни о проблеме 8+3 символа
     
  5. MMIX

    MMIX New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2011
    Сообщения:
    385
  6. SUNNY

    SUNNY Member

    Публикаций:
    0
    Регистрация:
    1 окт 2009
    Сообщения:
    32
    Он в архиве зовётся LINK.EXE, а не DOSLNK.EXE. Если я сохраню его как BIN\DOSLNK.EXE всё будет работать, ну я имею в виду параметры которые RadAsm при вызове ему передаёт?
     
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    SUNNY
    link16.exe, который входит в masm32\bin тоже в девичестве назывался link.exe ver 5.60 -- стоило ли еще один link.exe с http://win32assembly.online.fr/download.html качать?
     
  8. SUNNY

    SUNNY Member

    Публикаций:
    0
    Регистрация:
    1 окт 2009
    Сообщения:
    32
    Ладно, качать пусть ничего не надо. А как мне RadAsm настроить чтобы в DOS-проектах правильный линковщик с правильными параметрами вызывался?
     
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    SUNNY
    А там есть masm.ini переименуй его в masm_dos.ini и разбирайся с содержимым в разделе [Make]
    А это результаты поиска на сайте, правда для ТАСМ
    https://wasm.ru/forum/viewtopic.php?id=22482
     
  10. MMIX

    MMIX New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2011
    Сообщения:
    385
    SUNNY

    Качать как раз надо -- по ссылке и правильный линковщек, и масм 6.15.

    Ассемблируем так -- ml /c file.asm
    Линкуем -- link file.obj

    Если нужна отладочная информация -- например мап.файл и листинг, то к опциям линкера добавить

    /Fl -- сгенерить файл листинга .lst
    /Fm -- карта связи. мап файл.
    /Fr -- перекрестныя ссылки.
    /Zd -- добавить номера строк в отладочную информацию.

    Вот все, больше ключи не нужны никакие имхо.

    =================================

    Да есчо если надо сом -- то сделать так
    exe2bin file.exe file.com

    (но тут кодес должен быть изначально тини модель, псп етц)
     
  11. MMIX

    MMIX New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2011
    Сообщения:
    385
    Mikl___

    Смутили человека своими dos_link, link16 и просто link хехе :)
     
  12. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    MMIX
    а вот меня всегда смущало назначение exe2bin неужели сложно написать
    Код (Text):
    1. %masm_path%\bin\ml /AT /c %filename%.asm
    2. %masm_path%\bin\link16 /T %filename%.obj,,,,,
     
  13. MMIX

    MMIX New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2011
    Сообщения:
    385
    Mikl___

    Так прозрачнее для новичков имхо. Виден полностью процесс создания объектного, егзе и ком файлов.
     
  14. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
  15. SUNNY

    SUNNY Member

    Публикаций:
    0
    Регистрация:
    1 окт 2009
    Сообщения:
    32
    1. Что означают запятые в конце вызова LINK?
    2. У меня в свойствах проекта (см. скриншот)
    [​IMG]
    Что означает это 0,O,$B
    3. И, наконец, для создания DOS-программы можно пользоваться связкой MASM32+RadAsm или нужно достать из бабушкиного сундука MASM v.6?
     
  16. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    LINK [ключи] <obj-файл>,<исполняемый_файл>,<map-файл>,<lib-библиотеки>,<def-определения>
    Где:
    def-определения - (путь и) имена входных def-файлов, необходимых для компоновки
    lib-библиотеки - (путь и) имена входных lib-файлов, необходимых для компоновки
    map-файл - (путь и) имя выходного файла отчёта
    исполняемый_файл - (путь и) имя выходного исполняемого файла
    obj-файл - (путь и) имя входного объектного файла.
    ключи - список возможных опций.
    если указать: link16 %filename%.obj,,,,, тогда у def-, lib-, map- и у исполняемого файла будет одно и тоже имя, совпадающее с именем obj-файла
    Посмотри внимательно ссылку, которую я дал в #29
    3. Достаточно связки ml (который понимает ключ /AT)+ link16
     
  17. SUNNY

    SUNNY Member

    Публикаций:
    0
    Регистрация:
    1 окт 2009
    Сообщения:
    32
    Кстати с кодировкой RadAsm так и не уяснили.

    Можно в настройках шрифтов выбрать какой-нибудь кирилический шрифт для CP-1251 или шрифт Terminal для CP866, но этим меняется только отображение текста в редакторе, а пишешь всё равно в CP-1251. Можно ли сделать так, чтобы набирать код в CP866?
     
  18. MMIX

    MMIX New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2011
    Сообщения:
    385
    SUNNY

    Скиньте плз хелпы от масма32 11 версии. chm там вроде в папке отдельной лежат.
     
  19. SUNNY

    SUNNY Member

    Публикаций:
    0
    Регистрация:
    1 окт 2009
    Сообщения:
    32
    MMIX
    http://ifolder.ru/28807952
     
  20. MMIX

    MMIX New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2011
    Сообщения:
    385
    SUNNY
    Благодарю вас.