我有一个字节数组,其中[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字节存储器进入寄存器吗?
答案 0 :(得分:4)
虽然可行,但有一条movzx
指令以零扩展名移动:
movzx eax, byte [ebp - 5]
。
还有movsx
符号扩展,但这对数组索引没有用。