Файл .bat

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

  1. Saessie

    Saessie New Member

    Публикаций:
    0
    Я хочу использовать компилятор TASM, т.к. именно его мы используем в учебной лаборатории вуз'а. Я скачал этот компилятор с сайта http://vas-unn.narod.ru

    там 4 файла:

    TASM.EXE
    TASM32.EXE
    TLINK.EXE
    TLINK32.EXE

    DOS я загружаю с загрузочной дискеты, сделанной с помощью Мой компьютер -> Диск А -> Форматировать... -> Соэдание загрузочного диска MS-DOS. В Windows XP вставляю дискету и перезагружаюсь. Norton Commander установлен. Файлы ASM и BAT созданы.
    Вопрос: как мне 'привязать' мой BAT - файл к TASM'у? TASM.EXE у меня в одной папке, ASM - в другой. А вообще они должны быть в одной папке или нет? И как однозадачный DOS сможет одновременно выполнить 2 программы - NORTON COMMANDER и TASM?
     
  2. horpis

    horpis New Member

    Публикаций:
    0
    ты имел ввиду это??
    Код (Text):
    1. @echo off
    2. C:\masm32\bin\ml.exe /c /coff /Gz C:\masm32\WORK\tControl\prop.asm
    3. pause
    4. @echo off
    5. C:\masm32\bin\rc.exe C:\masm32\work\tControl\prop.rc
    6. pause
    7. @echo off
    8. C:\masm32\bin\link.exe /debug /subsystem:windows /pdb:prop.pdb C:\masm32\WORK\tControl\prop.obj C:\masm32\WORK\tControl\prop.res
    9. pause
     
  3. cppasm

    cppasm New Member

    Публикаций:
    0
    В DOS есть резиденты и он не такой однозадачный как кажется :)
    Не ясно конечно что он имел ввиду, но я понял по жругому...
    Я так понял что надо чтоб tasm из командной строки запускался из любой директории...
    Если действительно так, то добавь в autoexec.bat в конец строку
    Код (Text):
    1. set path=c:\tasmdir;%path%
    Где c:\tasmdir директория в которой у тебя находится tasm.exe
     
  4. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    horpis
    Разумеется не это :)))
    Он про TASM спрашивал, а Масм32 с DOS не дружит ;)
    Saessie
    Когда давно играл в тасм, то компилировал и запускал батником RunDOS.bat
    Код (Text):
    1. @tasm /mx /z /r /kh65535 %1.asm
    2. @if ErrorLevel==1 GoTo TasmError
    3. @tlink %1.obj,%1.exe
    4. @if ErrorLevel==1 GoTo LinkError
    5. @%1.exe
    6. @erase %1.obj
    7. @GoTo EndBat
    8. :TasmError
    9. @echo При ассемблировании произошла ошибка
    10. @GoTo EndBat
    11. :LinkError
    12. @echo При связывании произошла ошибка
    13. :EndBat
    Путь к тасму и линкеру можно указать непосредственно в батнике, например:
    @c:\tasm5\bin\tasm ...
    @c:\tasm5\bin\tlink ...
    но лучше через PATH как cppasm советует ;), тогда можно батник в директорию с tasm положить, а не таскать его по папкам с исходниками.
    Tasm32 и Tlink32 нужны для компиляции программ под Win или Protect mode DOS
    И если ты нашёл только эти 4 файла - то загляни в инструменталку wasm - там есть полная 5+ версия, только не перепутай с TASM32 3.2 (первая строчка, но это совсем не тот тасм) и с патчем осторожнее - может он что-то и исправляет, но у меня после пропатчивания посыпалась куча сообщений об ошибках в нормально работающих прогах - пришлось откатиться :)

    И чуть не забыл для компиляции изапуска в командной строке NC пишется: RunDOS FileName
    где FileName - имя асм файла без расширения .asm
    А NC на то и "файловый менеджер"\"DOS оболочка", чтобы из него другие проги запускать :)
     
  5. Saessie

    Saessie New Member

    Публикаций:
    0
    Как советовал уважаемый cppasm, код set path=c:\tasmdir;%path% не работает. Может из-за того что я загружаю DOS с дискеты (выполняется ли при этом C:\autoexec.bat ?).
    Или вместо path надо что-то написать?
    И как этот код определяет, что должен запускаться именно TASM.EXE, а не например TLINK32.EXE - ведь этого нигде не прописано - указана только папка?

    По поводу совета Y-MUR:
    А этого недостаточно?

    И
    А путь к этому файлу?
     
  6. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Saessie
    Разумеется при загрузке с дискеты выполняется A:\autoexec.bat ;)
    вместо path ничего писать не надо - это имя системной переменной, где хранится список директорий к которым можно обращаться не указывая путь
    ;%path% означает, что ты не заменяешь, а дописываешь path командой set. Если set path используется в autoexec.bat однократно, то достаточно перечислить список директорий, разделённых ; и без пробелов.
    для ДОС достаточно tasm + tlink (даже без ...32), но в полном комплекте есть ещё отладчик, примеры и много не всегда нужной, но в принципе полезной мелочи ;).
    если RunDOS.bat лежит рядом с asm файлом или в директории с tasm, то путь не нужен.

    А кстати после загрузки с дискеты ты диск C:\ видишь?
     
  7. Saessie

    Saessie New Member

    Публикаций:
    0
    Т.е. мне надо создать A:\autoexec.bat и там прописать set path=а:\tasmdir;%path% ?

    Что есть отладчик? Не то ли это, благодаря чему соэдаётся *.lst ?

    C:\ то я вижу, но вот E:\ не вижу. Вижу даже D:\ ;). Хотелось бы всё-таки видеть ещё и E:\. Как это сделать?
     
  8. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    например set path=C:\;С:\tasm;D:\myAsmFil.es
    тогда к файлам расположенным в корне диска, C:\, и директориях С:\tasm, D:\myAsmFil.es можно будет обращаться не указывая путь.
    lst создаётся ключом /l или /la в tasm (запусти его без всего - получишь полный список его возможностей), а отладчик позволяет смотреть выполнение кода по шагам.
    Из под ДОС видно тольно FAT32 диски, если хочешь видеть ещё и NTFS диски, то нагугли утилиту Русиновича NTFSdos, хотя раз два есть, то имхо нет особого смысла "выпендриваться" ;)
     
  9. Saessie

    Saessie New Member

    Публикаций:
    0
    Огромное спасибо, теперь все мои программы работают! Правда я не использую ни отладчика, ни runDOS - просто a:\autoexec.bat.