Also wie man oben schon merkt hat mein Programm einen Fehler. Ich schreibe folgenden Assemblercode in zwei bin datein und verbinde dann die beiden bin dateien mit nasm. So dann schreibe ich mit RawWrite das image das ich aus den beiden bin dateien erstellt habe auf eine leere Diskette. Aber wenn ich jetzt meinen Computer mit der Diskette boote kommt nur ein schwarzes Fenster ohne Meldung. Oder habe ich vllt den Assembler Code falsch verstanden?
kernel.asm
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
mov ax, 1000h
mov ds, ax
mov es, ax
start: ; Hier fängt unser eigentliches "Betriebssystem" an
mov si, nachricht ; Wir zeigen einfach nur einen String an
call schreiben ; "schreiben" gibt den String am Bildschirm aus
call lesen ; "lesen" wartet bis eine Taste gedrückt wurde
jmp reset ; Danach wird die Funktion "reset" aufgerufen
nachricht db "Eine Taste drücken, um neu zu starten...",13,10,0
schreiben:
lodsb
or al, al
jz short schreiben_d
mov ah, 0x0E
mov bx, 0x0007
int 0x10
jmp schreiben
schreiben_d:
retn
lesen:
mov ah, 0
int 016h
ret
reset:
db 0Eah
dw 0000h
dw 0FFFFh
|
boot.asm
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
bootdriv db 0 ; Das Bootlaufwerk
loadmsg db "Lade VitaXia...",13,10,0
; Mit dieser Funktion geben wir einen String aus
putstr:
lodsb
or al,al
jz short putstrd
mov ah,0x0E
mov bx,0x0007
int 0x10
jmp putstr
putstrd:
retn
; Mit dieser Funktion laden wir unsere Shell vom Bootlaufwerk
load:
push ds
mov ax, 0
mov dl, [bootdriv]
int 13h
pop ds
jc load
load1:
mov ax,0x1000
mov es,ax
mov bx, 0
mov ah, 2
mov al, 5
mov cx, 2
mov dx, 0
int 13h
jc load1
mov si,loadmsg
call putstr
retn
times 512-($-$$)-2 db 0
dw 0AA55h
|
eigentlich müsste ich doch durch einen Tastendruck den PC neu starten, aber dort erscheint noch nicht einmal Text.
kann mir jemand weiterhelfen?
Vielen Dank im voraus
Fabian
EDIT: Und es hat sich schon wieder erledigt. nasm hat sich beim erstellen der img datei verschluckt. Sorry für den bereits 2. überflüssigen Post