Die dargestellten Quelltexte von Kernel und Bootloader funktionieren auf meinem System (Pentium 4) erst, wenn ich
1. die Register es und ds am Anfang mit 0 initialisiere
org 0x7C00 ; Unsere Startadresse
mov ax, 0x0000
mov es, ax
mov ds, ax
; -----------------------------------------
; Unser Bootloader
; -----------------------------------------
...
2. den Reset des Diskettenlaufwerkes herausnehme
; Lade den Kernel vom Bootlaufwerk
load:
; Diskdrive reset (Interrupt 13h, 0)
;mov ax, 0 ; Die gewünschte Funktion (reset)
;mov dl, [bootdrv] ; Dieses Laufwerk ist gewünscht
;int 13h ; Den Interrupt ausführen
;jc load ; Geht nicht? -> Noch mal!
load1:
mov ax,0x1000 ; ES:BX = 0x10000
mov es,ax
...
Die Initialisierung der Register mit 0 sollte auf allen Prozessoren durchgeführt werden. Nach dem Reset des Diskettenlaufwerkes muss dieses ggf. anders initialisiert werden. Ist ein Reset überhaupt notwendig?