首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2012-06-07 
eax , array2[ebx][edi] 疑问假定 array2 为 8行8列双字二维数组变量,以行不减顺序存贮在存贮器ds段中。要

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汇编中的地址索引一律以字节编址,与访问的数据类型(字节、字、双字、四字等等)无关。

热点排行