我试图从结构中的数组中检查偶数,但我不认为我写了一些正确的东西。在调试时,(即count = 3 v [] = {1,2,4}),在达到“cmp eax,[ebp + 12]和je outt;”之后,它就会突然出现:就是这样。
s应该保留所有偶数的总和,int suma(test *)中的eax是数组的索引,而edx在将它移动到s之前保留总和
我做错了什么?
#include "stdafx.h"
#include <iostream>
using namespace std;
struct test {
int v[10];
short count;
};
test a;
int s = 6;
int suma(test *)
{
_asm {
mov eax, 0; // i for counting inside array
mov edx, 0; // sum of even elements
mov ebx, [ebp + 8]; // array v adress
loop:
cmp eax, [ebp + 12];
je outt;
mov ecx, [ebx + 4 * eax];
inc eax;
mov edi, ecx
and ecx, 1;
cmp ecx, 1;
je loop;
add edx, edi;
jmp loop;
outt:
mov eax, edx;
}
return s;
}
int main()
{
cin >> a.count;
for (int i = 0; i < a.count; i++)
cin >> a.v[i];
_asm {
LEA eax, a
push eax;
call suma;
add esp, 4;
mov s, eax;
}
cout << s;
return 0;
}