Dockers DEV Site
2.3 Einschalten des Protected Mode
Intel Prozessoren ab dem 80386 befinden sich nach einem Reset
standardmäßig im bekannten Realmode. Der Protected
Mode muß erst durch das Setzen des PE-Bits im Steuerregister
CR0 aktiviert werden. Dabei ist zu beachten, daß auf das
CR0-Register nur über MOV-Befehle zugegriffen werden kann,
eine direkte Manipulation des CR0-Registers ist nicht möglich.
|
; Setzen des PE-Bits und damit aktivieren des Protected Mode
mov eax,cr0
or eax,1 ; setzt PE-Bit (Bit 0)
mov cr0,eax
|
- Bevor über die obige Befehlsequenz der Prozessor in den
Protected Mode geschaltet werden kann, muß dafür gesorgt
werden, daß eine gültige GDT eingerichtet wird, die
Deskriptoren für Segmente einschließlich eines Codesegmentdeskriptors
enthalten muß. Die Adresse dieser GDT muß in das GDTR-
Register geladen werden.
- Neben der GDT muß auch eine entsprechende IDT eingerichtet
werden, die auf eventuell auftretende Exceptions und Hardwareinterrupts
reagieren kann.
- Nachdem diese beiden Voraussetzungen erfüllt sind, kann
über die oben genannte Befehlsequenz der Protected Mode aktiviert
werden. Direkt nach dem Einschalten des Protected Mode muß
jedoch ein FAR-JMP ausgeführt werden, der die Warteschlange
leert (da sich wahrscheinlich noch Realmode-Befehle in der Warteschlange
befinden, die ein Prozessor im Protected Mode nicht korrekt ausführen
kann). Zusätzlich zum Leeren der Warteschlange wird durch
den JMP-Befehl das CS-Cache-Register mit dem Deskriptor des Codesegmentes
initialisiert.
Obwohl der Befehlsatz der Intel-Prozessoren einen direkten FAR-JMP
erlaubt (z.B. JMP 02FB:0000), wird ein entsprechender Befehl nicht
vom Assembler akzeptiert. Deshalb muß der FAR-JMP Befehl
in den Protected Mode "per Hand" als Opcode codiert
werden:
DB 0EAh
DW (entsprechender OFFSET)
DW (entsprechender SELECTOR)
|
Das Assemblerbeispiel pm_01.asm
benutzt den hier beschriebenen Weg, um in den Protected Mode zu schalten.
Dabei legt das Beispielprogramm eine GDT an, verzichtet jedoch aus
Gründen der Einfachheit darauf, eine IDT anzulegen.
Nachdem sich der Prozessor
im Protected Mode befindet, gibt das Programm eine kurze Nachricht aus
und kehrt in den Realmode zurück.
|
Last change 27/11/2022 by Docker Rocker.
This page uses no cookies, no tracking - just HTML.
Author: "Docker Rocker" ~ 2022 · [Public Git]