访问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];
(b
是bh
,数组是lookup
,al
是i
)
任何有关如何完成此操作的建议都很棒,谢谢!
正如评论中的 Michael ,您不能在有效地址中使用 al
。相反,我们将 al
零扩展为 eax
,并改为使用它:
movzx eax, al ; zero-extend 8-bit al into 32-bit eax
add bh, [lookup + eax*4]
您好,我是汇编的新手,目前正在使用 32 位汇编进行编码,我正在尝试访问我初始化的数组。
这是数组
lookup: dd 0, 3, 6, 9, 2, 5, 8, 1, 4, 7
这就是我要实现的目标
add bh, [lookup+al*4]
al
是我要添加到bh
c 中的代码为
b += a[i];
(b
是bh
,数组是lookup
,al
是i
)
任何有关如何完成此操作的建议都很棒,谢谢!
正如评论中的 Michael al
。相反,我们将 al
零扩展为 eax
,并改为使用它:
movzx eax, al ; zero-extend 8-bit al into 32-bit eax
add bh, [lookup + eax*4]