Урок 2

Работа с DOSBox

Для того, чтобы запустить DOSBox, неоходимо выбрать меню Приложения→Игры→Эмулятор DOSBox. Эта программа достаточно корректно эмулирует операционную систему MS-DOS, однако надо учитывать, что в нём существуют некоторые ограничения. Однако для первых уроков программирования на ассемблере эта программа подходит идеально.

Команды MS-DOS

MS-DOS - дисковая операционная система. Поэтому большая часть команд связана с работой диска (создание каталогов, операции с файлами и т.д.). Диски в MS-DOS нумеруются также, как и в windows (точнее наоборот, в windows также, как в MS-DOS): диск A - дисковод гибких дисков, C, D и т.д. - локальные диски. Для последних версий появилась возможность подключать CD-ROM, но это требовало изрядного энтузиазма, да и не так уж много человек обладало в то время CD-ROM.

Список команд DOS

Материал из Википедии — свободной энциклопедии Перейти к: навигация, поиск

Список команд DOS — нижеследующий список команд для операционной системы DOS. Начиная с 5-й версии, этот список с кратким описанием каждой команды может быть получен набором команды HELP. Также начиная с 5-й версии справка по конкретной команде может быть получена набором символов /? после имени команды.

Например, набор команды

C:\>ren /?

приведёт к получению справки по команде ren:

Переименование одного или нескольких файлов.

RENAME [диск:][путь]имя_файла1 имя_файла2. REN [диск:][путь]имя_файла1 имя_файла2.

Для конечного файла нельзя указать другой диск или каталог.

Все команды DOS являются нечувствительными к регистру букв, то есть любая команда может быть набрана как строчными, так и заглавными буквами. Содержание:

1 Команды

o 1.1 attrib

o 1.2 cd или chdir
o 1.3 chkdsk
o 1.4 cls
o 1.5 copy
o 1.6 del, erase
o 1.7 deltree
o 1.8 dir
o 1.9 edisk/mbr
o 1.10 format
* 2 См. также

[править] Команды [править] attrib

Вывод и изменение атрибутов файлов.

ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [диск:] [путь] [имя_файла] [/S] [/D]

+ Установка атрибута. - Снятие атрибута. R Атрибут «Только чтение». A Атрибут «Архивный». S Атрибут «Системный». H Атрибут «Скрытый». [диск:] [путь] [имя_файла]

Указание файла или набора файлов для обработки.

/S Обработка файлов с указанными именами в текущей папке

и во всех ее подпапках.

/D Обработка и файлов, и папок.

Эквивалентна команде Unix chmod. [править] cd или chdir

Вывод имени либо смена текущего каталога.

CHDIR [/D] [диск:][путь] CHDIR [..] CD [/D] [диск:][путь] CD [..]

.. обозначает переход в родительский каталог.

Команда CD диск: отображает имя текущего каталога указанного диска. Команда CD без параметров отображает имена текущих диска и каталога.

Параметр /D используется для одновременной смены текущих диска и каталога.

Изменение команды CHDIR при включении расширенной обработки команд:

Имя текущего каталога в строке вызова преобразуется к тому же регистру символов, что и для существующих имен на диске. Так, команда CD C:\TEMP на самом деле сделает текущим каталог C:\Temp, если он существует на диске.

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

chdir \winnt\profiles\username\programs\start menu

приводит к тому же результату, что и:

cd "\winnt\profiles\username\programs\start menu"

При отключении расширенной обработки команд используется только второй вариант.

Эквивалентна команде Unix cd (с параметрами), или pwd (без параметров).

Команды для работы с каталогами Чтобы команда сработала, нужно ее напечатать при помощи клавиатуры и нажать ENTER. В основном регистр не учитывается, то есть команды можно вводить как маленькими так и большими буквами. DOS не понимает длинные имена файлов, только в формате 8.3, то есть 8 символов в названии файла и 3 — в расширении. Обратите внимание на пробелы. Как правило, в DOS`e после пробела должен стоять параметр.

<tbody></tbody> Команда Формат Описание Параметры dir dir диск:\путь\имя_файла /параметры Просмотр каталога /p - поэкранный вывод, /W - вывод информации только об именах файлов (по пять в каждой строке) md md диск:\имя_каталога Создание каталога cd cd диск:\имя_каталога Смена текущего каталога rd rd диск:\имя_каталога Удаление каталога deltree deltree имя_файла_или_имя_каталога Удаление каталога со всем его содержимым move move диск: имя_каталога новое_имя_каталога Переименование каталога path path диск1:\имя_каталога1;диск2:\имя_каталога2 Поиск

Набрав две точки (..) можно вернуться в предыдущий каталог, а при вводе \ — в корневой каталог.

Примеры:

dir — просмотр оглавления текущего каталога;

dir *.exe — выводится информация обо всех файлах с расширением EXE из текущего каталога;

cd c:\catalog — установить текущим каталог с именем catalog на диске C;

cd .. — переход на каталог выше;

cd\ — переход в корневой каталог;

md books — в текущем каталоге создать подкаталог books;

md c:\archives — в корневом каталоге на диске С: создается каталог archives;

rd games — удаление каталога games в текущем каталоге. [править] chkdsk

Проверка диска и вывод отчета.

CHKDSK [том:путь]имя_файла [/F] [/V] [/R] [/X] [/I] [/C] [/L[:размер]]

Том Определяет точку подключения, имя тома или букву проверяемого диска

с двоеточием.

имя_файла Файлы, проверяемые на наличие фрагментации (только FAT/FAT32). /F Исправление ошибок на диске. /V Для FAT/FAT32: вывод полного пути и имени для каждого файла

на этом диске.
Для NTFS: также вывод сообщений об очистке.

/R Поиск поврежденных секторов и восстановление их содержимого.

(подразумевает /F).

/L:размер Только для NTFS: изменение размера файла журнала до указанной

величины (в КБ). Если размер не указан, выводится текущее
значение размера.

/X При необходимости предварительное отключение

тома. Все открытые дескрипторы для этого тома будут
недействительны. (требует /F).

/I Только для NTFS: менее строгая проверка индексных элементов. /C Только для NTFS: пропуск проверки циклов внутри структуры папок.

Ключи /I или /C укорачивают время выполнения CHKDSK за счет пропуска некоторых проверок тома.

Эквивалентна команде fsck в Unix.

[править] cls

Очищает экран…

cls

Эквивалентна команде clear в Unix.

[править] copy

Копирование одного или нескольких файлов в другое место.

COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B] источник [/A | /B] [+ источник [/A | /B] + … [результат [/A | /B]]

источник Имена одного или нескольких копируемых файлов.

/A Файл является текстовым файлом ASCII.

/B Файл является двоичным файлом.

/D Указывает на возможность создания зашифрованного файла

результат Каталог и/или имя для конечных файлов.

/V Проверка правильности копирования файлов.

/N Использование, если возможно, коротких имен при копировании файлов, чьи имена не удовлетворяют стандарту 8.3.

/Y Подавление запроса подтверждения на перезапись существующего конечного файла.

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

/Z Копирование сетевых файлов с возобновлением.

Ключ /Y можно установить через переменную среды COPYCMD.

Ключ /-Y командной строки переопределяет такую установку.

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

Чтобы объединить файлы, укажите один конечный и несколько исходных файлов, используя подстановочные знаки или формат «файл1+файл2+файл3+…».

Эквивалентна команде cp в Unix.

Расширенными возможностями обладают XCOPY и robocopy [править] del, erase

Удаление одного или нескольких файлов.

DEL [/P] [/F] [/S] [/Q] [/A]атрибуты имена ERASE [/P] [/F] [/S] [/Q] [/A]атрибуты имена

имена Имена одного или нескольких файлов. Для удаления сразу

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

/P Запрос на подтверждение перед удалением каждого файла. /F Принудительное удаление файлов, доступных только для чтения. /S Удаление указанных файлов из всех подкаталогов. /Q Отключение запроса на подтверждение при удалении файлов. /A Отбор файлов для удаления по атрибутам. атрибуты S Системные файлы R Доступные только для чтения

H Скрытые файлы A Файлы для архивирования
Префикс "-" имеет значение НЕ

Изменение команд DEL и ERASE при включении расширенной обработки команд:

Результаты вывода для ключа /S принимают обратный характер, то есть выводятся только имена удаленных файлов, а не файлов, которые не удалось найти.

Эквивалентна команде rm в Unix..

[править] deltree

Удаление директории вместе с файлами и другими директориями, которые она включает.

deltree [/y] директория

В Unix, функциональность deltree предоставляется командой rm с параметром -r. [править] dir

Вывод списка файлов и подкаталогов из указанного каталога.

DIR [диск:][путь][имя_файла] [/A]атрибуты [/B] [/C] [/D] [/L] [/N] [/O]порядок [/P] [/Q] [/S] [/T]время [/W] [/X] [/4]

[диск:][путь][имя_файла]

Диск, каталог и/или файлы, которые следует включить в список.

/A Вывод файлов с указанными атрибутами. атрибуты D Каталоги R Доступные только для чтения

H Скрытые файлы A Файлы для архивирования
S Системные файлы Префикс "-" имеет значение НЕ

/B Вывод только имен файлов. /C Применение разделителя групп разрядов для вывода размеров файлов

(по умолчанию). Для отключения этого режима служит ключ /-C.

/D Вывод списка в несколько столбцов с сортировкой по столбцам. /L Использование нижнего регистра для имен файлов. /N Отображение имен файлов в крайнем правом столбце. /O Сортировка списка отображаемых файлов. порядок N По имени (алфавитная) S По размеру (сперва меньшие)

E По расширению (алфавитная) D По дате (сперва более старые)
G Начать список с каталогов Префикс "-" обращает порядок

/P Пауза после заполнения каждого экрана. /Q Вывод сведений о владельце файла. /S Вывод списка файлов из указанного каталога и его подкаталогов. /T Выбор поля времени для отображения и сортировки время C Создание

A Последнее использование
W Последнее изменение

/W Вывод списка в несколько столбцов. /X Отображение коротких имен для файлов, чьи имена не соответствуют

стандарту 8.3. Формат аналогичен выводу с ключом /N, но короткие
имена файлов выводятся слева от длинных. Если короткого имени у
файла нет, вместо него выводятся пробелы.

/4 Вывод номера года в четырехзначном формате

Стандартный набор ключей можно записать в переменную среды DIRCMD. Для отмены их действия введите в команде те же ключи с префиксом «-», например: /-W.

Эквивалентна команде ls в unix.

[править] edisk/mbr

Изменение MBR [править] format

Форматирование диска. пример:format c:/ -будет отформатирован диск С

FORMAT том: [/FS:система] [/V:метка] [/Q] [/A:размер] [/C] [/X]

FORMAT том: [/V:метка] [/Q] [/F:размер]

FORMAT тома: [/V:метка] [/Q] [/T:дорожки /N:секторы]

FORMAT тома: [/V:метка] [/Q]

FORMAT том: [/Q]

том Указывает букву диска (с последующим двоеточием),

точку подключения или имя тома.

/FS:filesystem Указывает тип файловой системы (FAT, FAT32 или NTFS). /V:метка Метка тома. /Q Быстрое форматирование. /C Только для NTFS: Установка режима сжатия по умолчанию для

всех файлов, создаваемых на новом томе.

/X Инициирует отключение тома, в качестве первого действия, если

это необходимо. Все открытые дескрипторы тома будут неверны.

/A:размер Заменяет размер кластера по умолчанию. В общих случаях

рекомендуется использовать размеры кластера по умолчанию.
NTFS поддерживает размеры 512, 1024, 2048, 4096, 8192, 16КБ,
32КБ, 64K.
FAT поддерживает размеры 512, 1024, 2048, 4096, 8192, 16КБ,
32КБ, 64КБ, (128КБ, 256КБ для размера сектора > 512 Байт).
FAT32 поддерживает размеры 512, 1024, 2048, 4096, 8192, 16КБ,
32КБ, 64КБ, (128КБ, 256КБ для размера сектора > 512 Байт).

Файловые системы FAT и FAT32 налагают следующие ограничения
на число кластеров тома:

FAT: число кластеров <= 65526
FAT32: 65526 < число кластеров < 4177918

Выполнение команды Format будет немедленно прервано, если
будет обнаружено нарушение указанных выше ограничений,
используя указанный размер кластеров.

Сжатие томов NTFS не поддерживается для размеров кластеров
более 4096 Байт.

/F:размер Указывает размер форматируемых гибких дисков (1,44) /T:дорожки Число дорожек на каждой стороне диска. /N:секторы Число секторов на каждой дорожке. Для тех, кому интересны более подробные аспекты MS-DOS, могу посоветовать следущую книгу: dosbible.zip Как её прочитать, разбирайтесь самостоятельно:)

Особенности DOSBox

Т.к. мы работаем на виртуальном компьютере, то первый вопрос, который возникает: «Как мне получить доступ к файлам на обычном компьютере, из-под которого я запустил DOSBox?» Нужно воспользоваться следующим алгоритмом: - Открываем домашнюю папку (Переход → Домашняя папка) - Создаём папку asm, или с каким-нибудь подобным названием - Запускаем DOSBox. В командной строке пишем заклинание mount c ~/asm - Всё. Теперь в DOSBox появится диск C:\, содержимое которого в точности соответствует содержимому папки asm. Если вы меняете содержимое папки asm и хотите обновить диски виртуальной машины, то нажмите Ctrl-F4. Для справки можете воспользоваться командами HELP и INTRO в командной строке DOSBox.

Отладчик DEBUG

http://ru.wikipedia.org/wiki/Debug

Debug — Программа отладчик, которую используют для проверки и отладки выполняемых файлов. Данная программа является консольным приложением и предназначена для создания или изменения кода файлов. С помощью неё можно создавать простые приложение под MS-DOS и отслеживать их работу. Данный отладчик находится на самом низком уровне компиляторов assembler. Но обладает неплохими возможностями такими как просмотр, изменение памяти и получение состояния регистров.

Программа вызывается через командную строку:

DEBUG

DEBUG ][путь]имя_файла [параметры

DUBUG C:\мойпуть\My.com

Работа с файлами

-N -N Путь_Имя_Файла. С помощью этой команды можно загружать и сохранять файлы. Сокращённо от слова Name. -N My.com [Нажать Enter] -L Загрузка файла. Сокращённо от слова Load. -N My.com [Нажать Enter] -L [Нажать Enter] -W -W Путь_Имя_Файла. Сохранить файл. Сокращённо от слова Write. -N My.com [Нажать Enter] -W [Нажать Enter]

Writing Число_Байт bytes

Отображение и изменение значений регистров Команда Описание Пример -R Выдаёт содержание всех регистров. -R [Нажать Enter]

AX=D3E0 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=16BB ES=16BB SS=16BB CS=16BB IP=0100 NV UP DI PL NZ NA PO NC
15A3:0100 30C0 XOR AL,AL

-R [регистр] Просмотр регистра и запись нового значения в регистр. -R AX [Нажать Enter]

AX 0000

666 [Нажать Enter]

Дамп памяти -D Выдаёт содержимое памяти. Сокращённо от слова Dump. -D [Нажать Enter] -D [Начало_Сегмента] L [Конец_Сегмента] Выдаёт содержимое памяти от начального сегмента до конечного сегмента. Чтобы вывести всё память нужно ввести -D 0 L 0 [Нажать Enter] -D 0000 L 0005 [Нажать Enter]

1814:0000 CD 20 FF 9F 00 Дизассемблирование

-U Команда преобразования кода в инструкции ассемблера. Сокращённо от слова Unassemble. -U [Нажать Enter]

1814:0100 ADD [BX+SI],AL 1814:0102 XOR AL,00 Ассемблирование

-A Преобразования инструкции ассемблера в машинный кода. Сокращённо от слова Assemble. -A [Нажать Enter] 1814:0100 MOV AX,0009 1814:0103 [Вводим_Дальше] [Нажать Enter]

-G Запуск исполнения программы. Сокращённо от слова Go. -G [Нажать Enter]

Program terminated normally

-G =[Адрес_Начала_Работы] Начиная с этого адреса начинается компиляция. -G =100 -G [Адрес_Брейкпоинта] [Адрес_Брейкпоинта] … Программа запускается и выполняется пока не дойдёт до брейкпоинта после чего она остановится и выведет значения регистров да продолжения работы необходимо нажать -G. Максимальное число брейкпоинтов 10. -G 176 47d 537 647 [Нажать Enter] -T Команда имеет сходство с командой (-G) Go, но отличается тем что выводит значения регистров поле каждой инструкции. Сокращённо от слова Trace. -T [Нажать Enter] -T =[Адрес_Начала_Работы] [Количество_Иструкций] Дополнительно указывает с какого адреса запускаться программе и количество исполняемых инструкций. -T =100 5[Нажать Enter]

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

создаём папку asm в своём домашнем каталоге

скачиваем debug, tasm, turbo c, распаковываем их в asm

открываем в текстовом редаторе файл ~/.dosbox/dosbox-0.73.conf

в самом конце файла добавляем строчки

mount c ~/asm

path=z:\;c:\;c:\tasm;c:\tc

c:

запускаем DOSBox