![x86汇编与逆向工程:软件破解与防护的艺术](https://wfqqreader-1252317822.image.myqcloud.com/cover/730/53287730/b_53287730.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.6.4 索引寻址
如果数组中的元素总是一个字节长,则基址加偏移量的寻址模式运作良好。对于元素更大的数组,偏移量必须手动计算,这很烦琐,也容易出错。
在这些情况下,索引寻址可能是更好的选择。索引寻址使用一个索引寄存器、一个比例因子和一个偏移量来指定地址。这个比例因子必须是1、2、4或8。
示例:数组
让我们定义一个整型数组,即int x[100];。这表示声明了一个包含100个整数的数组。在内存中,数组中的每个值都存储在基址的特定偏移位置。这个偏移量是由数组中的值(比如一个32位或4字节的整数)的大小决定的。
假设整型数组是在偏移量0x1000的位置创建的。如果n存储在ebx中,则下面的指令会将数组的第n个元素移动到eax中:
![](https://epubservercos.yuewen.com/2FAC88/31751360804058606/epubprivate/OEBPS/Images/43_01.jpg?sign=1739687976-SDSzNzZC1IIkOUs0F6qHCMG1blugH9o3-0-66deaf9d904dfd07ae785a5c187fbe36)