Как открыть asm файл в dosbox

Обновлено: 07.07.2024

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

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

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

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

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

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

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


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


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

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

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


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


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

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


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


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

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


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

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

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

Регистры

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

Флаги

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

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

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

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

mount d: c:\asm – создаём виртуальный диск, где корень –папка asm

d: - открываем созданный диск

tasm code.asm – компилируем исходный код

tlink code.obj – создаём исполняемый файл

td code – запускаем debug

F7 – делаем шаг в программе

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

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

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

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

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

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

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


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


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

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

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


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


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

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


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


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

Нажав F7 или fn + F7 вы сможете совершить 1 шаг по коду. Синяя строка начнёт движение вниз, изменяя значения регистров и флагов. Пока это всего лишь шаблон, на котором мы потренировались запускать нашу программу в режиме дебага. Реальное “волшебство” мы увидим лишь с полноценным кодом на asm.

Небольшой пример для запуска

Прога проверяет, было ли передано верное число открывающих и закрывающих скобок:

Давайте ознакомимся с имеющимися разделами.


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

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

Stack segment – место хранения данных нашего стека.

Регистры

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

Флаги

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

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

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

mount d: c:\asm – создаём виртуальный диск, где корень –папка asm

d: - открываем созданный диск

tasm code.asm – компилируем исходный код

tlink code.obj – создаём исполняемый файл

td code – запускаем debug

F7 – делаем шаг в программе

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

Первая программа на ассемблере.

Ещё мы знаем, что в указанном формате пишутся резидентные программы, драйверы и вирусы.

Для достижения нашей цели делаем следующее.

  • Скачиваем с нашего сайта архив (DOS-1.rar) с предустановленными DOSBox и программами. Запускаем DOSBox. Стартует эмулятор MS-DOS и Norton Commander пятой версии.
  • В папке D:\TASM.2_0\TASM\ находим текстовый файл PRG.ASM. Это обычный текстовый файл, который можно создать
    с помощью любого текстового редактора, с расширением ASM вместо TXT.
  • В файл вносим код:
;Строка, после точки с запятой является комментарием org 100h ; начальное значение смещения программы в памяти - 100h int 21h ; вызов т.н. "прерывания" - системной функции DOS message db "Hello, World!" , 0Dh , 0Ah , '$' ; строка для вывода

Чтобы посмотреть список всех возможных параметров с пояснениями для файлов tasm.exe и tlink.exe необходимо запустить эти программы без параметров. Если вы сделаете это, не выходя из оболочки NC, то, чтобы просмотреть чистое окно DOS нажмите Ctrl+O, чтобы вернуться в NC, нажмите сочетание клавиш повторно.

Батник COMPLEX.BAT предназначен для создания исполняемых файлов из двух файлов кода (названия обязательно должны быть prg.asm, prg1.asm).

Наша первая программа на ассемблере прекрасно работает!

Выше мы рассмотрели стандартный подход к программированию на TASM в системе MS-DOS. Указанным алгоритмом создания программ можно пользоваться и далее.

Можете попробывать TASMED в папке D:\UTILS\TASMED\. Программа уже настроена и готова к использованию.

Первая программа на ассемблере.

Первая программа на ассемблере в среде разработки TASMED.

  • подсветка ассемблерного синтаксиса;
  • возможность сохранения проектов под любым именем и в любой директории;
  • работа как с TASM, так и MASM.

Практические советы: группирование проектов, русский язык в MS-DOS.

Для того, чтобы в исходниках, которые вы будете просматривать в системе MS-DOS с использованием текстовых редакторов DOS и различных сред разработок нормально отображалась кириллица (например в комментариях к строкам кода) необходимо проделать следующие действия.

Конечно вопрос снимается сам собой, если комментарии писать на английском.

«Используйте набор инструментов DOSBox + MASM32 для создания среды сборки под Win10»

Мне нужно создать среду сборки, чтобы изучить сборку в последнее время. У меня нет выбора, кроме как использовать платформу Win10. Я наступил на некоторые ямы во время процесса строительства, поэтому я отмечу здесь полный процесс строительства и надеюсь помочь тем, кто в этом нуждается

Изучение сборки на самом деле достаточно, чтобы построить виртуальную машину Win XP непосредственно на Win10, но я не хочу устанавливать виртуальную машину XP. Я планирую использовать «DOSBox + MASM32 toolkit» для непосредственного создания среды сборки.

1. Скачайте и установите DOSBox

Здесь я даю ссылкуDOSBox0.74-win32-installer.exe, После загрузки нажмите Далее, чтобы установить весь процесс

2. Настроить DOSBox

1

Создайте новую папку на определенном диске вашего компьютера, а затем используйте эту папку для хранения инструментов \ файлов о разработке сборки,
, напримерD:\ASM. Затем щелкните правой кнопкой мыши ярлык BOSBox на рабочем столе компьютера, выберите «Свойства» и выберите «Открыть расположение файла» во всплывающем окне.

2


Как видите, существует файл с именем“DOSBox 0.74 Options.bat”Пакетный файл.

3. Поместите сборочные инструменты

4. Используйте DOSBox для компиляции ассемблера.

Сначала мы используем редактор (например, Notepad ++ или EditPlus) для записи файла сборки с именем TEST.asm, содержимое файла сборки выглядит следующим образом (для тестирования):

6

Поместите TEST.asm вD:\ASMПод каталогом, а затем дважды щелкните ярлык DOSBox на рабочем столе, появятся два окна.Мы фокусируемся только на самом маленьком окне и используем его для ввода команд.

7


Давайте вводимC:, Введите диск C в DOSBox (на самом деле D: \ ASM нашего компьютера) и введитеdir, Проверьте файлы в этом каталоге, вы можете увидеть файл TEST.asm, который мы только что вставили.


После мы входим в это окно
MASM TEST.asm
может скомпилировать и сгенерировать объектный файл (файл obj), во время которого появятся несколько вариантов ввода, здесь вы можете изменить имя вашего файла obj. Здесь я выбираю значение по умолчанию (имя такое же, как имя файла asm, то есть TEST.obj), просто непрерывно набираю ввод


9


Затем мы вводим
LINK TEST.obj
Свяжите файл obj, чтобы сгенерировать исполняемый файл, во время которого появятся несколько вариантов ввода. Здесь вы можете изменить имя вашего exe-файла. Здесь я выбираю значение по умолчанию (имя такое же, как имя файла obj, то есть TEST.exe), и мне нужно только непрерывно вводить

10


(здесь есть предупреждение, мы его игнорируем)
Наконец, мы вводим
DEBUG TEST.exe
Затем вы можете начать отладку после того, как появится командная строка «-» в DEBUG. На данный момент наша среда сборки настроена

Читайте также: