Also ich habe noch eine Frage:
mov eax, cr0
or eax, 1
mov cr0, eax
diesen Teil sieht man immer wieder. Doch ist man da (zumindest beim 1. mov) noch im RM der nur 16Bit unterstützt und eax ist doch ein 32Bit Register oder? Naja, ich versuchte es mit ax statt eax doch dann sagte mir NASM bei den beiden beiden mov befehlen invaild combination of operator and operands...ich häng mal den ganzen Code ran (neu gecodet, jetzt nimmer nach TJ) bei dem machen sowohl Bochs als auch mein 2. Rechner 'nen Reboot...
kernel.asm:
org 0x1000
mov ah, 0
int 0x16
jmp GDT_End
GDT_Register:
dw GDT_End - GDT - 1
dw GDT
GDT:
GDT_Null equ $-GDT
dd 0x00000000
dd 0x00000000
GDT_Code equ $-GDT
dw 0xFFFF
dw 0x0000
db 0x00
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
lgdt [GDT_Register]
mov ax, cr0
or ax, 1
mov cr0, ax
mov ax, GDT_Data
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
mov ss, ax
mov esp, 0x2FFFF
jmp 0x8:0x2000
kernel32.asm
org 0x2000
[bits 32]
Pmode:
Endless:
jmp Endless