あのね、俺が言っているのはアドレスとポインタ変数は違うってことだ。
例えば、以下のようにしたとき
int dat1[256];
int *dat2=dat1;
dat1とdat2の違いって分かってる?
Cではdat1[i]とdat2[i]どちらもできるが、
アセンブラでは、dat1[edx*4]はできるが、dat2[edx*4]はできないのは当たり前だろ、って言ってるの。
>>736ではdatはポインタ変数ではなくアドレスだろ。

>>762,>>764
あんたらも、アドレスとポインタ変数の違いが分かってないんじゃないのか?
以下のソースが、どんなコードに変換されるか見てみれば分かると思うよ。

int main()
{
int dat1[256];
int *dat2=dat1;

__asm {
lea ecx,dat1
lea ecx,dat2
mov ecx,dat1
mov ecx,dat2

}
return 0;
}