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

Accessing 32bit assembly array, memory addressing

您好,我是汇编的新手,目前正在使用 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)

任何有关如何完成此操作的建议都很棒,谢谢!

正如评论中的 Michael ,您不能在有效地址中使用 al。相反,我们将 al 零扩展为 eax,并改为使用它:

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