64位NASM - 检索2D数组的元素

时间:2013-06-13 23:07:41

标签: arrays assembly multidimensional-array nasm

我需要在NASM中检索2D数组的元素 - 数组是50x60字符,静态分配。 r13存储数组的宽度,rsi包含开头的地址,r8和r9是索引(它们相应地对应于第一个和第二个坐标)。我试过跑:

imul r8, r13
mov rax, [rsi + (r8 + r9) * 8]

但它不起作用 - 我得到beroset-p-603-invalid effective address。如何解决?

1 个答案:

答案 0 :(得分:3)

好吧,我设法做到了这一点。此代码是来自此程序的旧版本的修改后的复制粘贴,其中我使用动态分配的内存。所以如果其他人得到这个错误,我就是这样解决的:

mov r15, rsi ; duplicate the pointer, so it's not destroyed by the following operation
imul r8, r13
add r15, r8
mov rax, [r15 + r9]

编译并似乎正常工作