Защищенный режим процессоров Intel

       

Защищенный режим процессоров Intel

Хорошо известная система разработки программного обеспечения Borland C также может работать в защищённом режиме, при этом её производительность заметно возрастает. Перспективная операционная система Microsoft WINDOWS NT также использует защищённый режим работы процессора. Новая версия 6.0 операционной системы MS-DOS будет активно использовать защищённый режим работы процессора.
В настоящее время в области программного обеспечения отчётливо прослеживается тенденция ориентации на оболочку Microsoft WINDOWS, пользующейся огромной популярностью во всём мире. Однако не все знают, что Microsoft WINDOWS - это не только прекрасная графика, продуманный дизайн и удобство в работе. Все программы, разрабатываемые специально для WINDOWS, работают в защищённом режиме и они используют всю мощь современных процессоров и все возможности компьютера (в отличии от программ, ориентированных только на MS-DOS).
Поэтому если вы планируете составлять программы для WINDOWS, вам совершенно необходимо знать особенности работы процессора в защищённом режиме. Особенно, если вы будете разрабатывать драйверы или другие программы, работающие с аппаратурой, либо если ваши программы будут обратаывать большие массивы данных (порядка нескольких мегабайт или даже несколько десятков мегабайт). Наша книга может стать для вас первым шагом к программированию для мультизадачных операционных систем, таких как WINDOWS, OS/2 или UNIX.

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

Создание алиасного дескриптора для сегмента кода
Так как в защищённом режиме модификация сегмента кода с использованием селектора CS невозможна, для решения такой задачи необходимо создать дескриптор сегмента данных, который бы указывал на сегмент кода (т.е. имел бы такой же базовый адрес и предел). Такой дескриптор является алиасом дескриптору сегмента кода и может быть создан при помощи функции 000Ah.

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

Установить дескриптор
Функция позволяет получить дескриптор по его селектору. Регистры на входе AX 000Dh BX Селектор сегмента, для которого требуется получить дескриптор. Регистры на выходе: CARRY 0, если функция выполнилась без ошибки, 1, если произошла ошибка.