Книга представляет собой простое введение в программирование для защищённого режима широко распространённых процессоров Intel 80286/80386/80486. В отличие от зарубежных авторов аналогичных книг, переведённых на русский язык, мы сконцентрировали своё внимание на практической стороне использования защищённого режима работы процессоров. В книге приведено большое количество программ, составленных на языках Си и ассемблера, поэтому вы сразу сможете проверить полученные вами знания на практике. Все описанные программы записаны на дискете, которую вы можете купить вместе с книгой. Программы подготовлены в среде Borland C 3.0, хотя можно воспользоваться и Borland C 2.0 или Borland C 3.1. Приведённые примеры нетрудно адаптировать для транслятора Microsoft Quick C.
Наша книга не похожа на справочник по процессорам i80286 и i80386 - подобной литературы издано уже достаточно много и она легко доступна. К тому же для составления работоспособных программ защищённого режима недостаточно владеть только информацией о работе процессора, нужны ещё знания некоторых аппаратных особенностей персонального компьютера и особенностей используемых операционных систем. Поэтому мы не стремились описать тонкости работы всех команд процессора в защищённом режиме - всё это есть в справочниках. Вместо этого мы приведём сведения, которые позволят вам сразу приступить к составлению собственных программ, работающих в защищённом режиме, в частности, драйверов аппаратуры и мультизадачных мониторов, программ, активно работающих с большими массивами данных. За основу вы можете взять примеры программ, приведённых в книге.
Для тех, кто ещё не знаком с защищённым режимом работы, скажем, что этот режим является основным и естественным режимом работы процессоров i80286, i80386 и i80486. Только в защищённом режиме полностью реализуются все возможности, заложенные в архитектуру процессоров. Защищённый режим работы используется во многих программных продуктах, таких как операционные системы UNIX, XENIX, OS/2, PC-MOS, QNX, Desk View, сетевых операционных системах NOVELL, в операционной системе Microsoft WINDOWS, в драйверах расширенной памяти EMM386 и QEMM, в СУБД ORACLE. Хорошо известная система разработки программного обеспечения Borland C также может работать в защищённом режиме, при этом её производительность заметно возрастает. Перспективная операционная система Microsoft WINDOWS NT также использует защищённый режим работы процессора. Новая версия 6.0 операционной системы MS-DOS будет активно использовать защищённый режим работы процессора.
В настоящее время в области программного обеспечения отчётливо прослеживается тенденция ориентации на оболочку Microsoft WINDOWS, пользующейся огромной популярностью во всём мире. Однако не все знают, что Microsoft WINDOWS - это не только прекрасная графика, продуманный дизайн и удобство в работе. Все программы, разрабатываемые специально для WINDOWS, работают в защищённом режиме и они используют всю мощь современных процессоров и все возможности компьютера (в отличии от программ, ориентированных только на MS-DOS).
Поэтому если вы планируете составлять программы для WINDOWS, вам совершенно необходимо знать особенности работы процессора в защищённом режиме. Особенно, если вы будете разрабатывать драйверы или другие программы, работающие с аппаратурой, либо если ваши программы будут обратаывать большие массивы данных (порядка нескольких мегабайт или даже несколько десятков мегабайт). Наша книга может стать для вас первым шагом к программированию для мультизадачных операционных систем, таких как WINDOWS, OS/2 или UNIX.
Наиболее очевидны преимущества защищённого режима для решения задач, связанных с обработкой больших массивов данных. Например, для обработки графических данных, полученных со сканера при количестве градаций серого, равном 256, может потребоваться несколько десятков мегабайт оперативной памяти. Механизм так называемой виртуальной памяти, реализованный в процессорах i80386 и i80486 (и работающий только в защищённом режиме) позволяет предоставить программам практически неограниченный объём виртуальной оперативной памяти, реализованной с использованием магнитного диска.
Даже если вы составляете программы, ориентированные только на MS-DOS, вам всё равно придётся столкнуться с защищённым режимом работы процессора. Это связано с тем, что для увеличения доступного программам объёма оперативной памяти часто используются драйверы расширенной памяти EMM386 или QEMM. Если установлен один из этих драйверов, процессор работает уже не в реальном режиме, а в так называемом режиме "виртуального процессора 8086" (в который он попадает из защищённого режима). Если ваша программа (предназначенная для работы в MS-DOS) запущена в среде WINDOWS в режиме "386 Enhanced Mode", она также будет выполняться процессором в режиме "виртуального процессора 8086".
Если при разработке программы, ориентированной на MS-DOS, не принимать во внимание возможность работы на "виртуальном процессоре", она может оказаться несовместимой с WINDOWS или драйверами EMM386 или QEMM.
Таким образом, разрабатывая программу для MS-DOS, вам следует продумать вопросы совместимости с драйверами расширенной памяти и оболочкой WINDOWS. А для этого вы должны знать особенности защищённого режима и режима виртуального процессора 8086.
Кроме обеспечения корректной работы в виртуальном режиме процессора, знание особенностей защищённого режима позволит вам наиболее полно и эффективно использовать такой ресурс компьютера, как расширенная оперативная память.
О содержании книги.
В первой главе книги мы приводим основные теоретические сведения о работе процессора в защищённом режиме. При этом мы не претендуем на полноту описания возможностей процессора, так как на этом этапе наша цель - дать минимум знаний, необходимых для того, чтобы приступить к составлению первых программ, работающих в защищённом режиме. В списке литературы есть ссылки на справочники и другие книги, в которых описана работа всех команд в защищённом режиме и приведены форматы всех регистров. Мы же сконцентрируем внимание на практическом использовании защищённого режима в компьютере IBM AT и других компьютерах, выполненных на базе процессоров i80286, i80386, i80486.
Вторая глава книги содержит простой пример программы, переводящей процессор i80286 в защищённый режим и возвращающий его обратно. На примере этой программы вы сможете получить представление о том, как выполняются процедуры входа процессора в защищённый режим работы и возврата в реальный режим работы.
Третья глава посвящена прерываниям и исключениям в защищённом режиме. Вы поймете разницу между механизмами прерываний реального и защищённого режимов, на конкретном примере программы научитесь обрабатывать аппаратные и программные прерывания, а также исключения в защищённом режиме. Будут рассмотрены вопросы инициализации контроллера прерываний для работы в защищённом режиме.
Четвёртая глава содержит сведения об использовании мультизадачных возможностей, реализованных в процессоре i80286 аппаратно. Мы приведём пример простого мультизадачного монитора и на его примере покажем, как можно организовать разделение процессорного времени между одновременно выполняющимися задачами. Кроме того, мы рассмотрим вопросы синхронизации выполнения задач и использование семафоров.
Пятая глава посвящена особенностям процессоров i80386 и i80486. Мы расскажем об уникальной схеме преобразования адресов, позволяющей программам адресовать практически неограниченный объём памяти. Будут рассмотрены особенности обработки прерываний и мультизадачности, а также режим виртуального процессора 8086.
В шестой главе описана иерархия средств, доступных обычным DOS-программам для работы в защищённом режиме.
В этой главе описаны средства BIOS, которые программа может использовать для переключения в защищённый режим и для доступа к расширенной памяти, интерфейсы VCPI и DPMI, а также расширители DOS для работы в защищённом режиме - DOS-экстендеры.
Интерфейс VCPI (Virtual Control Programm Interface), облегчает составление программ, использующих защищённый режим работы процессоров. Этот интерфейс доступен в тех случаях, когда в компьютере установлен процессор i80386 или i80486 и используется драйвер расширенной памяти, аналогичный EMM386 или QEMM.
Интерфейс DPMI представляет собой интерфейс более высокого уровня, чем VCPI. Этот интерфейс доступен в среде WINDOWS версий 3.0 или 3.1, работающей в режиме "386 Enhanced Mode".
Седьмая глава посвящена операционной системе Microsoft WINDOWS. Эта операционная система позволяет использовать не только программы, разработанные специально для неё, но и обычные DOS-программы. При работе WINDOWS в расширенном режиме "386 Enhanced Mode" DOS-программы получают дополнительные возможности. Они могут переключаться в защищённый режим и обратно (в режим виртуального процессора 8086), могут обмениваться информацией с программами WINDOWS с помощью механизма CLIPBOARD (стандартного для программ WINDOWS механизма обена информацией).
Мы рассмотрим также некоторые вопросы совместной работы резидентных программ DOS и драйверов DOS с операционной системой WINDOWS.
Авторы выражают благодарность Максиму Синёву
за ценные рекомендации по содержанию книги и за
существенную помощь, оказанную при работе над
разделом, посвящённым DOS-экстендерам. Мы также
благодарим всех сотрудников АО Диалог-МИФИ,
принимавших участие в подготовке книги к
изданию.