Аппаратные особенности
На рис. 6.2 приведена блок-схема микропроцессора 80286. Она, в отличие от микропроцессоров 80186/80188, не содержит в себе встроенных контроллеров. Вместо них он содержит блок управления памятью, иначе MMU (Memory-Management Unit), который на блок-схеме назван блоком адресации (address unit). Ознакомление с блок-схемой показывает, что адресные выводы А23—А0, а также выводы BUSY , CAP, ERROR , PEREQ и РЕАСК являются новыми, или добавленными, выводами, которых нет в микропроцессоре 8086.
Сигналы BUSY , ERROR , PEREQ и РЕАСК используются при работе с сопроцессором, примером которого является 80287. Аналогичный вывод TEST процессора 8088/8086 в процессоре 80286 называется BUSY. Шина адреса разрядностью 24 бита позволяет адресовать 16 Мбайт физической памяти. Вывод САР соединяется с конденсатором емкостью 0,047 мкФ +20% с рабочим напряжением 12 В, который в свою очередь подключают к нулевому потенциалу. Конденсатор необходим для работы внутреннего делителя частоты. Для сравнения на рис. 6.3 приведены условные схемы обозначения микропроцессоров 8086 и 80286. Следует заметить, что микропроцессор 80286 не имеет мультиплексированной шины адреса/данных.
Микропроцессор 80286 работает в реальном и защищенном режимах. В реальном режиме работы микропроцессор 80286, используя только 16-разрядную шину адреса, адресует лишь 1 Мбайт памяти и, в сущности, является идентичным с микропроцессором 8086. В защищенном режиме работы микропроцессор 80286, используя все 24 разряда, адресует уже 16 Мбайт физической памяти.
В состав микропроцессора 80286, кроме регистра EFLAGS, добавлены еще регистр слова состояния машины (MSW), регистр задачи (TR), регистры таблиц дескрипторов (GDTR, IDTR, LDTR) и 6 регистров расширения сегментных регистров.
Рис. 6.2 Блок-схема микропроцессора 80286 |
Рис. 6.3. Схемы обозначения микропроцессоров 8086 и 80286 |
Система команд
Система команд микропроцессора 80286 включает все команды процессоров 8086/8088 и имеет ряд дополнительных команд. Дополнительные команды управляют системой виртуальной памяти с помощью блока управления памятью микропроцессора 80286. В табл. 6.1 перечислены все эти команды с комментариями относительно назначения каждой из них. Здесь приведены только дополнительно добавленные в микропроцессоре 80286 команды. Кроме них система команд микропроцессора 80286 содержит новые, добавленные еще и для микропроцессоров 80186/80188 команды, такие как: INS, OUTS, BOUND, ENTER, LEAVE, PUSHA, POPA, а также команды целочисленного умножения на константу и команды сдвигов, включая циклические, с указанием счетчика в константе.
Таблица 6.1.
Дополнительные команды микропроцессора 80286
Команда | Назначение |
CLTS | Сбрасывает бит флага переключения задач |
LGDT | Загружает из памяти регистр глобальной таблицы дескрипторов |
SGDT | Сохраняет в памяти содержимое регистра глобальной таблицы дескрипторов |
LIDT | Загружает из памяти регистр таблицы дескрипторов прерываний |
SIDT | Сохраняет в памяти содержимое регистра таблицы дескрипторов прерываний |
LLDT | Загружает из регистра или памяти регистр локальной таблицы дескрипторов |
SLOT | Сохраняет в регистре или в памяти содержимое регистра локальной таблицы дескрипторов |
LMSW | Загружает регистр состояния машины (MSW) |
SMSW | Сохраняет содержимое регистра состояния машины |
LAR | Загружает права доступа дескриптора |
LSL | Загружает граничное значение сегмента |
STR | Сохранение содержимого регистра задачи |
LTR | Загружает регистр задачи |
ARPL | Приводит уровень привилегии к наибольшему значению |
VERR | Проверяет сегмент на возможность считывания |
VERW | Проверяет сегмент на возможность записи |
Ниже следует описание некоторых специальных команд, которые используются для управления защитой.
□ CLTS
Команда CLTS (clear task-switched flag) сбрасывает бит флага переключения задач TS (task-switched) в регистре состояния машины MSW (machine state word). Если флаг TS установлен и следующая команда, относящаяся к сопроцессору 80287, вызовет прерывание (тип вектора 7). Это позволяет программно определить, относится ли контекст сопроцессора к текущей задаче. Команда clts используется в системе и считается привилегированной командой, поскольку она может выполняться только в защищенном режиме с нулевым уровнем привилегий. Команды для установки флага TS не существует. Однако установить флаг можно при помощи записи логической единицы в бит 3 (TS) регистра состояния машины MSW с использованием команды lmsw.
□ LAR
Команда LAR (load access rights) считывает дескриптор сегмента и размещает копию байта прав доступа в 16-разрядный регистр. Примером является команда LAR ах, вх, которая загружает регистр АХ байтом прав доступа из выбранного дескриптора по значению селектора, указанного в регистре ВХ. Команда используется для получения прав доступа, чтобы она могла быть проверена перед программным использованием сегмента памяти, описанного дескриптором.
□ LSL
Команда LSL (load segment limit) загружает в выделенный для пользователя регистр граничное значение сегмента. Например, команда LSL ах, вх загружает в регистр АХ граничное значение сегмента, описываемое дескриптором, который выбирается селектором, указанным в регистре ВХ. Эта команда используется для проверки граничного значения сегмента.
□ ARPL
Команда ARPL (adjust requested privilege level) используется для проверки селектора, чтобы уровень привилегий запрашиваемого селектора не нарушался. Примером является команда ARPL ах, CX. Регистр АХ содержит запрашиваемый уровень привилегий, а СХ содержит значения селектора вызывающего процесса для доступа к дескриптору. Если запрашиваемый уровень привилегий имеет приоритет ниже, чем у проверяемого дескриптора, то устанавливается флаг нуля ZF. Использование команды гарантирует, что параметр-селектор в подпрограмме не запросит большего уровня привилегированности, чем ему позволит вызывающий процесс.
□ VERR
Команда VERR (verify for read access) проверяет сегмент на возможность считывания. Это означает, что сегмент кода может иметь защиту от несанкционированного чтения. Если считывание из сегмента кода разрешено, то устанавливается флаг нуля ZF, если же не разрешено, то флаг будет сброшен. Команда VERR ах проверяет дескриптор, выбираемый с помощью регистра АХ.
□ VERW
Команда VERW (verify for write access) проверяет сегмент на возможность записи. Сегмент кода может иметь защиту от несанкционированной записи. Если запись в сегмент кода разрешена, то устанавливается флаг нуля ZF, если же не разрешена, то флаг будет сброшен.
Виртуальная память
Механизм виртуальной памяти (virtual memory machine) позволяет системам, имеющим относительно небольшую физическую память (16 Мбайт для микропроцессора 80286), отображать достаточно большую область памяти (1 Гбайт для процессора 80286). Сам же механизм виртуальной памяти заключается в том, что на жестком диске создается файл обмена (swap-файл) размером в несколько десятков мегабайт, который, по сути, является как бы расширением оперативной памяти системы. При работе системы по мере необходимости осуществляется перекачка данных и программ между файлом обмена на жестком диске и физической памятью. Адресация виртуальной памяти в системе осуществляется с помощью дескрипторов. Каждый дескриптор (рис. 6.7) процессора 80286 описывает сегмент памяти размером в 64 Кбайта, а сам процессор имеет возможность использовать 16К дескрипторов. Таким образом, это позволяет системе иметь виртуальную память емкостью до 1 Гбайт (64 Кбайт х 16К).
Дескрипторы описывают сегмент памяти только в защищенном режиме. Микропроцессор 80286 имеет дескрипторы, которые определяют коды, данные, стековые сегменты, прерывания, процедуры и задачи. Доступ к дескриптору выполняется загрузкой, выполняемой в защищенном режиме, сегментного регистра селектором. Селектор получает доступ к дескриптору, который описывает область памяти.
Дата добавления: 2016-03-10; просмотров: 892;