Hallo,
ich versuche gerade verzweifelt, einen Kernel, welcher in C geschrieben ist, mit NASM zu laden.
Der ganze Bootloader-Code funktioniert, lediglich bei der Anweisung
Die Funktion main wurde im Kopf des Bootloaders mit EXTERN _main definiert.
Wo liegt der Fehler ?
Bootloader:
Kann ich den C-Kernel, wenn ich diesen auf den 2. Sektor einer Floppy schreibe und mit der Funktion 2 des INT 0x13 an Adresse 0000:0800 lade (wie oben beschrieben), eigentlich auch statt
Vielen Dank,
bsc
ich versuche gerade verzweifelt, einen Kernel, welcher in C geschrieben ist, mit NASM zu laden.
Der ganze Bootloader-Code funktioniert, lediglich bei der Anweisung
Code: [Auswählen]
call _main bringt der NASM-Assembler die MeldungZitat
binary output format does not support external references.
Die Funktion main wurde im Kopf des Bootloaders mit EXTERN _main definiert.
Wo liegt der Fehler ?
Bootloader:
Code: [Auswählen]
[BITS 16]
EXTERN _main
GLOBAL _boot
_boot db "Der erste C Kernel",13,10,0
org 0x7c00
start:
cli
mov ax,0x9000
mov ss,ax
mov sp,0
sti
xor ax,ax
mov ds,ax
mov ah,0x02
mov al,2 ;Anzahl zu lesender Sektoren
mov cx,2 ;Cylinder=0, Sektor=2
mov dx,0 ;Laufwerk=0=>Floppy
mov bx,0x0800 ;Kernel nach 0x0000:0x0800 laden
mov es,bx
int 0x13
call _main <- Diese Zeile kann NASM nicht ausführen
times 510-($-$$) db 0
dw 0xAA55
Kann ich den C-Kernel, wenn ich diesen auf den 2. Sektor einer Floppy schreibe und mit der Funktion 2 des INT 0x13 an Adresse 0000:0800 lade (wie oben beschrieben), eigentlich auch statt
Code: [Auswählen]
call _main mit Code: [Auswählen]
jmp 0000:0800 starten ?Vielen Dank,
bsc

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken
Gespeichert




