Assembly MASM Umgang mit negativen ganzen Zahlen

Ich wurde angewiesen, ein Programm in Assembly zu schreiben, das die folgende Arithmetik ausführt:

((A + B) / C) * ((D - A) + E)

Ich habe es geschafft, wenn keine negativen Werte zum Spielen kommen, aber angenommen, A = 5, B = 4, C = 3, D = 2 und E = 1. Dies ergibt ((5 + 4) / 3 ) * ((2 - 5) + 1) oder -6.

Hier brauche ich Hilfe. Ich habe einige Nachforschungen angestellt und festgestellt, dass das Kompliment von 2 eine Lösung darstellt, bin mir jedoch nicht sicher, ob ich es in meinen Code implementieren kann.

Wenn mir jemand helfen könnte, wäre ich sehr dankbar!

INCLUDE Irvine32.inc
; ((A + B) / C) * ((D - A) + E)
.data
valA dword 1
valB dword 2
valC dword 3
valD dword 4
valE dword 5

.code
main PROC

    mov ecx, valA
    add ecx, valB
    mov edx, valC
    call Divide
    mov ecx, eax
    mov edx, valD
    sub edx, valA
    add edx, valE
    call Multiply

    exit

main ENDP

* Divide- und Multiplikationsverfahren dividieren bzw. multiplizieren.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage