for(int i = 0; i<size; ++i)
std::cout << arr[i] << std::endl;
}
void displayArray_asm(int* arr, int size){
for(int i = 0; i<size; ++i){
int tmp;
__asm{
mov ebx, arr ; 將 arr 記憶體位址放入 EBX
mov ecx, i ; 將索引值放路 ECX
mov eax, [ebx][ecx * TYPE int] ; 取得指定索引陣列值, [ebx]表示arr記憶體的起始位置, [ecx * TYPE int] 表示陣列索引
mov tmp, eax; ; 將結果放入變數 tmp
}
}
}
{
int a[5]={10,20,30,40,50};
std::cout << "init:" << std::endl;
displayArray_asm(a, sizeof(a)/sizeof(a[0]));
mov a[0 * TYPE int], -1 ;
mov a[1 * TYPE int], -1 ;
mov a[2 * TYPE int], -1 ;
mov a[3 * TYPE int], -1 ;
mov a[4 * TYPE int], -1 ;
}
std::cout << "after reset():" << std::endl;
displayArray(a, sizeof(a)/sizeof(a[0]));
__asm{
mov ebx, idx
mov ecx, idx
mov a[ecx * TYPE int], ebx;
}
}
displayArray_asm(a, sizeof(a)/sizeof(a[0]));
__asm mov eax, a[2 * TYPE int];
__asm mov tmp, eax;
std::cout << "a[2] = " << tmp << std::endl;
}