Da mir die 512 Bytes für den Bootloader nicht ausreichen bevor ich in den PMode schalte, will ich meinen Bootloader teilen. Der erste Teil lädt (unter anderem
) den Code des zweiten Teils des Bootloaders in den Speicher und führt in aus. Im zweiten Teil soll der PMode aktiviert werden. Nun funktioniert der Code, welcher vor dem Teilen funktioniert hat, nicht mehr.
Ich denke es liegt daran dass die Adresse der GDT nicht mehr stimmt...
Hier der Code des zweiten Teils meines Bootloaders, welcher in den PMode schalten soll. Er liegt an 1000h:0000h im Speicher.
cli
call _enable_a20
xor ax ,ax
mov ax, ds
gdt [gdt_descriptor]
mov eax, cr0
or eax, 1
mov cr0, eax
jmp gdt_code:_init
[bits 32]
_init:
mov ax, 10h
mov ds, ax
mov es, ax
mov ss, ax
mov esp, 090000h
jmp $
; Es folgen Funktionen und Variablen
THX