2

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

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

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

4

1 回答 1

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]

编译并且似乎可以工作

于 2013-06-14T12:51:21.837 回答