Frage

Ich versuche ein Programm zu schreiben, das zwei 6-stellige Dezimalzahlen erhält und die Hinzufügung von ihnen zeigt, aber in 16 Bit 8086 habe ich Zahlen als Doppelwort definiert und LO in Word 1 und HO in Wort 2. ähnlich wie unten, aber ich Haben Sie keine Idee, als nächstes zu tun. Kann mir jeder Körper einen Algorithmus für die nächsten Operationen vorschlagen? Danke

x dd(?)
    next_no:
    mov cl,2
    mov ch,4

two_bit:
getch

sub al,30h
mov bl,10
mul bl
mov di,ax
add word ptr x+2,di

dec cl
jnz two_bit
fourbit:
getch
sub al,30h
mov bl,10
mul bl
mov di,ax
add word ptr x,di
dec ch
jnz fourbit

In diesem Programm ist di ein Ort für das Speichern der Zahl, die über die Schleife erstellt wurde, wenn der Benutzer eine Nummer ein Multiple bis 10 eingeben wird. Die neue Ziffer wird zu di hinzufügen. 2*10*+8 = 28

War es hilfreich?

Lösung

Anstatt Ihrem unkontrollierten Code zu folgen, werde ich ein unabhängiges Beispiel vorstellen.

Angenommen, Sie haben eine 32-Bit-Zahl in DX: AX und eine 32-Bit-Zahl in CX: BX (diese Notation bedeutet, dass die hohen 16 Bissen beispielsweise in DX und die niedrigen 16 Bits in AX gespeichert sind). Um diese Werte hinzuzufügen und das Ergebnis in DX: AX zu lassen, würden Sie:

    add ax,bx
    adc dx,cx

Das add Anweisung fügt die beiden Werte hinzu und Sets Das C (tragen) Bit auf 1 oder 0, je nachdem, ob es einen Carry gab oder nicht. Das adc Anweisung fügt die beiden Werte hinzu Plus Der Wert des Carry -Bits (und dann das Tragebit erneut festgelegt). Auf diese Weise können Sie Werte jeder Größe hinzufügen, indem Sie mit mehr fortfahren adc Anweisungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top