Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: Kyoko12 am 27. February 2005, 16:03

Titel: PrintString? Ich kapiers nicht!
Beitrag 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
Titel: PrintString? Ich kapiers nicht!
Beitrag von: JG am 27. February 2005, 16:28
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
Titel: PrintString? Ich kapiers nicht!
Beitrag von: Kyoko12 am 27. February 2005, 16:37
Ja, diese Variablen gibts. Ich probiers mal mit dieser Funktion, danke.
Titel: PrintString? Ich kapiers nicht!
Beitrag von: Paul am 27. February 2005, 21:30
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..