Interrupt 0x13
-
mov bx,[mbr] mov ax,[mbr+2] mov es,ax mov ah, 02 ; BIOS read sector function mov al, 01 ; read one sector mov ch, 01 ; Track to read mov cl, 02 ; Sector to read mov dh, 01 ; Head to read mov dl, 0x80 ; Drive to read int 0x13
(http://osdev.neopages.net/tutorials/loading_sectors.php?the_id=86)
warn paar fehler beim "ausfüllen" der register... wenn das jetzt nicht geht, dann probier noch mal, das mit [mbr] und [mbr+2] zu tauschen...
-
Nö, geht weder so noch so.
Es wird einfach nicht in das array geschrieben, kommt aber auch kein fehler oder sonstwas hoch ??
-
todo schrieb:
auch wenns mir hier mehr ums prinzip ging
Merkt man. Hauptsache mal ein Wenig die Assembler-Kenntnisse herumgezeigt, ob sinnvoll oder nicht :p
-
Welche Möglichkeit hab ich dann noch?
Aber es muss odch mit ASM funktionieren
-
Bashar schrieb:
todo schrieb:
auch wenns mir hier mehr ums prinzip ging
Merkt man. Hauptsache mal ein Wenig die Assembler-Kenntnisse herumgezeigt, ob sinnvoll oder nicht :p
was haben geinlineder asm und die möglichkeit mit int86 mit Assembler-Kenntnisse-Herumzeigen zu tun??
-
Jogy schrieb:
Welche Möglichkeit hab ich dann noch?
Aber es muss odch mit ASM funktionierenwas geht denn jetzt konkret nicht? stürzt er ab oder wie??
-
Nein stürtzt nicht ab und läuft ohne Fehler durch.
Aber irgendwie wird nichts in das char-array mbr geschrieben.
-
wie checkst du ab, ob was im puffer drinne ist??
probier ansonsten mal folgendes in deiner Funktion:
int off = FP_OFF(buffer); int segment = FP_SEG(buffer); asm mov bx,off asm mov ax,segment asm mov es,ax
-
Danke jetzt scheints zu funktionieren.
Aber wo ist genau er Unterschied?
-
FP_OFF und FP_SEG sind C-Makros, die jeweils die Segment oder Offset-Adresse eines Pointers zurückgeben... das mit dem [buffer] scheint wohl nicht immer zu funktionieren, bei mir hats immer geklappt