如何使用 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
用于符号扩展,但这对数组索引没有用。
我有一个字节数组,其中 [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
用于符号扩展,但这对数组索引没有用。