Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: Kyoko12 am 27. February 2005, 16:03
-
Hi leutz, ich habe mal wieder n problem bei den einfachsten sachen!
hier ist der Code meiner PrintString funktion:
PrintString:
mov ah, 0Eh
mov bl, 0x07
jmp .char
.char
lodsb
or al, al
je .end
int 10h
jmp .char
.end
ret
in meinem Kernel rufe ich sie so auf:
mov si, hallo
call PrintString
mov si, linefeed
call PrintString
Und was passiert?
Gar nix. er macht einfach das was nach dem aufruf steht.
Ich finde einfach keinen fahler! Könnt vihr mir bitte helfen?`
mfg,
Kyoko12
-
Hallo,
gibt es die Variablen "hallo" und "linefeed" überhaupt? Vielleicht hast da schon deinen fehler...
Du kannst auch die funktion putstr wie in Lowlevel1 beschrieben ist benutzen.
Hier der Code
putstr:
lodsb ; Byte laden
or al,al
jz short putstrd ; 0-Byte? -> Ende!
mov ah,0x0E ; Funktion 0x0E
mov bx,0x0007 ; Atrribut-Byte
int 0x10 ; schreiben
jmp putstr ; nächstes Byte
putstrd:
retn
-
Ja, diese Variablen gibts. Ich probiers mal mit dieser Funktion, danke.
-
Der Befehl LODSB holt sich das Byte von DS:SI, evtl. solltest du mal überprüfen ob das Datensegment stimmt...so ein ähnlicher Fehler hat mich mal nen Nachmittag gekostet :) Dumme Segmentierung..