Курсовая работа: Програма модифікуюча команди, які використовуються в захищеному режимі
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. Відновлення регістрів МП.