Autor Thema: int 10h: im bootloader gehts, im Kernel nicht  (Gelesen 4452 mal)

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« am: 28. March 2006, 15:37 »
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

 

Einloggen