回顾: 1、抽象的说数组是一系列具有相同类型元素的集合。
2、数组是最常用的复合数据类型(如指向数组的数组),但最终我们都能分解成元始的元素。
3、数据的基地址是数组第一个元素地址,位于申请数组内存的最低端。指数是否为零与效率无关。
对于访问一个一维数组中的元素:
元素地址=元素基地址+(( 指数-初始指数(零))*元素字节数)
如:
.data->Array dd 10 dup(?) ; Array[0.......9] of dword
Array 是数组变量名,dd(DWORD)是数据类型,10 DUP(?)是告诉编译器初始重复括号内10次的元素,由于是在.data?段所有元素初始为零。获得组数的基地址引用你的数组名即可。Array或者Array[0]
如: mov Array[0*sizeof(dword)],0-->mov Array,0 /mov Array[0],0
mov Array[1*sizeof(dword)],1 ->mov Array[1*4],1 /mov Array+4,1
.........
多维组数:
在多维组数中不在像一维那么平面线性的访问元素,这取决于编译器是以行为主还是列然后映射到内存。
如:.data->Array dd 3 dup(3 dup(0,0)) ;Array[0...2][0...2] of dword
mov Array [0*sizeof(dword)][0*sizeof(dword)],1-->MOV Array[0*4][0*4],1
.................