I am completely lost with this. I need to program that calculates the following expression, using registers: varA = (varA + varB) − (varC + varD), where varA, varB, etc., are variables. Assign integer values to the EAX, EBX, ECX, and EDX registers for the aforementioned variables. (Meaning, you may hardcode the inputs)
My Code:
; AddTwo.asm - adds two 32-bit integers.
; Chapter 3 example
.386
.model flat,stdcall
.stack 4096
ExitProcess proto,dwExitCode:dword
.data
varA dword 5
varB dword 3
varC dword 4
varD dword 1
.code
main proc
mov eax,varA
add eax,varB
mov ecx,varC
add ecx,varD
mov ebx,varA
sub edx,varD
invoke ExitProcess,0
main endp
end main
mov eax,varA
add eax,varB
mov ecx,varC
add ecx,varD
This all makes perfect sense, eax = varA + varB. ecx = varC + varD.
At this point, just
sub eax, ecx
to get eax = (varA + varB) - (varC + varD).
I'm not sure what was intended with
mov ebx,varA
sub edx,varD
That sets ebx = varA, and then sets edx = edx - varD. edx wasn't defined before, so this is a random number. Or maybe edx was originally cleared to zero, in which case edx is now equal to -varD. I wouldn't count on it though.
来源:https://stackoverflow.com/questions/52595225/assign-values-to-registers-and-add-and-subtract-them