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.