0

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]
4

1 回答 1

3

当显示时,他们都做同样的事情。你已经看到了。但是它们适合周围代码的方式是真正不同的。

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

在 2 和 3 中,您可以在外循环结束时将 BX 碰撞一个固定量以跳转到 2D 数组的下一行。内部循环将 SI 与数组元素(1、2、4 等)的大小相撞,以对当前行执行某些操作。

如果您需要节省空间并拥有一维数组,则 1 会更短。或者也许你没有寄存器,需要 BX 来保存你正在计算的东西,所以你不需要使用 BX。

当逗号右侧有更复杂的部分时,3 很方便。

于 2012-12-28T16:28:36.063 回答