Ensamblaje MASM Tratando con enteros negativos.

Me dieron instrucciones para escribir un programa en ensamblaje que realice la siguiente aritmética:

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

He tenido éxito en hacer esto cuando no entran valores negativos, pero supongamos que A = 5, B = 4, C = 3, D = 2 y E = 1. Esto nos da ((5 + 4) / 3 ) * ((2 - 5) + 1) o -6.

Aquí es donde necesito ayuda. He investigado un poco y he encontrado que el complemento de 2 es una solución, pero no estoy seguro de implementarlo en mi código.

¡Si alguien me pudiera ayudar, estaría muy agradecido!

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 y multiplica los procedimientos divide y multiplica respectivamente.

Respuestas a la pregunta(2)

Su respuesta a la pregunta