Frage zur "DB" Funktion



  • xrt schrieb:

    Danke, mein Programm funktioniert jetzt, nachdem ich an alle Strings 24 angehängt habe 🙂

    Schoen. Wie gesagt macht das aber nur Sinn, wenn du besagte DOS-Funktion 09 zur Ausgabe des Strings benutzt (was bisher bei dir offenbar der Fall ist).

    xrt schrieb:

    Was mir allerdings noch fehlt, ist der Code für "neue Zeile".

    Dezimal geschrieben ist das die 10. Und 13 bringt den Cursor an den Zeilenanfang zurueck - es bietet sich also an, die beiden immer direkt hintereinander zu setzen.

    xrt schrieb:

    Seltsamerweise muss ich vor jedem "db" erstmal ein "jmp" auf den Quellcode danach einfügen. Warum? Normalerweise wird doch ein Programm von oben nach unten abgearbeitet.

    Richtig. Und zwar ohne Ruecksicht darauf, was dort steht.
    So wie sich das anhoert, schreibst du deine Byte-Arrays einfach mitten in den restlichen Quellcode?
    Dann musst du natuerlich mit einem Jump drueber wegspringen. Der Assembler packt alles genau so wie du es aufschreibst in der Reihenfolge in die ausfuehrbare Binaerdatei - egal ob Code oder Daten. Die CPU macht da auch keinen Unterschied, dh. wenn du nicht drueber wegspringst, wird halt dein String "ausgefuehrt". Was dabei passiert ist idR. wenig sinnvoll - kannst du dir ja mal mit einem Debugger anschauen.

    xrt schrieb:

    PS. Was bedeutet DB eigentlich ausgeschrieben? B wird wohl für Byte stehen?

    Ja, genau wie w->word, d->double word usw. Wofuer das d steht muesste ich aber raten.



  • Wenn ich

    db "text",10,24
    

    eingebe, springt er leider nicht in eine neue Zeile, sondern gibt stattdessen ein weißes Dreieck aus, das nach rechts zeigt.
    Ich hab schon auf der http://de.wikipedia.org/wiki/Codepage_850 nachgeschaut, aber Zeichen Nr. A sieht dort auch nicht wie ein weißes Dreieck aus?!



  • xrt schrieb:

    Wenn ich

    db "text",10,24
    

    eingebe, springt er leider nicht in eine neue Zeile, sondern gibt stattdessen ein weißes Dreieck aus, das nach rechts zeigt.
    Ich hab schon auf der http://de.wikipedia.org/wiki/Codepage_850 nachgeschaut, aber Zeichen Nr. A sieht dort auch nicht wie ein weißes Dreieck aus?!

    Lesen kannst du aber schon?? Dann lies dir nochmals die Postings durch und schaue ob es evt. einen Zusatz zu dem Tipp mit 10 für neue Zeile gab...



  • Ja das hab ich alles gelesen.
    Ich will aber keinen Carriage Return (13), sondern nur neue Zeile (10).
    Die Ausgabe soll dann so aussehen:

    ein text
    .............nächster Text

    (anstatt ... Leerzeichen, geht hier im Forum irgendwie nicht?)



  • Dann zeig halt mal deinen Code und erklaere wie du ihn erstellst und laufen laesst.



  • Nobuo T schrieb:

    Wofuer das d steht muesste ich aber raten.

    Das d steht für define. Also dann define byte, define word etc. 🙂



  • freaked schrieb:

    Nobuo T schrieb:

    Wofuer das d steht muesste ich aber raten.

    Das d steht für define. Also dann define byte, define word etc. 🙂

    Danke 🙂

    Hier ein Screenshot von meinem Programm:
    http://img-up.net/?up=debuggerDLxi5U.jpg

    Hier im Forum kann man anscheinend keine Bilder einbinden?



  • Noe, normalerweise fuer Quellcode auch nicht noetig. 😉
    Offenbar zeigt debug alle Zahlen als hex an. dezimal 10 ist hexadezimal 0a und 13 ist 0d...



  • Mit "(0)a" macht er jetzt eine neue Zeile + automatisch Carriage Return... ich brauch die 13 (0d) also gar nicht mehr... rätselhaft...



  • Verwendet dein Assembler zufälligerweise standardmäßig das Hexadezimalsystem, wenn man bei den Zahlen kein speziellen Marker voran stellt?
    Das würde erklären warum bei dir 10 ein "seltsames" Zeichen ist und du bei 0a dein Newline bekommst.

    Warum er einen Carriage Return durchführt kann ich dir allerdings nicht sagen.



  • Mein "Assembler" ist bis jetzt das Konsolenprogramm "debug" gewesen, dass bei DOS/Windows soviel ich weiß immer mitgeliefert ist. Es scheint hexadezimale Zahlen zu verwenden, besonders gut kenn ich "debug" allerdings nicht...
    Ein komisches Phänomen ist dabei auch: normalerweise habe ich in der Eingabeaufforderung ein deutsches Tastaturlayout, sobald ich aber "debug" starte, schaltet es auf Englisch um 😕
    Das gilt komischerweise auch für manche Systemordner, manchmal wird mir "Programme" angezeigt, manchmal "Program Files"...


Anmelden zum Antworten