在 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 中访问数组的主要内容,如果未能解决你的问题,请参考以下文章

x86 MASM - 传递和访问二维数组

运行循环时 MASM x86 访问冲突

在 MASM 中,如何访问 PDH_FMT_COUNTERVALUE 结构中的 longValue 成员?

在 MASM 8086 程序集中读取多个文件

访问段寄存器 MASM

MASM32编程访问结构体成员要注意的一点