我正在尝试从整数数组中访问值,并且已经尝试了几个小时而没有运气。到目前为止,这是我的代码:
我要做的就是访问数组“arr”中的值,我已经看过如何使用字符而不是整数。
int binarySearch (int* arr, int arrSize, int key, int* count)
{
int result=-1;
int tempCount=0;
__asm
{
push esi;
push edi;
push eax;
push ebx;
push ecx;
push edx;
// START CODING HERE
mov edx, dword ptr arr[1] ;
// move the value of appropriate registers into result and tempCount;
// END CODING HERE
pop edx;
pop ecx;
pop ebx;
pop eax;
pop edi;
pop esi;
}
*count = tempCount;
return result;
}
答案 0 :(得分:3)
让我们假设你想要的项目的索引是eax,你会写
lea edx, [arr+eax*4]
mov edx, [edx]
这相当于
edx = arr [eax]
编辑:
抱歉,但我忘记了这是内联播放器。 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。我相信这就是你要找的东西。