Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Dos7book

.pdf
Скачиваний:
75
Добавлен:
09.02.2015
Размер:
5.1 Mб
Скачать

Н.Г. Хитрово

Начала

системного программирования

в среде MS-DOS7

2009

ББК 32.973.26-018.2 УДК 004.451.9dos

Н.Г.Хитрово

Начала системного программирования в среде MS-DOS7

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

Данная книга подлежит распространению в электронной форме на условиях Не-Коммерческой Свободной лицензии (Attribution-NonCommercial Public License) организации "Creative Commons" ( http://creativecommons.org/ ).

Содержание

 

 

Предисловие...........................................................................................

 

5

Глава 1. Знакомство с клавиатурой в DOS.........................................

11

Глава 2. Командная строка..................................................................

23

2.01.

Назначение имён...........................................................

24

2.02.

Спецификации путей....................................................

29

2.03.

Синтаксис командных строк.........................................

33

2.04.

Знаки в роли команд......................................................

37

Глава 3. Команды интерпретатора COMMAND.COM.......................

43

Глава 4. Команды файла CONFIG.SYS...............................................

80

Глава 5. Избранные драйверы для MS-DOS7.....................................

99

5.01

Системные службы DOS...............................................

100

5.02

Средства национальной адаптации MS-DOS7.............

105

5.03

Драйверы манипуляторов "мышь"...............................

113

5.04

Драйверы обслуживания памяти..................................

118

5.05

Драйверы RAM-дисков.................................................

129

5.06

Драйверы обслуживания дисковых накопителей........

134

5.07

Драйверы контроллеров интерфейса............................

139

5.08

Службы устанавливаемых файловых систем..............

151

5.09

Драйверы оптических дисководов................................

157

Глава 6. Избранные программы для MS-DOS7..................................

163

Глава 7. Ассемблерные команды отладчика DEBUG.EXE.................

244

7.01

Управляющие инструкции отладчика..........................

245

7.02

Префиксы......................................................................

247

7.03

Команды, исполняемые центральным процессором....

256

7.04

Команды для арифметического сопроцессора..............

307

Глава 8. Вызовы обработчиков прерываний.......................................

333

8.01

Обработчики от BIOS (INT 00 – INT 1C).....................

335

8.02

Обработчики от MS-DOS7 (INT 20 – INT 2E)..............

384

8.03

Обработчики от драйверов и резидентных программ..

435

Глава 9. Примеры композиции исполняемых файлов.........................

471

9.01

Примеры простых конфигурационных файлов............

472

9.02

Командные файлы для отладчика DEBUG.EXE..........

479

9.03

Примеры batch-файлов..................................................

486

9.04

Конфигурации с перебазированием на RAM-диск......

500

9.05

Примеры простейших программ...................................

505

9.06

Программа ввода данных в переменную окружения....

509

 

– 3 –

 

9.07

Рекомендации по проверке и испытанию программ....

522

9.08

Давайте попробуем написать драйвер..........................

529

9.09

Адаптивная загрузка на незнакомый компьютер.........

537

9.10

Эксперименты с линейной адресацией.........................

549

9.11

Альтернативные варианты загрузки MS-DOS7...........

574

Приложения...........................................................................................

 

588

A.01

Основные системные структуры данных.....................

588

A.02

Коды клавиатуры и национальная адаптация.............

593

A.03

Системные данные для доступа к дискам....................

605

A.04

Таблицы данных для управления вводом-выводом....

613

A.05

Структуры данных для драйверов................................

616

A.06

Коды ошибок.................................................................

623

A.07

Структуры данных для исполнения программ............

631

A.08

Таблицы параметров флоппи-дисководов...................

639

A.09

Структуры данных для файлов и каталогов................

641

A.10

Таблицы данных видеосистемы...................................

647

A.11

Спецификации оборудования компьютера..................

654

A.12

Управление выделением и обслуживанием памяти....

661

A.13

Таблицы параметров жестких магнитных дисков......

671

A.14

Порты............................................................................

680

A.15

Таблицы параметров оптических дисков....................

687

A.16

Словарь используемых аббревиатур............................

693

– 4 –

Предисловие

Внаше время "окна" Windows-2000/XP стали привычным элементом интерьера.

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

Каждому "продвинутому" пользователю однажды становится ясно, что дальше корректирования параметров реестра операционная система Windows никого не пустит. Для тех, кто стремится понять компьютер глубже, все дальнейшие пути ведут за рамки "окон" операционной системы Windows. Но там, за "окнами" – темно, и кажется, будто не на что опереться. Если все же Вы намерены сделать следующий шаг, то эта книга для Вас.

0.01Прикладное и системное программирование.

Понятно, что все компьютерные "чудеса" сотворены разными программами, каждая из которых играет свою роль. Программы бывают прикладные и системные. Например, текстовый редактор WORD – типичная прикладная программа, потому что ей для работы необходима среда операционной системы Windows. А системными называют те программы, которые образуют, конфигурируют и обслуживают ту самую операционную среду.

Сейчас много внимания уделяют прикладному программированию. Фирма Microsoft – разработчик операционной системы Windows – пропагандирует свой программный пакет VISUAL STUDIO, включающий несколько языков программирования высокого уровня. Интерес фирмы прост: чем больше будет написано прикладных программ, нуждающихся в операционной среде Windows, тем больше экземпляров этой операционной системы удастся продать.

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

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

Ксистемным программам относятся не только сами операционные системы, но

идрайвера различных устройств, прошивки BIOS (базовой системы ввода-вывода), а также сервисные, диагностические и восстановительные программы, к помощи

5 –

Предисловие

которых приходится прибегать в случае отказа основной операционной системы компьютера. Все они построены и совершенствуются посредством системного программирования. Обучение решению таких задач всегда было важным элементом профессионального образования по компьютерным специальностям. Как правило, системное программирование преподают на базе низкоуровневого языка ассемблера (MASM или TASM) в среде документированных версий дисковой операционной системы фирмы Microsoft (MS-DOS).

К нашему времени все документированные версии MS-DOS устарели настолько, что не обеспечивают даже доступа к дискам большого объема, используемым в современных компьютерах. А современные операционные системы защищают себя и аппаратные средства компьютера, отвечая на каждую попытку прямого вызова системных функций сообщением: "Ваша программа совершила недопустимую операцию и будет закрыта". Тем не менее, выход есть: существуют операционные среды, которые способны обеспечить прямое исполнение системных операций и могут быть инсталлированы на современных компьютерах. Цель данной книги состоит как раз в том, чтобы научить Вас работе с такой операционной средой, а также решению несложных системных задач в этой среде, причем без премудростей языка ассемблеров MASM или TASM.

0.02Режимы работы: защищенный и реальный.

Защита от исполнения недопустимых операций аппаратно обеспечивается защищенным режимом работы процессоров. Помимо собственно защиты, он предоставляет ряд важных преимуществ, и потому стал основным для всех современных операционных систем. При защищенном режиме все действия

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

В противоположность тому реальный режим это "беззащитный" режим эмуляции команд давно устаревшего процессора 8086. Казалось бы, пора уже отправить этот анахронизм на покой. Но проходят годы, сменяют друг друга поколения процессоров, а он по-прежнему жив. Поддержка реального режима сохраняется, потому что он, как оказывается, необходим, и притом не для архаичных, а для самых современных систем. Реальный режим необходим базовой системе ввода-вывода (BIOS), которая иначе не смогла бы "инвентаризировать" и тестировать аппаратные средства компьютера. Именно с этой целью центральный

процессор автоматически устанавливается в реальный режим при включении электропитания. Операционным системам, даже самым современным, для

– 6 –

Предисловие

обретения "власти" над ресурсами компьютера также необходимо стартовать не в защищенном, а в "беззащитном" реальном режиме.

Получив управление в свои "руки", операционные системы серии Windows подготавливают переход в защищенный режим так, что после перехода высший (нулевой) уровень привилегий получает сама система Windows, а пользователям и прикладным программам достается низший (третий) уровень привилегий. Из-за этого изменить "расклад прав" пользователь уже никогда не сможет. По той же причине в защищенном режиме все возможности за пределами круга API-функций системы Windows становятся недоступны для прикладных программ.

Сейчас обычная практика пользователя вообще не предполагает знакомства с работой за пределами низшего уровня привилегий. Доминирует противоположная концепция разграничения пользовательских и системных сфер разумения. Считается, что избыточное любопытство пользователя априори опасно и должно быть пресечено. Современные операционные системы хорошо защищены защищенным режимом ... от Вас. Каковы же альтернативы?

0.03.Почему MS-DOS 7 ?

Если операционная система не ограничивает права пользователя низшим уровнем привилегий, то при прочих равных условиях она неизбежно проигрывает по стабильности и надежности. В этом одна из причин вытеснения старомодных операционных систем типа DOS более современными. Но ситуация радикально изменяется, когда дело доходит до системных задач, которые нельзя решить без предоставления специалисту неограниченных прав доступа. Тогда тот же недостаток DOS становится решающим преимуществом и делает ее незаменимой. Все загрузочные дискеты диагностические, сервисные, восстановительные, которые требуют наличия операционной системы, используют именно DOS. DOS применяется также в загрузочных оптических дисках. Наконец, DOS намного проще других операционных систем, и потому освоение системных операций целесообразно начинать именно с нее.

Распространено мнение, что DOS – операционная система реального режима. Это верно лишь отчасти: DOS начинает работать в реальном режиме, но может быть переведена в защищенный режим либо драйвером (5.04-02), либо самим пользователем, причем тогда Вы сами вправе присвоить высший уровень привилегий себе. Только в таком случае процессор будет повиноваться любым Вашим командам, в том числе тем, которые исполняются лишь на высшем уровне привилегий. Ни одна другая операционная система свой уровень привилегий Вам не отдаст. Только среда DOS обеспечит Вам полную свободу действий как в реальном, так и в защищенном режиме.

– 7 –

Предисловие

Практическая потребность в операционной среде реального режима вынуждает заинтересованных поставщиков программного обеспечения продолжать совершенствование DOS. Независимо от ведущих фирм продвигается работа над проектом FreeDOS (http://www.freedos.org/ ). Недавно появилась новая платная версия ROM-DOS (http://www.datalight.com/ ), Находят своего потребителя также несколько менее "свежих" разновидностей DOS. Написано большое количество драйверов, придающих устаревшим официальным версиям DOS (MS-DOS 6.22, PC DOS 2000 и др.) новые способности, в том числе доступ к дискам с файловыми системами FAT-32 и NTFS, которые сейчас широко распространены. Но драйверы, не включенные в состав ядра операционной системы, не дают возможности устанавливать ее на такие диски.

Если бы Вы рискнули приобрести компьютер без покупки операционной системы, то обнаружили бы в нем типичную строку приглашения DOS и жесткий магнитный диск с файловой системой FAT-32. Но ни одна из упомянутых выше версий DOS, скорее всего, не имела бы к этому никакого отношения. Начальную инициализацию компьютеров обычно выполняют с помощью средств, поставляемых фирмой Microsoft на загрузочных дискетах к операционным системам Windows-95 OSR2 или Windows-98. Официально это называется "загрузкой в командную строку".

Несложно убедиться, однако, что "загрузка в командную строку" представляет собой типичную версию DOS. Внутри почти каждого файла на загрузочной дискете имеется строка: "MS-DOS Version 7...". Седьмая версия MS-DOSэто и есть та самая недокументированная операционная среда фирмы Microsoft, которая представляет для нас наибольший интерес. Если попытаться уточнить номер версии DOS с помощью функции INT 21\AH=30h (8.02-22), то она возвратит значение 07.0Ah, то есть в десятичной форме 7.10. Далее в этой книге при всех упоминаниях MS-DOS7 будет иметься ввиду именно эта версия.

MS-DOS7это не последняя из версий MS-DOS. В комплекте поставки операционной системы Windows-ME содержится восьмая версия MS-DOS. Она перекомпилирована под современные процессоры и стала более компактной, но при этом утратила совместимость с некоторыми вариантами 486-х процессоров. Кроме того, в процессе загрузки основной операционной системы Windows-ME она не играет активной роли и не позволяет строить сценарии загрузки. Однако во всех других отношениях MS-DOS7 и MS-DOS8 очень близки, так что почти все материалы данной книги в равной мере применимы к ним обоим. Везде, где свойства MS-DOS7 и MS-DOS8 не совпадают, их отличия специально оговорены.

– 8 –

Предисловие

0.04О чем эта книга.

Системное программирование - обширная тема, которая не вмещается в разумные пределы объема книги. Потому эта книга не претендует на полноту: несколько больших разделов (например, сети) пришлось исключить. Ряд других вопросов изложен лишь настолько, насколько это достаточно для понимания.

Главы 1 - 4 этой книги знакомят читателя с клавиатурой, с композицией командных строк и со встроенными командами. Эти короткие главы адресованы тем, кому приходится осваивать MS-DOS7 "с нуля".

Глава 5 представляет наиболее важные драйверы для компьютерного оборудования, в том числе самые современные, разработанные в течение 2004 – 2008 гг. Глава 6 – это обзор полезных программ (утилит) для MS-DOS7. В нем много внимания уделено главному инструменту программирования в MS-DOS7отладчику DEBUG.EXE. Ассемблерным командам отладчика посвящена отдельная глава 7. Затем глава 8 описывает различные служебные функции, которые доступны в MS-DOS7 через прерывания.

В главе 9 представлены конкретные примеры системного программирования с использованием средств из стандартной поставки WINDOWS-95/98 для написания сервисных программ и составления конфигурационных файлов. Примеры помогут

Вам создать аналогичные сервисные и конфигурационные файлы применительно к Вашим задачам, а также покажут разнообразие возможностей, которые MS-DOS7 открывает перед теми, кто умеет ее правильно попросить.

Завершают книгу 16 тематических приложений. Они включают много таблиц со справочными данными, относящимися как собственно к MS-DOS7, так и к аппаратуре AT-совместимых компьютеров. Последнее приложение словарь с объяснениями всех англоязычных аббревиатур, встречающихся в этой книге.

0.05Еще несколько замечаний.

Ведущие фирмы давно пытаются навязать пользователям операционные системы без лазеек для доступа к реальному режиму. Но ни OS/2 (IBM, 1989), ни Windows-NT (Microsoft, 1994) популярными не стали. Очередная попытка с Windows-2000 открыла возможность использования средств MS-DOS7 на дисках с файловой системой FAT-32. Как только успех Windows-2000 стал очевиден, тотчас последовало решение прикончить весь конкурирующий выводок версий Windows95/98/ME. Однако это решение не устранило необходимости в реальном режиме и не предложило новых инструментов для работы в нем. Изменилось другое: теперь больше нет причин ожидать появления такой новой версии DOS, которая смогла бы обесценить Ваши усилия по освоению MS-DOS7.

– 9 –

Предисловие

В 2002 году поводом для новых ожиданий предстоящего обновления стала разработка компанией Intel процессора Itanium, не поддерживающего старомодный 16-битный машинный код. Все прежние программные средства реального режима, включая MS-DOS7, утратили бы свое значение с появлением новых компьютеров, имеющих 32-битный код BIOS, и тогда эту книгу не стоило бы писать. Но с тех пор прошло уже 7 лет, а ожидаемое чудо не случилось. Массовые персональные компьютеры с процессором Itanium так и не появились. Следует признать, что сохранение поддержки 16-битного кода во всех более новых процессорах имеет под собой весомые основания. И пока эти основания имеются, умение пользоваться DOS не перестанет быть актуальным и полезным для Вас.

Как запустить MS-DOS7? Если у Вас уже установлены Windows-95 OSR2 или Windows-98, то просто: придерживайте нажатой клавишу F8 в момент начала загрузки операционной системы, и тогда на экран будет выведено загрузочное меню. В нем надо выбрать вариант загрузки в командную строку ("command prompt only") – и готово. Если у Вас операционная система типа Windows-95/98 не установлена, то достаньте загрузочную дискету к ней, и загрузите компьютер с этой дискеты. Подходящие образы загрузочных дискет выложены на многих сайтах сети Интернет, например, на сайте http://www.bootdisk.com/ . После стандартной загрузки MS-DOS7 предстанет перед Вами в виде пустой и неуютной командной строки. Но в разделах 6.25 и 9.01 этой книги Вы найдете примеры того, как сделать экран DOS гораздо более информативным, удобным и дружественным. А в разделе 9.11 дано детальное описание разных вариантов запуска MS-DOS7, включая ее установку на диск с операционной системой Windows-XP.

Эта книга не основана на официальных материалах по MS-DOS7, так как они, насколько известно, не опубликованы до сих пор. Во всем, что здесь написано, повинен только автор. Несмотря на искреннее стремление проверить все-все-все, 100%-гарантии достоверности приводимых сведений автор дать не может: аппаратурная база проверок ограничена, располагаемые ресурсы не бесконечны. Кроме того, с течением времени многое изменяется от компьютерного "железа" до адресов в Интернете. Из-за таких обстоятельств автор не может нести ответственность за последствия Ваших действий, даже если они инспирированы этой книгой. Любое дело, сопряженное с риском, требует осторожности и умения. Однако есть надежда на то, что благодаря этой книге Ваши действия смогут стать умелыми, безопасными и результативными.

Ваши замечания по содержанию книги просьба высылать по адресу For-H@yandex.ru. Все они будут с благодарностью приняты.

– 10 –

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]