访问32位汇编数组,内存寻址

时间:2015-02-18 20:20:37

标签: assembly x86

嗨,我是目前用于编码32位汇编的程序集的新手,我正在尝试访问我初始化的数组。

这是数组

lookup: dd 0, 3, 6, 9, 2, 5, 8, 1, 4, 7

这就是我想要完成的事情

add     bh, [lookup+al*4]

al是我要添加到bh

的索引

c中的代码是

b += a[i];

bbh,数组为lookupali

关于如何实现这一点的任何建议都很棒,谢谢!

1 个答案:

答案 0 :(得分:1)

作为评论中的迈克尔indicated,您无法在有效地址中使用al。相反,我们会将al零延伸到eax,并改为使用它:

movzx   eax, al                   ; zero-extend 8-bit al into 32-bit eax
add     bh, [lookup + eax*4]