2010-05-29 110 views
1

我已經在esi寄存器中獲得了我的數組地址(作爲函數指針傳遞)。我如何訪問陣列的特定單元?即:在MASM中訪問數組

my_array[a + b * c] 

其中c是恆定的。

回答

3

[查詢指令,如LEA

認爲它是這樣的:

LEA edx,[esi+ebx*4] 
+0

的比例因子的鏈路是死的。 – ApproachingDarknessFish 2013-04-12 19:03:16

+0

修復了鏈接。 – 2013-06-14 15:19:09

1

如也跟着你可以直接將其移動:

MOV EDX, [ESI + 4*EBX] 

對於靜態數組,你可以實際上一次使用兩個寄存器來索引它,但使用數組基地址作爲the addressing mode中的32位位移。這隻適用於非位置無關的代碼。

MOV EDX, my_array[ECX + 4*EBX] 

代替使用兩個不同的寄存器的,則可以使用相同的寄存器的兩倍,以模擬的3(ebx + ebx*2),5或9