Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
`` `Zostava
.Model byt, stdcall
.stack 100h
.data
Gdt_ptr dd gdt_table; Ukazovateľ na GDT
; ... (definujte svoju štruktúru GDT tu)
.cód
hlavný proc
; 1. Načítajte register GDT (GDTR) s adresou vášho GDT
lgdt [gdt_ptr]
; 2. Nastavte bit PE v registri CR0
Mov Eax, CR0
alebo eax, 1; Nastavte bit 0 (vlajka PE) na 1
MOV CR0, EAX
; 3. Prejdite do segmentu kódu definovaného pre chránený režim
JMP FAR PTR chránený_mode_entry
; ... (váš kód pre chránený režim sa začína tu)
chránený_mode_entry proc
; ...
opätovný
chránený_mode_entry endp
hlavný konc
hlavný
`` `
Vysvetlenie:
1. `lgdt [gdt_ptr]`: Táto inštrukcia načíta register tabuľky globálnych deskriptorov (GDTR) s adresou vášho GDT. GDT obsahuje deskriptory pre všetky segmenty v chránenom režime vrátane segmentov kódov, dátových segmentov a segmentov zásobníka.
2. `alebo eax, 1`: Týmto sa nastaví bit PE (povolenie ochrany) v registri CR0. Tento bit riadi prevádzkový režim CPU:0 pre reálny režim, 1 pre chránený režim.
3. Táto inštrukcia vykonáva vzdialený skok a prechádza CPU do chráneného režimu. „Far Ptr` naznačuje, že ide o skok do nového segmentu, ktorý je nevyhnutný pre prepínač režimu.
Dôležité úvahy:
* GDT nastavenie: Pred vykonaním tohto kódu musíte definovať svoj GDT. GDT by mal obsahovať deskriptory pre všetky segmenty, ktoré plánujete použiť v chránenom režime.
* chránený kód režimu: Po skoku by mal byť váš kód napísaný pre chránený režim. Zahŕňa to použitie segmentových selektorov na riešenie pamäte a použitie rôznych pokynov na správu pamäte.
* Skutočný režim boot: Tento kód predpokladá, že už ste v reálnom režime (16-bitový režim). Pred zadaním chráneného režimu musíte svoj systém zaviesť v reálnom režime.
Pamätajte: Toto je základný príklad na demonštračné účely. Budete ju musieť prispôsobiť svojim konkrétnym požiadavkám vrátane:
* Definovanie úplného a vhodného GDT.
* Nastavenie tabuľky deskriptora prerušenia (IDT).
* Implementácia správy pamäte chráneného režimu so segmentáciou a stránkovaním.
* Písanie chráneného modelu špecifického pre režim pre úlohy, ktoré musíte vykonať.
V príručkách Intel alebo AMD procesor nájdete komplexnejšie informácie o programovaní chráneného režimu.