Arrays MASM中的阵列访问

Arrays MASM中的阵列访问,arrays,assembly,x86,masm,Arrays,Assembly,X86,Masm,我在esi寄存器中得到了数组的地址(作为指向函数的指针传递)。如何访问阵列的特定单元?i、 e: my_array[a + b * c] 其中,c是常量。查找如下指令 这样想: LEA edx,[esi+ebx*4] 查找说明,例如 这样想: LEA edx,[esi+ebx*4] 您也可以按如下方式直接移动它: MOV EDX, [ESI + 4*EBX] 对于静态数组,实际上可以同时使用两个寄存器对其进行索引,但使用数组基址作为中的32位位移。这仅适用于非位置独立代码 MOV EDX

我在esi寄存器中得到了数组的地址(作为指向函数的指针传递)。如何访问阵列的特定单元?i、 e:

my_array[a + b * c]

其中,
c
是常量。

查找如下指令

这样想:

LEA edx,[esi+ebx*4]

查找说明,例如

这样想:

LEA edx,[esi+ebx*4]

您也可以按如下方式直接移动它:

MOV EDX, [ESI + 4*EBX]
对于静态数组,实际上可以同时使用两个寄存器对其进行索引,但使用数组基址作为中的32位位移。这仅适用于非位置独立代码

MOV EDX, my_array[ECX + 4*EBX]

不使用两个不同的寄存器,您可以使用同一寄存器两次来模拟3(
ebx+ebx*2
)、5或9的比例因子。

您也可以按如下方式直接移动它:

MOV EDX, [ESI + 4*EBX]
对于静态数组,实际上可以同时使用两个寄存器对其进行索引,但使用数组基址作为中的32位位移。这仅适用于非位置独立代码

MOV EDX, my_array[ECX + 4*EBX]
不使用两个不同的寄存器,您可以使用同一寄存器两次来模拟比例因子3(
ebx+ebx*2
)、5或9