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

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!