Ich schreib das hier jetzt nochmal neu, da ich n'paar Probleme beseitigt habe, die Fehler hab ich zwar nicht gefunden, aber ich hab das ganze nochmal von vorne neu geschrieben und siehe da, die ganzen Probleme mit dem Stack sind wie weggeblasen
Ein Rätsel bleibt allerdings noch:
wenn ich
mov al, "h"
mov ah, 0eh
mov bx, 0007h
int 10h
aufrufe, soll das einfach nur das Zeichen "h" ausgeben
im Bootloader funktioniert das problemlos, sogar mit einer ganzen Textausgabe Routine,
aber im Kernel will er partout nicht mal ein Zeichen anzeigen
den Bootloader assembliere ich mit nasm zu flat binary,
den Kernel zu aout um ihn dann mit ld zu flat binary zu machen,
mache ich auch den Kernel direkt mit nasm zu flat binary klappt die Textausgabe, ich will den Kernel aber mit ld machen,
damit ich später C einbauen kann
hier der Kernel:
global start
start:
cli
mov ax, 1000h
mov ds, ax
mov es, ax
sti
mov al, "h"
mov ah, 0eh
mov bx, 0007h
int 10h
ende:
jmp ende
times 512-($-$$) db 0
hier der Bootloader:
org 7c00h
cli
mov ax, 9000h
mov ss, ax
mov sp,0ffffh
sti
mov al, "h"
mov ah, 0eh
mov bx, 0007h
int 10h
call readbr
mov ax, 0x1000
mov es, ax
mov ds, ax
push ax
xor ax, ax
push ax
retf
readbr:
mov ah, 02h ;fest
mov al, 01h ;Anzahl
mov ch, 00h ;Spur
mov cl, 02h ;Sektor
mov dh, 00h ;Kopf
mov dl, 00h ;Laufwerksnummer
mov bx, 1000h
mov es, bx ;Segment
mov bx, 0000h ;Offset
int 13h
ret
times 510-($-$$) db 0
signatur dw 0aa55h