Assembly 如何访问程序集中的数组元素?
文件说: (索引)∗ 比例)+位移⎯ 当元素大小为2时,此地址模式提供了一种索引到静态数组的有效方法, 4或8字节。位移定位阵列的开始, 索引寄存器保存所需数组元素的下标, 处理器会自动将下标转换为索引 通过应用比例因子 是否可以使用Base而不是Displacement来指定数组的开头:Assembly 如何访问程序集中的数组元素?,assembly,x86,nasm,Assembly,X86,Nasm,文件说: (索引)∗ 比例)+位移⎯ 当元素大小为2时,此地址模式提供了一种索引到静态数组的有效方法, 4或8字节。位移定位阵列的开始, 索引寄存器保存所需数组元素的下标, 处理器会自动将下标转换为索引 通过应用比例因子 是否可以使用Base而不是Displacement来指定数组的开头: Base + (Index ∗ Scale) base、index、scale和displacement只是内存操作数四个部分的名称。您可以自由地将每个部件用于您喜欢的任何目的。例如,要获取数组的第n+k个
Base + (Index ∗ Scale)
base、index、scale和displacement只是内存操作数四个部分的名称。您可以自由地将每个部件用于您喜欢的任何目的。例如,要获取数组的第n+k个条目,可以使用如下内容:
mov al, [array + ebx + ecx]
其中
n
存储在ebx
中,k
存储在ecx中。
在这种情况下,“基”实际上被用作数组的索引,“索引”部分也是如此。A+(B*C)不是等同于(B*C)+A吗?如何命名数字有什么关系?是的,Base+(Index*Scale)
是合法的。你试过了吗?从这张照片上可以清楚地看出这一点。提供了基准、索引和刻度,而置换为“无”。@Cody Gray是的,我试过了,效果很好,但我只是认为可能在某些情况下,它不起作用。@riodoro1我不是问我是否可以使用Displacement+(索引)∗ 比例)
而不是(索引∗ 比例)+位移
,我问是否可以使用Base+(索引∗ 比例)
而不是(索引∗ 比例)+位移
。