Kurze Assemblerfrage



  • Hi, ich bin noch einigermaßen neu auf dem Assemblergebiet.
    Ich hab mir mal so als erstes Programm nen simplen Taschenrecher geschrieben der im Moment nur addiern kann und ich bin fast fertig wenn da nicht dieses Problem wäre.

    Also ich hab die Summe der beiden Werte einer Variable (Word) gespeichert. Aber ich hab keine Ahnung wie ich das nun auf den Bildschirm bringen kann. Ich habs mit

    mov     ah, 0Eh
        int     10h
    

    versucht, aber da da nur ein Byte ausgegeben werden kann weiss ich nicht weiter.

    Hättet ihr vll ein paar Vorschläge? ( müssen keine kompletten Lösungen sein, Hinweise würden auch schon reichen)

    Danke : 🙂



  • http://www.c-plusplus.net/forum/viewtopic-var-t-is-238084.html
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-236735.html

    ... So weit bin ich aber mit keinem der beiden Faeden zufrieden genug, dass sie reif fuer die FAQ waeren. 👎



  • versteh ich dich richtig?
    Du weist nicht, wie du mehrere Bytes ausgeben kannst?

    Wenn du ne Zahl hast, musst du die erstmal in nen String umwandeln.
    Z.b. wenn die Zahl 123 ist, dividierst du durch 10 und addierst auf den Divisionsrest (3) 48.
    Das Ergebnis (51) schreibst du dann ins AL Register und rufst deinen Interrupt 10h auf (mit AH=0EH)

    Das ganze machst du in einer Schleife solange, bis eine Division durch 10 0 Ergibt.

    ;Addition -> z.b. in AX=1234
    
    loop1:
    MOV CX, 10
    DIV CX ; AX=Ergebnis, DX=Rest
    ADD DX, 48
    PUSH AX
    PUSH CX
    MOV AH, 0Eh
    MOV AL, DL
    INT 10h
    POP CX
    POP AX
    CMP AX, 0 ;es gibt nichts mehr zum teilen, zahl komplett ausgegeben -> beenden
    JE loop1_end
    jmp loop1
    loop1_end:
    ;...
    

    Hab ihn ned getestet, muss aber funktionieren^^



  • ok danke euch beiden^^


Anmelden zum Antworten