47 lines
612 B
NASM
47 lines
612 B
NASM
[org 0x7c00]
|
|
[bits 16]
|
|
|
|
CODE_SEG equ gdt_code - gdt_start
|
|
|
|
cli
|
|
lgdt [gdt_descriptor]
|
|
mov eax, cr0
|
|
or eax, 1
|
|
mov cr0, eax
|
|
jmp CODE_SEG:start_protected_mode
|
|
jmp $
|
|
|
|
gdt_start:
|
|
gdt_null:
|
|
dd 0x0
|
|
dd 0x0
|
|
|
|
gdt_code:
|
|
dw 0xffff
|
|
dw 0x0
|
|
db 0x0
|
|
db 0b10011010
|
|
db 0b11001111
|
|
db 0x0
|
|
|
|
gdt_data:
|
|
dw 0xffff
|
|
dw 0x0
|
|
db 0x0
|
|
db 0b10010010
|
|
db 0b11001111
|
|
db 0x0
|
|
|
|
gdt_end:
|
|
|
|
gdt_descriptor:
|
|
dw gdt_end - gdt_start - 1
|
|
dd gdt_start
|
|
|
|
[bits 32]
|
|
start_protected_mode:
|
|
jmp $
|
|
|
|
|
|
times 510-($-$$) db 0
|
|
dw 0xaa55 |