Autor Thema: PrintString? Ich kapiers nicht!  (Gelesen 5509 mal)

Kyoko12

  • Beiträge: 59
    • Profil anzeigen
Gespeichert
« 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

JG

  • Beiträge: 189
    • Profil anzeigen
Gespeichert
« Antwort #1 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

Kyoko12

  • Beiträge: 59
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 27. February 2005, 16:37 »
Ja, diese Variablen gibts. Ich probiers mal mit dieser Funktion, danke.

Paul

  • Beiträge: 41
    • Profil anzeigen
Gespeichert
« Antwort #3 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..

 

Einloggen