MASM de montagem lidando com inteiros negativos

Fui instruído a escrever um programa em assembléia que executaria a seguinte aritmética:

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

Eu consegui fazer isso quando nenhum valor negativo entra em jogo, mas suponha que A = 5, B = 4, C = 3, D = 2 e E = 1. Isso nos dá ((5 + 4) / 3 ) * ((2 - 5) + 1) ou -6.

é aqui que preciso de ajuda. Fiz algumas pesquisas e descobri que o elogio de 2 é uma solução, mas não tenho certeza de implementá-lo no meu código.

Se alguém pudesse me ajudar, ficaria muito grato!

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 e Multiply Procedures dividem e multiplicam respectivamente.

questionAnswers(2)

yourAnswerToTheQuestion