Давайте предположим, что индекс нужного вам элемента в eax, вы бы написали
lea edx, [arr+eax*4]
mov edx, [edx]
Это эквивалентно
edx = arr [eax]
Edit:
Извините, но я забыл, что это встроенный ассм. lea edx, [arr] загрузит эффективный адрес параметра arr в стек, а не сам указатель. Попробуйте это:
mov eax, 1; //index you want to access
mov ebx, arr;
lea edx, [ebx+eax*4];
mov edx, [edx];
int binarySearch (int* arr)
{
int test;
__asm
{
push eax;
push ebx;
push edx;
mov eax, 2;
mov ebx, arr;
lea edx, [ebx+eax*4];
mov edx, [edx];
mov test, edx
pop edx;
pop ebx;
pop eax;
}
return test;
}
int main(void)
{
int a[5];
a[0] = 0;
a[1] = 1;
a[2] = 21;
int t = binarySearch(a);
return 0;
}
t == 21 после выполнения этой программы. Я считаю, что это то, что вы ищете.