So, jetzt möchte ich den Kernel laden. Ich könnte einfach den Code aus der Lowlevel 1 nehmen, aber ich möchte es wenigstens verstehen, was ich aber leider nicht tue. Also:
Code: [Auswählen]
...
;Lade unseren Kernel
call load ;Ok, das verstehe ich
;Springe zu diesem Kernel
mov ax, 0x1000 ; Die Adresse des Programms ;Ist der Kernel jetzt da?
...
push ax ;Gerettet
mov ax, 0 ;jetzt ist 0
push ax ;Wiederhergestellt --> Was hat das jetzt gebracht?
retf
...
; Lade den Kernel vom Bootlaufwerk
load:
; Diskdrive reset (Interrupt 13h, 0) ;Wieso?
push ds ; Sichere DS ;Wieso?
...
pop ds ; DS wiederherstellen ;Siehe Kommentar über diesem
jc load ; Geht nicht? -> Noch mal! ;Wieso sollte es dann plötzlich klappen?
load1:
...
; Sektoren lesen (Interrupt 13h, 2) ;Was bringt das?
...
mov dx, 0 ; Head=0, Laufwerk=0 ;Wieso Laufwerk=0?
int 13h ; ES:BX = Daten vom Laufwerk ;???
jc load1 ; Fehler? Noch mal! ;Wieso sollte es dann plötzlich klappen?
...

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert
: Nun, der Biosinterrupt liest ja brav Sektoren von der Diskette ein, aber irgendwo müssen die ja auch hin und das ist eben definitionsgemäß (so ist die Funktion halt aufgebaut) an dieser Stelle.
Ich fühle mich geehrt, aber alles was ich geschrieben habe findest du auch hier auf lowlevel, oder ist zumindest von hier verlinkt.