Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

27.02.2010, 22:25

Problem mit Assemblercode ausführen

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
Metal ist keine Musik sondern eine Religion.