eax , array2[ebx][edi] 疑问

xiaotuzi 2012-06-05 03:19:13
假定 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]?

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

还望详细说明。。。谢谢,
...全文
84 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaotuzi 2012-06-06
  • 打赏
  • 举报
回复
谢谢各位,
  • 打赏
  • 举报
回复
原理就是这样的:

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汇编中的地址索引一律以字节编址,与访问的数据类型(字节、字、双字、四字等等)无关。
  • 打赏
  • 举报
回复
“行不减顺序”应该是行优先顺序吧。
WJN92 2012-06-05
  • 打赏
  • 举报
回复
mov eax,array2[ebx][edi]
写成这样,可能是方便操作
mov eax,array2[ebx][edi] = mov eax,array2[ebx + edi]

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧