1

我在 esi 寄存器中有我的数组的地址(作为指向函数的指针传递)。如何访问数组的特定单元格?IE:

my_array[a + b * c]

哪里c是常数。

4

2 回答 2

3

查找指令,例如LEA

这样想:

LEA edx,[esi+ebx*4]
于 2010-05-29T12:30:18.283 回答
1

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

MOV EDX, [ESI + 4*EBX]

对于静态数组,实际上可以同时使用两个寄存器对其进行索引,但在寻址模式下使用数组基地址作为 32 位位移。这仅适用于非位置无关代码。

MOV EDX, my_array[ECX + 4*EBX]

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

于 2010-05-31T11:10:30.420 回答