Assign values to registers and add and subtract th

2019-03-04 04:34发布

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

1条回答
姐就是有狂的资本
2楼-- · 2019-03-04 05:12
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.

查看更多
登录 后发表回答