x86内存[si] vs [bx + si]

时间:2012-12-28 16:15:14

标签: assembly x86

3种数组索引方法之间有什么区别

mov  si, INDEX
mov  ax,  memory[si]

mov  bx, offset  memory
mov  si, INDEX
mov  ax,  [bx+si]

lea  bx,  memory
mov  si,  INDEX
mov  ax,  [bx+si]

1 个答案:

答案 0 :(得分:3)

他们都像你一样表现出同样的事情。你见过这个。但他们认为适合代码的方式是真正不同的。

在所有三个中,您可以增加SI以引用相邻数组元素中的所有值。

在2和3中,您可以在外部循环的末尾以固定量撞击BX,以跳转到2D阵列的下一行。内循环通过数组元素(1,2,4等)的大小来碰撞SI,以便对当前行执行某些操作。

如果您需要节省空间并拥有一维数组,则

1会更短。或者你可能没有注册,需要BX来保存你正在计算的东西,所以你不需要使用BX。

当你在逗号右边有一个更复杂的部分时,

3很方便。

相关问题