1.9.     Збереження в пам'яті регістрів мікропроцесора.

Оскільки при скиданні МП значення його регістрів губляться, те необхідно попередньо здійснити запис значень сегментних регістрів і регістра покажчика стека в пам'ять.

1.10.   Переклад мікропроцесора в захищений режим.

Для того щоб перевести МП у захищений режим, необхідно установити 0-й біт регістра керування CR0 (Control Register) в одиницю.

Регістр CR0 включає 10 розрядів для керування роботою мікропроцесора і визначення його стану (біти CD, NW, AM, WP і NE з'явилися в МП починаючи з i486):

PE (Protection Enable) - біт дозволу захисту встановлюється в “1” для переключення МП у захищений режим. Якщо РЕ скинутий - МП працює в реальному режимі; МР (Monitor coProcessor) - біт керування співпроцесором - блоком FPU (Floating Point Unit) використовується разом з битому TS для генерації переривання 7 (“FPU недоступний”) при обробці команди WAIT : якщо MP=1 і TS=1, то команда WAIT викликає переривання;

EM (Emulation) - біт емуляції співпроцесора: коли він установлений викликається переривання 7 при виконанні команд FPU чи переривання 6 при виконанні команд MMX (для МП, що виконує набір команд MMX). Значення EM не впливає на команду WAIT;

TS (Task Swiched) - біт переключення задач: біт TS установлюється при переключенні задач. Якщо TS=1 і виконується команда FPU чи MMX (якщо MP=1, то і команда WAIT), те викликається переривання 7;

NE (Numeric Error) - біт керування обробкою помилок FPU : якщо NE=0, то встановлюється схема обробки помилок, використовувана в МП 80286 і 80386 - через зовнішнє переривання IRQ 13 (переривання від співпроцесора). При цьому на вхід IRQ 13 контролера переривань надходить сигнал FERR# від МП, що приймає активний (низький) рівень при помилці FPU. Вхідний сигнал МП IGNNE# низьким рівнем дозволяє заборонити обробку помилок FPU. Якщо NE=1, помилки співпроцесора обробляються як внутрішні переривання з номером 16;

WP (Write Protection) - біт захисту від запису забороняє запис у сторінки, потрібні тільки для читання для всіх програм;

AM (Alignment Mask) - біт маски вирівнювання: при AM=0 забороняється перевірка невирівняності операндів;

NW (Not Write through) - біт заборони запису в кеш-пам'ять;

CD (Cache Disable) - біт заборони кэшировання, тобто заповнення рядка кеш-пам'яті;

PG (PaGing) - біт дозволу сторінкової організації. Установка PG=1 дозволена тільки в захищеному режимі, тобто при PE=1.

Занесення даних у регістр CR0 для мікропроцесорів починаючи с 80386 виконується спеціальною командою MOV, що здійснює промін із системними регістрами.

У МП 80286 замість 32-розрядного регістра CR0 мається 16-розрядний регістр MSW (Machine Status Word). Занесення даних у MSW виконується командою LMSW. Для сумісності молодші 16 розрядів CR0 збігаються з MSW і запис у них може здійснюватися також і командою LMSW.Установка біта PE здійснюється для мікропроцесора 80286 за допомогою команди LMSW, що заносить значення перемінної msw у регістр MSW: db 0fh,01h,36h { LMSW }

dw msw

jmp @prot

Для МП починаючи з 80386 установка біта PE CR0 без зміни інших розрядів регістра керування здійснюється за допомогою команди MOV:

db $0f,$20,0c0h { MOV EAX,CR0 }

db 66h,0dh { OR EAX,1 }

dd 1h

db $0f,22h,0c0h { MOV CR0,EAX }

jmp @prot

Відразу після переходу МП у захищений режим необхідно виконати програмний перехід для очищення буфера предвиборки від команд, занесених туди в реальному режимі. Перехід здійснюється на мітку @prot, з яким і починається робота МП у захищеному режимі. Помітимо, що оскільки в програмі P_MODE не було потрібно перевантажувати сегментний регістр коду (у захищеному режимі використовувалися ті ж базова адреса і розмір сегмента і того ж права доступу), те використовується внутрісегментний перехід і завантаження регістра

CS не відбувається. Потім у сегментні регістри DS, SS і ES завантажуються відповідні селектори:

@prot:mov ax,data_sel

mov ds,ax

mov ax,stack_sel

mov ss,ax

mov ax,video_sel

mov es,ax

На цьому переклад мікропроцесора в захищений режим завершується.


1.11.   Повернення в реальний режим.

Для повернення в реальний режим для МП 80286 використовується процедура RESET , що встановлює ознаку виконання скидання мікропроцесора (res=1), за допомогою команди контролера клавіатури здійснює скидання МП : mov al,$fe

out $64,al

і очікує завершення скидання мікропроцесора:

@wait_res:

hlt

jmp @wait_res.

Після скидання МП BIOS виконує перехід на крапку входу, адреса яке зберігається в осередку $40:$67. Для МП починаючи з 80386 повернення в реальний режим виконується за допомогою команди MOV, що здійснює скидання біта PE регістра CR0. Перед цим необхідно виконати наступні дії :

а) заборонити апаратні переривання командою CLI;

б) передати керування сегменту коду з R=1 і FFFFh;

в) завантажити в сегментні регістри DS, SS, ES селектори сегмента, що має атрибути, відповідні реальному режиму: границю сегмента, рівну 64ДО-1, ED=0 і W=1;

г) за допомогою команди LIDT завантажити в IDTR базова адреса (0) і границю (1Кб - 1) таблиці векторів реального режиму;

д) очистити біт PE регістра CR0;

е) здійснити межсегментний перехід.

З перерахованих вище дій у даній програмі потрібно виконати тільки пункти а), в), і д). Пункт б) не потрібно виконувати оскільки сегмент виконуваного коду уже володіє зазначенними параметрами. Пункт г) не потрібно, тому що в захищеному режимі не оброблялися і таблиця векторів (тобто IDT) і її розташування в пам'яті не були змінені.

Нарешті, пункт е) не потрібний через те, що не було завантаження регістра CS при вході в захищений режим.

Для завантаження сегментних регістрів DS, SS і ES використовується

селектор сегмента даних data_sel, що задовольняє перерахованим у пункті в) умовам : mov ax,data_sel

mov es,ax

mov ds,ax

mov ss,ax.

Очищення біта PE регістра CR0 виконуються командою MOV:

db $0f,$20,0c0h

db 66h,25h

dd 0fffffffeh

db $0f,22h,0c0h

jmp ret_r

Перехід на мітку ret_r необхідний для очищення буфера предвиборки команд.

1.12.   Відновлення регістрів МП.

Відновлення регістрів МП виконується в такий спосіб:

ret_r:

 xor ax,ax { Відновлення регістрів після }

 mov ds,ax { повернення в реальний режим: }

 mov ds,ds:[4*$60] { DS, }

 mov ss,real_ss { SS, }

 mov es,real_es { ES і }

 mov sp,real_sp { SP }


1.13.   Дозвіл маскуємих і немаскуємих переривань.

Дозвіл маскуємих і немаскуємих переривань здійснюється за допомогою процедури en_int. Ця процедура також виконує скидання стану клавіш-перемикачів.


2.         Система команд мікропроцесора :

 

2.1.     Кодування регістрів.

При двухбітовому полі rg :

Таблиця 4.

rg 00 01 10 11
Сегментні регістри Es Cs Ss Ds

При трьохбітовому полі rg :

Таблиця 5.

Reg 000 001 010 011 100 101 110 111
W=0 Al Cl Dl Bl Ah Ch Dh Bh
W=1 Ax Cx Dx Bx Sp Bp Si Di

Информация о работе «Програма модифікуюча команди, які використовуються в захищеному режимі»
Раздел: Информатика, программирование
Количество знаков с пробелами: 47456
Количество таблиц: 8
Количество изображений: 0

Похожие работы

Скачать
97603
5
0

обачив світло спрощений варіант процесора Pentium II, назва ,що отримала Celeron. В ньому вдвічі зменшений вторинний кеш і, немовби, прибрана підтримка багатопроцесорних систем. Однак шляхом “хірургічного” втручання підтримку багатопроцесорності можна повернути. Це пояснюється тим, що в Celeron застосоване ядро Pentium II без будь-яких змін. В 1999 році з'явився процесор Pentium III. В ньому ...

Скачать
98338
2
0

... і друку інформації про конфігурацію системи. ·             Backup. Засоби архівування даних призначені для резервного копіювання інформації на локальний носій на магнітній стрічці. Операційна система Windows NT завжди володіла прекрасними і широко застосовними на практиці можливостями захисту. Однократна реєстрація в домені Windows NT надає користувачам доступ до ресурсів всієї корпоративної ...

Скачать
72476
0
0

... . Користувач може вільно робити резервні копії й переносити програму з одного комп'ютера на інший, переносячи з собою ключ. [3] Деякі питання розкриття і розслідування злочинів у сфері комп’ютерної інформації Правоохоронні органи неготові до адекватного протистояння й активної боротьби з цим вже не новим соціальним явищем. Цей вид злочинності завдає величезних збитків власникам і користувачам ...

Скачать
114386
2
2

... передбаченою. 3. Генерація гамми не повинна бути дуже трудомісткою. Слід зазначити, що алгоритми криптосистем з відкритим ключем (СВК) можна використовувати за трьома напрямками: 1. Як самостійні засоби захисту даних, що передаються чи зберігаються. 2. Як засіб для розподілу ключів. Алгоритми СВК більш трудомісткі, ніж традиційні криптосистеми. Обмін великими інформаційними потоками здійснюють ...

0 комментариев


Наверх