Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: BlueB am 04. March 2005, 17:10
-
Hallo
Ich habe mal eine Frage zum Bootsector.
Der wurde jetzt von mir selbst entwickelt!!! und funktioniert nich.
Der Code sieht so aus
[org 0]
jmp 0c70h:start
start:
mov ax,cs
mov ds,ax
mov es,ax
init_drive:
mov ah,0
mov dl,0
int 13h
jc init_drive
read
mov ax,1000h
mov es,ax
mov bx,0
mov ah,2
mov al,5
mov ch,0
mov cl,2
mov dh,0
mov dl,0
int 13h
jc read
jmp 1000h:0000
times 510-($-$$) db 0
dw 0AA55h
Kann man hier schon Fehler feststellen?
der kernel ist erstmal so
mov ah,0bh
mov bx,000Fh
int10h
zusammengefügt
%include 'boot.asm'
%include 'prog.asm'
Dann habe ich die dritte Datei assembliert und es gab keine Fehler.
Dann habe ich die .bin-Datei auf eine formatierte diskette geschrieben.
Den PC rebootet und gewartet. Doch es passiert nichts.
Wo liegt der Fehler?
Danke schon mal
-
1. machn org davor.
2. mach den jump weg, wozu soll der sein?
3. setze prophylaktisch bits auf 16.
4. lade den kernel an 0x50:0x0000, alles andere is platzverschwendung (du musst das org im kernel dann auch auf [org 0x500] statt [org 0x10000] stellen!)
[ORG 0x7C00] ;startup
[BITS 16] ;16 bit
start:
mov ax,cs
mov ds,ax
mov es,ax
init_drive:
mov ah,0
mov dl,0
int 13h
jc init_drive
read:
mov ax,50h
mov es,ax
mov bx,0
mov ah,2
mov al,5
mov ch,0
mov cl,2
mov dh,0
mov dl,0
int 13h
jc read
jmp 50h:0000
times 510-($-$$) db 0
dw 0AA55h
FERTIG. nicht getestet, sonst sehe ich aber nix. kannst noch ne MSG ausgeben, obs bis zum jump geklappt hat, aber das musste selber machn :D
mfg
J!N
-
BlueB villeicht war dein fehler der. du hast bei read kein ":" gemacht... mayby... ;)
-
hi,
jmp 0c70h:start
müsste das dann nicht so heißen:
jmp 7c00h:start
??
cu,
stefan2005
-
eigendlich schon, aber man braucht es nicht.
-
Also erst mal Danke für so viele Antworten.
@Stephan und Zack
Das sind nur abschreib Fehler, aber trotzdem danke :-)
@joachim
Das war der Fehler. Jetzt funktioniert er einwandfrei.
Danke