【问题标题】:Accessing array in MASM在 MASM 中访问数组
【发布时间】:2010-05-29 11:34:25
【问题描述】:

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

my_array[a + b * c]

其中c 是常量。

【问题讨论】:

    标签: arrays assembly x86 masm


    【解决方案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 的比例因子,而不是使用两个不同的寄存器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多