Frage zu einer Aufgabenstellung



  • Hallo ich bin noch ganz neu in dieser Sparte und kenn mich echt noch nicht aus. Hier meine Frage:

    Gegeben ist die Gleichung Z = (X * 3 + Y) / 20. Deklarieren Sie für X, Y jeweils eine Byte-Variable mit jeweils einem positiven Initialwert und für Z eine Byte-Variable für den Quotienten und eine für den Divisionsrest. Diese beiden Variablen sollen keinen bestimmten Initialwert haben. Schreiben Sie für die Gleichung eine 8086-Befehlsfolge.

    Hier kommt mein geistiger Erguss:

    datseg SEGMENT
    var_x db 01
    var_y db 02
    var_z db ?
    var_zr db ?
    datseg ENDS
    
    mov Ax, 3
    mul var_x
    add Ax, var_y
    div 20
    mov var_z, AL
    mov var_zr, AH
    

    Wir arbeiten in der FH mit dem Program emu8086 - assembler (daheim haben wir nur die Demo-Version) http://www.emu8086.com/. Allerdings hab ich Probleme beim compilieren kann mir jemand sagen wo meine Fehler liegen?

    Danke schonmal im voraus

    Rille :xmas1: :xmas2:



  • Je nachdem, wie sehr ihr dieses Thema noch vertieft, wuerde ich mal empfehlen, einen vernuenftigen Assembler auf deine codes anzusetzen - der erzaehlt dir dann schon, wo deine Fehler liegen.
    Wie dem auch sei, spiele ich eben mal Assembler:

    datseg SEGMENT
    var_x db 01
    var_y db 02
    var_z db ?
    var_zr db ?
    datseg ENDS
    
    mov Ax, 3
    mul var_x
    add Ax, var_y      ;<--- ungueltige Kombination von Operanden
    ;~Beide Operanden muessen die gleiche Bitbreite haben
    div 20             ;<--- ungueltiger Operand: direkte Fixzahl
    ;~Akzeptiert nur Register oder Speichervariablen
    mov var_z, AL
    mov var_zr, AH
    

    Wie du das beheben kannst, bekommst du, denke ich, auch selbst raus.


Anmelden zum Antworten