Jak przełączyć procesor x86 w tryb chroniony

TKW

Protected mode można włączyć przez ustawienie bitu jedności w rejestrze cr0, jest to rejestr 32-bitowy. Można to tak zrobić:

mov eax,cr0
or eax,1
mov cr0,eax

Należy pamiętać, że protected mode jest od 80286, a 32-bitowość od 80386. Przed włączeniem pmode należy ustawić gdt, i wyłączyć przerwania (instrukcją cli).

FAQ

1 komentarz

Samo włączenie trybu chronionego (i załadowanie GDT) nie wystarczy, potrzebny jest jeszcze skok do kodu 32 bitowego - ustawiający deskryptor w rejestrze segmentowym CS.

Składnia Nasm:
; wyłącz obsługę wyjątków i przerwań
cli

; załaduj globalną tablicę deskryptorów
lgdt    [gdt_structure_32bit]

; przełącz procesor w tryb 32 bitowy
mov eax,    cr0
bts eax,    0   ; włącz pierwszy bit rejestru cr0
mov cr0,    eax ; aktualizuj

; skocz do 32 bitowego kodu
jmp long 0x0008:protected_mode

; 32 Bitowy kod programu =======================================================
[BITS 32]

protected_mode: