Moin
Ich hab da wohl ein kleines Verständnisproblem, aber erstmal der Code (stammt aus der 1. Lowlevel-Ausgabe, Bootloader->Kernel.asm) :
mov ax, 1000h ; Segmentregister updaten
mov ds, ax
mov es, ax
start:
mov si, Msg
putstr:
lodsb ; Byte laden
or al,al
jz short putstrd ; 0-Byte? -> Ende!
mov ah,0x0E ; Funktion 0x0E
mov bx,0x0007 ; Attribut-Byte (wird nicht benötigt)
int 0x10 ; schreiben
jmp putstr ; Nächstes Byte
putstrd:
jmp ende
Msg db "Kernel16",13,10,0
ende:
Hab's ein wenig gekürzt (kein getkey und reboot)
Mir geht's nur um folgendes. So wie der Code da steht, lässt er sich kompilieren und mit dem Lowlevel-Bootloader starten. Es wird nur "Kernel16", also der String ausgegeben. Jetzt mein Problem : Wenn ich msg vor start: oder kurz dahinter deklariere lässt sich das auch kompilieren, wenn dieser "Kernel" geladen wird erscheint der String aber nicht auf dem Moni !?
Der Kernel wird doch an 1000h geladen und das DS auf diese Adresse gesetzt.
So viel weiß sollten die Daten im Datensegment stehen, und das wäre doch auch
kurz vor / hinter start: der Fall ... ??