当前位置: 代码迷 >> 汇编语言 >> eax , array2[ebx][edi] 疑问解决思路
  详细解决方案

eax , array2[ebx][edi] 疑问解决思路

热度:834   发布时间:2013-02-26 00:00:00.0
eax , array2[ebx][edi] 疑问
假定 array2 为 8行8列双字二维数组变量,以行不减顺序存贮在存贮器ds段中。要把数组第二行第四个元素送 eax. 其中,数组行列及元素的序号都从0开始计数。64存入ebx, 16存入edi

解:mov eax,array2[ebx][edi]

疑问:8行8列不就是 8*8=64个单元么?
mov eax,array2[ebx][edi] ;为啥第二行第四个不是(首行8个+4个=12个),写成mov eax,array2[12]?

还有,啥是行不减顺序????

还望详细说明。。。谢谢,

------解决方案--------------------------------------------------------
mov eax,array2[ebx][edi]
写成这样,可能是方便操作
mov eax,array2[ebx][edi] = mov eax,array2[ebx + edi]
------解决方案--------------------------------------------------------
“行不减顺序”应该是行优先顺序吧。

------解决方案--------------------------------------------------------
原理就是这样的:

array2:
d00 d01 d02 d03 d04 d05 d06 d07 ; 数组行0 4x8 = 32 bytes
d10 d11 d12 d13 d14 d15 d16 d17 ; 数组行1 4x8 = 32 bytes
d20 d21 d22 d23 d24 d25 d26 d27


注意x86汇编中的地址索引一律以字节编址,与访问的数据类型(字节、字、双字、四字等等)无关。