org 0x1000
jmp GDT_End
GDT_Register:
dw GDT_End - GDT - 1
dd GDT
GDT:
GDT_Null equ $-GDT
dd 0x00000000
dd 0x00000000
GDT_Code equ $-GDT
dw 0xFFFF
dw 0x0000
db 0x01
db 0x9A
db 0xCF
db 0x00
GDT_Data equ $-GDT
dw 0xFFFF
dw 0x0000
db 0x00
db 0x92
db 0xCF
db 0x00
GDT_End:
cli
xor eax, eax
mov ax, ds
add ax, 0x1000
shl eax, 4
add ax, GDT_Null
mov dword [GDT_Register+2], eax
lgdt [GDT_Register]
mov eax, cr0
or eax, 1
mov cr0, eax
mov ax, GDT_Data
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
mov ss, ax
mov esp, 0xFFFFF
jmp GDT_Code:0x2000
[/code]
Das ist der aktuelle Code, der noch immer nicht funktioniert...ich habe einfach keine Ahnung was da falsch ist...der bootloader funzt ganz normal, ist im grunde nur der aus der 1. Ausgabe des Lowlevelmagazins (leicht modifiziert, funzt aber) und der kernel32-Code ist ja in diesem Thread schon einmal abgedruckt.