在 MASM 中访问数组
Posted
技术标签:
【中文标题】在 MASM 中访问数组【英文标题】:Accessing array in MASM 【发布时间】:2010-05-29 11:34:25 【问题描述】:我的数组地址(作为指向函数的指针传递)在 esi 寄存器中。如何访问数组的特定单元格?即:
my_array[a + b * c]
其中c
是常量。
【问题讨论】:
【参考方案1】:查找指令如LEA
这样想:
LEA edx,[esi+ebx*4]
【讨论】:
【参考方案2】:你也可以像下面这样直接移动它:
MOV EDX, [ESI + 4*EBX]
对于静态数组,实际上可以同时使用两个寄存器对其进行索引,但使用数组基地址作为the addressing mode 中的32 位位移。这仅适用于非位置无关代码。
MOV EDX, my_array[ECX + 4*EBX]
您可以使用同一个寄存器两次来模拟 3 (ebx + ebx*2
)、5 或 9 的比例因子,而不是使用两个不同的寄存器。
【讨论】:
以上是关于在 MASM 中访问数组的主要内容,如果未能解决你的问题,请参考以下文章