Системное программное обеспечение. Особенности программирования 32-разрядных процессоров. Рощин А.В. - 30 стр.

UptoLike

Составители: 

30
GDT.
В принципе теперь можно перейти в защищенный режим. Однако
мы запускаем нашу программу под управлением DOS (а как ее еще можно
запустить?) и естественно завершить ее также обычным образом, чтобы не
нарушить работоспособность системы. Но в защищенном режиме
запрещены любые обращения к функциям DOS или BIOS. Причина этого
совершенно очевиднаи DOS, и BIOS являются программами реального
режима, в которых широко используется сегментная адресация реального
режима, т.е. загрузка в сегментные регистры сегментных адресов. В
защищенном же режиме в сегментные регистры загружаются не
сегментные адреса, а селекторы. Кроме того, обращение к функциям DOS
и BIOS осуществляется с помощью команд int с определенными номерами,
а в защищенном режиме эти команды приведут к совершенно другим
результатам. Следовательно, программу, работающую в защищенном
режиме, нельзя завершить средствами DOS. Сначала ее надо вернуть в
реальный режим.
Возврат в реальный режим можно осуществить сбросом процессора.
Действия процессора после сброса определяются одной из ячеек КМОП-
микросхемыбайтом состояния отключения, располагаемым по адресу Fh.
В частности, если в этом байте записан код Ah, после сброса управление
немедленно передается по адресу, который извлекается из двухсловной
ячейки 40h:67h, расположенной в области данных BIOS. Таким образом,
для подготовки возврата в реальный режим необходимо в ячейку 40h:67h
записать адрес возврата, а в байт Fh КМОП-микросхемы занести код Ah.
Приведенный способ возврата в реальный режим использовался в
процессорах i286 (так как другого способа возврата в нем предусмотрено
не было).
В процессорах, начиная с i386, переход из реального режима в
защищенный и обратно может осуществляться с использованием
GDT.
       В принципе теперь можно перейти в защищенный режим. Однако
мы запускаем нашу программу под управлением DOS (а как ее еще можно
запустить?) и естественно завершить ее также обычным образом, чтобы не
нарушить работоспособность системы. Но в защищенном режиме
запрещены любые обращения к функциям DOS или BIOS. Причина этого
совершенно очевидна – и DOS, и BIOS являются программами реального
режима, в которых широко используется сегментная адресация реального
режима, т.е. загрузка в сегментные регистры сегментных адресов. В
защищенном же режиме в сегментные регистры загружаются не
сегментные адреса, а селекторы. Кроме того, обращение к функциям DOS
и BIOS осуществляется с помощью команд int с определенными номерами,
а в защищенном режиме эти команды приведут к совершенно другим
результатам. Следовательно, программу, работающую в защищенном
режиме, нельзя завершить средствами DOS. Сначала ее надо вернуть в
реальный режим.
       Возврат в реальный режим можно осуществить сбросом процессора.
Действия процессора после сброса определяются одной из ячеек КМОП-
микросхемы – байтом состояния отключения, располагаемым по адресу Fh.
В частности, если в этом байте записан код Ah, после сброса управление
немедленно передается по адресу, который извлекается из двухсловной
ячейки 40h:67h, расположенной в области данных BIOS. Таким образом,
для подготовки возврата в реальный режим необходимо в ячейку 40h:67h
записать адрес возврата, а в байт Fh КМОП-микросхемы занести код Ah.
Приведенный способ возврата в реальный режим использовался в
процессорах i286 (так как другого способа возврата в нем предусмотрено
не было).
       В процессорах, начиная с i386, переход из реального режима в
защищенный     и обратно может     осуществляться   с использованием


                                    30