在MASM中访问数组

时间:2010-05-29 11:34:26

标签: arrays assembly x86 masm

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

my_array[a + b * c]

其中c是常数。

2 个答案:

答案 0 :(得分:3)

查找LEA

等说明

这样想:

LEA edx,[esi+ebx*4]

答案 1 :(得分:1)

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

MOV EDX, [ESI + 4*EBX]

对于静态数组,您实际上可以一次使用两个寄存器来索引它,但是使用数组基址作为the addressing mode中的32位位移。这仅适用于非位置无关的代码。

MOV EDX, my_array[ECX + 4*EBX]

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