Autor Thema: int 0x10 frage  (Gelesen 4334 mal)

hannibal

  • Host
  • Beiträge: 400
    • Profil anzeigen
    • brainsware - the rock.
Gespeichert
« am: 10. October 2004, 02:47 »
ich hab hier ein kleines problem.. ich hab teejay`s bootloader (etwas abgeaendert) in verwendung, nur will mir die printstring-funktion nicht ganz funktionieren..der gibt irgendwelche kryptischen zeichen aus, statt dem string, den ich in der file deklariere. testweise hab ich AL mit einer hexzahl (30h) gefuellt, dann hat er mir auf einmal eine 0 ausgegeben (logisch, ascii-code), jedoch..muesste ich jetzt jedes zeichen in hex umrechnen, damit das auch wirklich so funktioniert wie ich das will..oder eine andere moeglichkeit waere doch noch direkt in den videospeicher zu schreiben, oder?

bitte um hilfe =\

lg, hannibal
\\o
o//
\o/

mastermesh

  • Beiträge: 341
    • Profil anzeigen
    • http://www.kostenloser-laptop.de/
Gespeichert
« Antwort #1 am: 10. October 2004, 09:18 »
Höchstwahrscheinlich liegt ein Problem mit der Adressierung vor. Check mal CS, SS, SP, die ORG-Anweisung usw., ob sie stimmen.

hannibal

  • Host
  • Beiträge: 400
    • Profil anzeigen
    • brainsware - the rock.
Gespeichert
« Antwort #2 am: 10. October 2004, 15:35 »
F_PutS:
    push    bp
    mov        bp, sp
    pusha
    mov        si, [bp+4]
    mov        ah, 0x0E
    mov        bx, 0x0007
.1:
    lodsb
    or         al, al             ;check for NULL-termination
    jz        .2
    int        0x10
    jmp        .1

.2:
    popa
    mov        sp, bp
    pop        bp
    ret
funktion rufe ich folgendermassen auf (wie in tj`s tutorial beschrieben)

push WORD string
call F_PutS
wuesste nicht, was da an der adressierung falsch sein koennte, org 0x7c00 steht auch am anfang dort..stack ist initialisiert usw..

lg, hannibal
\\o
o//
\o/

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #3 am: 10. October 2004, 18:32 »
du musst nach dem Call auch noch "add esp, 2" machen
da der Parameter ja auch wieder vom Stack gelöscht werden muss.
----------------------
Redakteur bei LowLevel

hannibal

  • Host
  • Beiträge: 400
    • Profil anzeigen
    • brainsware - the rock.
Gespeichert
« Antwort #4 am: 10. October 2004, 19:26 »
aber hat das eine auswirkung auf die ausfuehrung der funktion? das muesste ja erst passieren, nachdem die funktion ausgefuehrt worden ist?!

lg, hannibal
\\o
o//
\o/

raziel

  • Beiträge: 1
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 11. October 2004, 17:33 »
War quatsch was ich vorher schrieb ;)
probiers mal mit
mov si, [bp+2]

hannibal

  • Host
  • Beiträge: 400
    • Profil anzeigen
    • brainsware - the rock.
Gespeichert
« Antwort #6 am: 11. October 2004, 18:27 »
mh nein..will auch nicht..mittlerweile hab ich das problem, dass er mir nicht mal mehr kryptische zeichen anzeigt .. o_O

boeses programm.
\\o
o//
\o/

maumo

  • Beiträge: 182
    • Profil anzeigen
    • http://maumo.50webs.com/
Gespeichert
« Antwort #7 am: 11. October 2004, 20:44 »
ich weis zwar nich ob es daran liegt, abba ich hatte dieses problem auch ma... hatte am string ende '$' vergessen

falls das quatsch is... sorry...

maumo

hannibal

  • Host
  • Beiträge: 400
    • Profil anzeigen
    • brainsware - the rock.
Gespeichert
« Antwort #8 am: 11. October 2004, 21:03 »
mh..hat sich erledigt - vmware scheint keine bios-interrupts zu kennen, oder will sie nicht ausfuehren.. hab die diskette im diskettenlaufwerk vergessen und dann hat er mir auch das ausgegeben, was er ausgeben sollte :)

danke fuer eure hilfe!

lg, hannibal
\\o
o//
\o/

 

Einloggen