Question
Need help fixing this program written in assembly language. Its suppose to do an arithmetic operation. The operation goes Z = (-A - B) -
Need help fixing this program written in assembly language. Its suppose to do an arithmetic operation. The operation goes Z = (-A - B) - (-C - D). Where A = 543210 (32-bit) and B = -3210 (16-bit). The other 2 variables C (32-bit) and D (8-bit) are inputted by the user on the console. The program works but the problem is that its not outputting the correct arithmetic answer. Its giving the wrong number. For instance if you set C = 43210 and D = -10 then it should output Z = -496800 but the answer comes out as 589640, which is wrong. The other stuff it outputs is just the values of A, B, C, D and the final value in decimal, binary and hexadecimal. Please help fix.
///////////////////////////////////////////////////////////////////////////Code Below//////////////////////////////////////////////////////////////////////////////
INCLUDE Irvine32.inc INCLUDELIB Irvine32.lib
.data A SDWORD 543210 B SDWORD -3210
strC BYTE "What is the value of C? ",0 varC SDWORD ? strD BYTE "What is the value of D? ",0 varD SDWORD ?
varZ SDWORD ?
eqZ BYTE "Z = (-A - B ) - (-C - D )",0 space BYTE " ",0 colon BYTE ";",0 .code
main PROC mov ebx, B mov ecx, A sub ecx, ebx sub ebx, ebx mov edx, OFFSET strC call WriteString call ReadInt mov varC, eax mov ebx, varC call WriteInt call Crlf mov edx, OFFSET strD call WriteString call ReadInt mov varD, eax sub ebx, varD call WriteInt call Crlf mov edx, OFFSET eqZ call WriteString call Crlf mov eax, A call WriteInt mov edx, OFFSET space call WriteString mov edx, OFFSET colon call WriteString mov edx, OFFSET space call WriteString mov eax, B call WriteInt mov edx, OFFSET space call WriteString mov edx, OFFSET colon call WriteString mov edx, OFFSET space call WriteString mov eax, varC call WriteInt mov edx, OFFSET space call WriteString mov edx, OFFSET colon call WriteString mov edx, OFFSET space call WriteString mov eax, varD call WriteInt call Crlf call Crlf add ecx, ebx mov varZ, ecx mov eax, ecx call WriteBin call Crlf call WriteInt call Crlf call WriteHex call Crlf exit main ENDP END MAIN
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started