如何使用1字节内存作为数组索引?

时间:2015-01-08 16:14:48

标签: arrays assembly x86 nasm

我有一个字节数组,其中[ebp - 4](4个字节)存储其第一个元素的地址。我还有另一个变量[ebp - 5](1个字节),用于存储当前索引到此数组。

现在我想使用组合base+index访问此数组的元素,但这种格式要求两个寄存器都是32位(例如eax而不是al),所以我所做的是将eax寄存器归零,然后将mov 1字节[ebp - 5]归零al,然后使用整个eax寄存器作为索引:< / p>

mov eax, 0
mov al, [ebp - 5]

这是通常做这种事情的方式吗?还有另一种方法可以直接mov 1字节存储器进入寄存器吗?

1 个答案:

答案 0 :(得分:4)

虽然可行,但有一条movzx指令以零扩展名移动:

movzx eax, byte [ebp - 5]

还有movsx符号扩展,但这对数组索引没有用。