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

How to use a 1 byte memory as an array index?

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

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

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

这种事情通常是这样做的吗?有没有其他方法直接mov一个1字节的内存到一个寄存器?

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

movzx eax, byte [ebp - 5].

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