Wie schreibt man auf die Festplatte mit der bios-interrupt 13h

Möchte ich kopiere meinen Bootloader in den ersten Sektor(512) Festplatte-in sich selbst (ich sollte die bios-interrupt 13h) und ich fand diesen code:

mov bx, buffer1       ; set BX to the address (not the value) of BlahBlah 
mov ah,03h            ;When ah=, int13 reads a disk sector
mov al,5              ;Al is how many sectors to read

mov cl,0              ;Sector Id
mov dh,0              ;Head
mov dl,80h            ;Drive (0 is floppy)
mov cx,512            ;One sector /2   

mov ah, 0x3           ; set function 2h
int 0x13  

bu-es funktioniert nicht!

  • Copy-pasta-code ist nie ein guter Weg, Dinge zu tun. Sie sollten lernen, einige assembler und versuchen zu verstehen, warum der code nicht funktioniert. Dann können Sie versuchen, es zu lösen sich und kommen Sie hier, wenn Sie nicht weiterkommen.
  • Haben Sie bemerkt, dass die Kommentar-Funktion sagt 2h ? aber es bewegt sich tatsächlich 0x3 ah
  • ich weiß, was code tut! ich ändere es eigentlich (3h ist ein Beispiel)! was ich nicht weiß ist, warum es nicht funktioniert!
  • Haben Sie laden Sie die segment-register mit den entsprechenden segment Teil des Puffers mit Adresse? Haben Sie mit dem BIOS-Referenz (z.B. Ralf Brown ' s Interrupt List), dass Sie über diese BIOS-Funktion richtig (Einstellung anderen Registern zu korrigieren, Werte)?
  • starten Sie durch das lernen zu Lesen von einer funktionierenden disk first, get verwendet, um das bios Aufrufe, dann werden Sie wissen, was zu tun ist, wenn es Zeit ist, zu schreiben.
InformationsquelleAutor Ocelot | 2012-01-29
Schreibe einen Kommentar