得到汇编某一地址偏移x位后的内存的内容

来源:百度知道 编辑:UC知道 时间:2024/05/19 03:59:36
我在C语言中声名了一个数组,然后在程序中嵌入一段汇编语句,要在汇编语句中调用这个数组。现在我已经在汇编语句中得到了这个数组的首地址并写在寄存器edx中,现在我想得到这个数组第n个元素的值,n的值由寄存器cl中的值决定,请问我该怎么做

[base + index * scale + displacement]

如你描述的,edx是base,index就是下标,也就是n,scale是标量,如果你声明这个数组为int的话,那么这个值应该为sizeof(int),如果你声明的是一维数组的话,displacement可以为空。

比如有一个数组:
int a[] = {1,2,3,4};

要访问其下标为2的元素,并将其值存入eax,可以这样:

lea edx, a // 获得基地址
mov ecx, 2 // 下标
mov eax, [edx+ecx*4] // 寻址