索引寻址模式

时间:2014-10-28 15:14:22

标签: assembly nasm addressing-mode

我一直在尝试不同的寻址模式并对这个主题进行研究;在我尝试使用索引寻址模式时,我从SO上的不同示例中借用了一些代码。在下面的示例中:

outerLoop:
cmp edi, 50                  ;each element is 2 bytes (2 ascii characters)
ja  endloop                  ;we need 50 because it's 5 elements per row
mov esi, 0                   ;and 5 rows
innerLoop:
cmp esi, 5                   ;Compare esi(inner loop index) to 5
jae innerEnd                 ;jump if it reached the end of the row
mov ax, matrix[edi + esi*2]
cmp ax, cx
jg  biggerThan
mov cx, ax

作者正在使用嵌套循环来解析2-d数组,并找到最小的数字。 我真正感兴趣的是(案例1):

mov ax, matrix[edi + esi*2]

由于此部分在编译代码时似乎会导致问题并且它会给出错误: “逗号,冒号或行尾预期” 但是,如果我将代码更改为(案例2):

[matrix + edi + esi*2]

一切似乎都运转良好。

哪一个是正确的索引寻址模式? 我的直觉说,由于“矩阵”是数组,它应该位于左括号之外,但在实践中似乎并非如此。 如果有人能够解释案例1和案例2之间的区别,我将不胜感激。

0 个答案:

没有答案