Как запустить asm файл в dosbox
Перейти к содержимому

Как запустить asm файл в dosbox

  • автор:

Assembler – Урок 0: Установка компилятора и запуск первой программы через DOSBox 27.06.2021 16:17

В данном курсе планируется разобрать основные особенности программирования на самой простой реализации assembler — TASM. Этих знаний лично мне вполне хватило, чтобы на отлично сдать ЭВМ в институте и закончить все лабораторные работы. Во многих уроках будет домашние задание по их мотивам.

Для начала давайте установим наш старенький компилятор.
Ссылка

Почему именно vk.com?

Я прекрасно понимаю, что это ещё тот колхоз делиться файлами через обсуждения VK, но кто знает, во что может превратиться эта маленькая группа в будущем.

После распаковки файлов, советую сохранить их в папке Asm на диск C, чтобы иметь меньше расхождений с представленным тут материалом.

Для запуска компилятора нам так же потребуется эмулятор DOSBox. Он и оживит все наши компоненты. Скачаем и установим его!
Ссылка

В папке Asm я специально оставил файл code.asm. Именно на нём мы и потренируемся запускать нашу программу. Советую сохранить его копию, ибо там хранится весь код, который в 99% случаев будет присутствовать в каждом вашем проекте.

s_s segment s_s ends d_s segment d_s ends c_s segment assume ss:s_s, ds:d_s, cs:c_s begin: mov ax, d_s mov ds, ax mov ax, 0 ; Your code needs to be here mov ah, 4ch int 21h c_s ends end begin

Итак. Запускаем наш DOSBox и видим следующее:

905025751a7d037914be994ca7dec849.JPG

Для начала нам нужно смонтировать диск, на который вы сохранили вашу папку Asm. У меня это диск C, поэтому я прописываю следующую команду:

mount d: c:\asm

8ff1486a85fde1bf2744fd26e758d85f.JPG

Здесь d: это не реальный диск на вашем компьютере, а виртуальный. С таким же успехом вы можете назвать его i или s. А вот C это наоборот реальный диск. Мы прописываем путь до наших файлов ассемблера.

Теперь, откроем смонтированный диск:

Прописав команду dir, вы сможете увидеть все файлы, которые там хранятся. Здесь можно заметить и наш файл CODE с расширением ASM, а так же дату его создания.

9f26805248b3197361b1b87b003f64f3.JPG

И только теперь мы начинает запускать наш файл! Бедные программисты 20 века, как они только терпели всё это? Пропишем следующую команду:

tasm code.asm

После мы увидим следующее сообщение, а наша директория пополнится новым файлом с расширением OBJ.

ab88a97efa85c8ecfec60840d2821bda.JPG

Теперь пропишем ещё одну команду:

tlink code.obj

В нашей папке появилась ещё пара файлов — CODE.MAP и CODE.EXE. Последний как раз и есть исполняемый файл нашего кода assembler.

de94309fbc875167960c4cdf7e22423b.JPG

Если он появился, значит, мы можем запустить режим отладки нашей программы, введя команду последнюю команду. Обратите внимание, теперь мы не указываем расширение файла, который запускаем.

td code

0e9d1f7bdc885fb38598f1e8f4361b40.JPG

Этот старинный интерфейс насквозь пропитан духом ушедшей эпохи старых операционных систем. Тем не менее…

Нажав F7 или fn + F7 вы сможете совершить 1 шаг по коду. Синяя строка начнёт движение вниз, изменяя значения регистров и флагов. Пока это всего лишь шаблон, на которым мы потренировались запускать нашу программу в режиме дебага. Реальное «волшебство» мы увидим лишь в следующих уроках. Пока давайте лишь ознакомимся с имеющимися разделами.

2e7a327866eb7819501c3f863ea4ba4f.jpg

CS

Code segment — место, где turbo debug отражает все найденные строки кода. Важное замечание — все данные отражаются в TD в виде 16-ричной системы. А значит какая-нибудь »12» это на самом деле 18, а реальное 12 это «C». CS аналогичен разделу «Begin end.» на Pascal или функции main.

DS

Data segment, отражает пока все мусорные данные, которые обнаружил TD. Справа мы видим их символьную (char) интерпретацию. В будущем мы сможем увидеть здесь наш «Hello, world», интерпретируемый компилятором в числа, по таблице ASCII. Хорошей аналогией DS является раздел VAR, как в Pascal. Пока будем считать, что это одно и тоже.

SS

Stack segment — место хранения данных нашего стека. Возможно, вы уже слышали о такой структуре данных. Если нет, обязуюсь пояснить в последующих статьях.

Регистры

Все эти ax, bx, cx, si, di, ss, cs и т. д. — это наши регистры, которые используются как переменные для хранения данных. Да, это очень грубое упрощение. Переменные из Pascal и регистры Assembler это не одно и тоже, но надеюсь, такая аналогия даёт более чёткую картину. Здесь мы сможем хранить данные о циклах, арифметических операциях, системных прерываниях и т. д.

Флаги

Все эти c, z, s, o, p и т.д. это и есть наши флаги. В них хранится промежуточная информация о том, например, было ли полученное число чётным, произошло ранее переполнение или нет. Они могут хранить результат побитого сдвига. По опыту, могу сказать, на них обращаешь внимание лишь при отладке программы, а не во время штатного исполнения.

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

Ещё одно замечание. Если вы измените данные исходного файла с расширением .ASM, то вам придётся совершить все ранее описанные операции вновь, ибо обновив например code.asm вы не меняете code.obj или code.exe.

Маленькая шпаргалка для заметок:

  1. mount d: c:\asm — создаём виртуальный диск, где корень –папка asm
  2. d: — открываем созданный диск
  3. tasm code.asm — компилируем исходный код
  4. tlink code.obj — создаём исполняемый файл
  5. td code — запускаем debug
  6. F7 — делаем шаг в программе

Буду ждать комментарии от всех, кому интересен Assembler. Чувствую, я где-то мог накосячить в терминологии или обозначении того или иного элемента. Но статья на Habr отличный повод всё повторить.

Habrahabr.ru прочитано 36713 раз

Как запустить assebler-файл в DOSbox?

5a894ce0a0a59448541003.png

Положил my.asm в папку C:\Tasm 1.4\Tasm
Запускаю:

1) Как выполнить программу?
2) Эта команда вроде должна скомпилировать файл в .exe, но в текущей папке .exe файл не появился

  • Вопрос задан более трёх лет назад
  • 10193 просмотра

Комментировать
Решения вопроса 1

borisdenis

Довольный Айтишникъ @borisdenis

TASM.EXE — компилятор.
TLINK.EXE — линкер.

Запускать следует так:

Компилятор выдаст сообщение:

Assembling File: MYPROG.ASM
*Warning* MYPROG.ASM(18) Argument needs type override
*Warning* MYPROG.ASM(20) Argument needs type override
Error messages: None
Warning messages: 2
Passes: 1
Remaining memory: 354K

Это значит, что компиляция завершена и создан файл MYPROG.OBJ, который
нужно отлинковать в MYPROG.EXE с помощью вызова:

В итоге получим необходимый файл MYPROG.EXE.

Как запустить программу с DosBox?

Author24 — интернет-сервис помощи студентам

Как запустить программу с Config
Как запустить программу с Config.sys?

Как запустить консольную программу, которой мешает Windows
Подскажите, пожалуйста, как запустить программу на ассемблере, которой мешает Windows, но в то же.

Как запустить программу Ассемблер на виртуальной машине NTVDM на WinXP?
У меня WinXP, говорят, что для нее можно работать с ассемблерными кодами и без DOS-BOX. Помогите.

2509 / 1130 / 582
Регистрация: 07.06.2014
Сообщений: 3,286

нужно скачать DOSBOX, установить его.
зайти в настройки DOSBOX и настроить в конфигурационном файле запуск нужной программы.
Запустить DOSBOX.
Всё!

Эксперт быдлокодинга
2091 / 525 / 69
Регистрация: 04.11.2010
Сообщений: 1,310
На иконку установленного досбокса втаскиваешь свою программу и наслаждаешься результатом
programmer
2391 / 525 / 69
Регистрация: 01.06.2011
Сообщений: 3,639

mount d d:\ прикрутить диск или папку на своем харде
d:\ перейти к нему
prog.exe вызвать программу

Регистрация: 08.06.2013
Сообщений: 212

Скажите пожалуйста,что именно нужно прописать в окошке программы DosBox,если на диске D (и га диске C) в папке asm имеется файл с кодом sasha.asm?? Я уже долго пытаюсь,но не выходит.

programmer
2391 / 525 / 69
Регистрация: 01.06.2011
Сообщений: 3,639

подключи папку сразу
mount d d:\folder\folder
зайти туда
d:\

Добавлено через 1 минуту
dir список всех файлов
cd.. выйти из папки
cd имя папи — войти в папку

Ушел с форума

Автор FAQ

16232 / 7560 / 1056
Регистрация: 11.11.2010
Сообщений: 13,573

хгаля,
для начала нужно из sasha.asm нужно создать sasha.ехе, а вот затем воспользоваться советом Полный 30h

На иконку установленного досбокса втаскиваешь свою программу и наслаждаешься результатом
или советом Thread
mount d d:\ прикрутить диск или папку на своем харде d:\ перейти к нему sasha.ехе вызвать программу
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как запустить FarManager в DosBox-e?
:)Как запустить FarManager в DosBox-e? У меня x64, чтобы работать с асмом, нужна или x86 или дос.

Запустить одну программу и по завершении её работы запустить другую программу
Ребят подскажите как можно организовать такое задание в cmd. запустить любую программу, и по.

Как заставить программу запустить другую программу
Как заставить программу запуститься в спрятанном режиме, чтобы её можно было найти только в.

Запустить программу, при ее успешном завершении запустить следующую
— запустить программу PRIM.exe, при успешном завершении запустить PRIM_1.exe, иначе .

Или воспользуйтесь поиском по форуму:

Как запустить asm файл в dosbox

Пробовал. Много сайтов уже перепробовал.

..эмм, так будет ответ как настроить этот DosBox?
Или мне спросить на других форумах?

Я уже задолбался с ним. Уже месяц не могу настроить. Сил моих больше нет.. И никто не поможет. Все умничают «спроси у гугла», «учи матчасть» и т.п., а хорошего ответа дать никто не может.

Регистрация: 09.01.2008
Сообщений: 26,238
Сообщение от kyle16
Я уже задолбался с ним. Уже месяц не могу настроить. Сил моих больше нет.. И никто не поможет.

ОМГ. Да что же там МЕСЯЦ настраивать?!

ладно.
попробуем вместе настроить.
Может быть, за полмесяца вместе справимся

1) Вы, судя по всему (скриншот) установили себе DosBox
т.е. у Вас есть ярлычок для запуска DosBox

нажмите правой кнопкой мышки на этом ярлычке, выберите в выпавшем меню «Свойства» и покажите, что у Вас на закладке «Ярлык» в поле «Объект» ?
например, у меня Windows 7 64 бита,
в свойства ярлычка прописано:

"C:\Program Files (x86)\DOSBox-0.74\DOSBox.exe" -userconf

дальше. нажмите Win+R (или мышкой на Пуск — потом «Выполнить»
и напишите такую команду

"C:\Program Files (x86)\DOSBox-0.74\DOSBox.exe" -editconf notepad.exe

нажмите кнопку выполнить.
Внимание! если DosBox установлен у Вас в другую папку, то укажите свой путь к программе DOSBox.exe

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

что там и как — можно почитать в документации (см. например, DOSBox 0.74 Manual.txt в каталоге программы) , но Вам это на первом этапе не так важно.

Вам нужно опуститься вниз, в самый конец файла и найти там секцию, которая называется [autoexec]:
dosbox1.png

вот ниже [autoexec] и напишите две строчки:

mount c c:\TASM c:

// т.е. сделайте так, как на моём скриншоте

после этого сохраните файл конфигурации и закройте блокнот.

если Вы всё сделали правильно, то у Вас загрузится DosBox
и каталог C:\TASM будет смонтирован (подключён к программе) в качестве диска C:
можете в открывшейся командной строке написать dir и нажать клавишу «Enter», будет выведен список файлов, которые у Вас находятся в каталоге.
дальше можете использовать запуск компилятора TASM.EXE с командной строкой, в которой будет указано, что нужно компилировать, TLINK.EXE с командной строкой, в которой будет указано, что нужно собрать.
и, собственно, можно запускать полученные после компиляции EXE и COM файлы.

p.s. Так же можно запускать ЛЮБЫЕ DOS программы, включая старые игры.

Последний раз редактировалось Serge_Bliznykov; 29.06.2017 в 14:52 .

Serge_Bliznykov
Посмотреть профиль
Найти ещё сообщения от Serge_Bliznykov

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *