Защищённый режим:

Глава 8. Регистры управления.

        Все 32-разрядные процессоры, начиная с i386, имеют набор системных регистров, предназначенных для использования в защищённом режиме. Среди них есть регистры управления (Control Registers) CR0, CR1, CR2, CR3 и CR4.
        Регистры управления, в основном, состоят из флагов. Назначение и использование каждого флага достаточно сложно и требует отдельного рассмотрения. Для начала мы рассмотрим только один бит PE регистра CR0, отвечающего за переход процессора в защищённый режим и обратно. Полный список с описаниями регистров CRi приводится в приложении "Регистры управления CRi".
        Регистры управления предназначены для считывания и записи информации. Они имеют размер в 32 бита и оперировать ими можно только целиком - считали значение целого регистра, изменили нужные биты и записали обратно. Единственная команда, которой позволен доступ к этим регистрам - это MOV, в качестве операнда которой используется 32-разрядный регистр общего назначения.
        В дальнейших главах мы будем рассматривать переход в защищённый режим и возврат из него в режим реальных адресов, для чего будем использовать только один бит из регистра CR0 - это нулевой бит, который называется PE (Protection Enable). Если установить этот бит в 1, процессор перейдёт в защищённый режим, если сбросить - то в режим реальных адресов.
        Процессор после аппаратного сброса переходит в режим реальных адресов и бит PE сброшен.
        Вот примеры использования бита PE:

1. Переводим процессор в защищённый режим.

	mov	eax,cr0	; Копируем в EAX содержимое регистра CR0.

	or	al,1		; Устанавливаем в копии 0-й бит, который
				;  соответствует 0-му биту CR0, т.е. биту PE.

	mov	cr0,eax	; Записываем в CR0 обновлённое значение.
				; Процессор перешёл в защищённый режим.

	...			; 1-я команда программы, которая выполнится
				;  в защищённом режиме.

2. Переводим процессор в режим реальных адресов.

	mov	eax,cr0
	and	al,0feh	; Сбрасываем бит PE.
	mov	cr0,eax	; Процессор перешёл в режим реальных адресов.


        На самом деле, если вы просто выполните переход в защищённый режим, как показано на приведенном выше примере, то процессор зависнет. Для работы в защищённом режиме процессор использует дескрипторы сегментов, вместо их адресов (которые находятся в сегментных регистрах), поэтому прежде, чем перевести процессор в защищённый режим, нужно провести некоторые подготовительные работы.

Следующая глава Оглавление Вопросы? Замечания? Пишите: sasm@narod.ru

  Copyright © Александр Семенко.
TopList

Hosted by uCoz