Присвойте значения регистрам, сложите и вычтите их
Я полностью потерян с этим. Мне нужно запрограммировать, что вычисляет следующее выражение, используя регистры: varA = (varA + varB) - (varC + varD), где varA, varB и т. Д., Являются переменными. Присвойте целочисленные значения регистрам EAX, EBX, ECX и EDX для вышеупомянутых переменных. (Это означает, что вы можете жестко закодировать входы)
Мой код:
; 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 ответ
mov eax,varA
add eax,varB
mov ecx,varC
add ecx,varD
Все это имеет смысл, eax = varA + varB. ecx = varC + varD
,
На данный момент, просто
sub eax, ecx
получить eax = (varA + varB) - (varC + varD)
,
Я не уверен, что было задумано с
mov ebx,varA
sub edx,varD
Это устанавливает ebx = varA
, а затем устанавливает edx = edx - varD
, EDX не был определен ранее, так что это случайное число. Или, возможно, edx был первоначально очищен до нуля, и в этом случае edx теперь равен -varD. Я бы на это не рассчитывал.