bootloader geht net
-
Der Bootloader beendet sich sofort im Emulator und beim richtigen booten blinkt nur der Cursor und es passiert nichts
Hier ist der Code. Ich bin mit ASM noch nicht soweit, also wenn es ein dumemr Fehler ist, dann bitte nicht gleich mit steinen werfen[BITS 32]
org 0x7C00
jmp start
nopstart:
cli ;Interrupts deaktivieren
mov ax, 0x9000 ;Stackadresse in ax schieben
mov ss, ax ;Stack festlegen
mov sp, 0 ;Stackpointer auf 0
stiloadmsg db "[EphesOS wird jetzt gestartet...]"
mov si, loadmsg
call putstrmov ax, 0x0000
int 0x16;Funktion: String ausgeben
putstr:
lodsb
or al, al
jz short putstrd
mov ah, 0x0E
mov bx, 0x0007
int 0x10
jmp putstrputstrd:
retntimes 512-($) db 0
dw 0xAA55
-
loadmsg db "[EphesOS wird jetzt gestartet...]"
schieb das mal ans ende, sonst wird das nämlcih exakt an der stelle eingesetzt und versucht auszuführen.
-
Ich hab es jetzt hinbekommen. Lag daran, dass ich [BITS 32] statt [BITS 16] verwendet habe. Jetzt entwickle ich also ein 16 Bit System. Wie mache ich ich das so, dass das Ganze auch auf 32 Bit geht?
-
Beim Starten befindet sich ein Intel (Kompatibler) Prozessor immer im Real Mode. Das ist ein 16Bit Mode, bei dem sehr eingeschränkt ist; bestes Beispiel: DOS.
Du musst in den Protected Mode schalten, das ist der 32Bit-Modus der CPU. Wie das geht müsste in der FAQ stehen. Das kann man nämlich nicht in einem Satz erklären.