Ассемблер

DOSBox: как пользоваться ассемблером

Пользоваться ассемблером в DOSBox значит работать со старым DOS-набором инструментов: открыть DOSBox, подключить папку командой mount, перейти в каталог с исходником, собрать файл через tasm, связать через tlink и запустить получившийся .exe. DOSBox не заменяет сам assembler. Он только дает окружение, в котором старые программы вроде TASM могут нормально выполняться

Что должно быть в папке

Для учебных задач удобно сделать простую структуру:

C:\asm
  BIN
    TASM.EXE
    TLINK.EXE
  WORK
    HELLO.ASM

Папка BIN хранит инструменты. Папка WORK хранит ваши программы. Не используйте длинные пути, кириллицу и пробелы в названии папок. Современная Windows это переживет, а старые DOS-инструменты могут вести себя неожиданно

Как подключить папку

В DOSBox выполните:

mount c c:\asm
c:
dir

Теперь реальная папка C:\asm видна внутри DOSBox как диск C:. Это главное действие. Пока вы не сделали mount, DOSBox не знает, где находятся ваши файлы

Чтобы перейти к исходникам:

cd work
dir

Если файл HELLO.ASM не виден, проверьте, где он лежит на реальном диске. Частая ошибка — сохранить файл в Downloads, а внутри DOSBox искать его в C:\asm\WORK

Как собрать программу

Если вы находитесь в C:\WORK, а инструменты лежат в C:\BIN, команда будет такой:

..\bin\tasm hello.asm
..\bin\tlink hello.obj
hello.exe

После первой команды появляется объектный файл:

HELLO.OBJ

После второй:

HELLO.EXE

Только .exe можно запускать как программу. .asm — это текст исходника, .obj — промежуточный объектный файл

Как упростить команды через PATH

Чтобы не писать ..\bin\, можно добавить папку с инструментами в PATH:

set path=c:\bin

После этого сборка выглядит проще:

tasm hello.asm
tlink hello.obj
hello.exe

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

Пример исходника

HELLO.ASM:

.model small
.stack 100h

.data
    msg db 'Hello, DOSBox$'

.code
main proc
    mov ax, @data
    mov ds, ax

    mov ah, 09h
    lea dx, msg
    int 21h

    mov ax, 4c00h
    int 21h
main endp
end main

В этом примере программа выводит строку через DOS-прерывание int 21h. Регистр ah выбирает функцию, dx передает адрес строки, а $ показывает конец текста для функции 09h

Как редактировать код

Вариантов несколько:

  • редактировать .asm в обычном редакторе Windows, а запускать сборку в DOSBox;
  • использовать старый DOS-редактор, если он есть в учебном комплекте;
  • держать рядом Far Manager или другой файловый менеджер для удобства, но сборку выполнять в DOSBox.

Самый понятный вариант для новичка — редактировать файл в современном редакторе, сохранить, перейти в DOSBox и заново выполнить tasm, tlink, hello.exe

Частые ошибки

Не выполнен mount

Без mount c c:\asm внутри DOSBox не будет вашего рабочего диска

Команда tasm не найдена

Либо вы не указали путь к TASM.EXE, либо не добавили C:\BIN в PATH

Файл не найден

Проверьте текущую папку командой:

cd
dir

Пример взят не под TASM

Код под NASM, FASM или Linux x64 может не собраться в TASM. Смотрите синтаксис и платформу примера

Что почитать дальше по ассемблеру

Если нужен общий маршрут по теме, откройте рубрику ассемблеру. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x