您将如何在 for 循环中使用 x86 程序集递增数组。如果循环(使用 c++ 制作)看起来像:
for (int i = 0; i < limit; i++)
将数组中的值放入寄存器中,然后将更改后的值放入单独的数组中。我将如何增加 x86 程序集中的每个数组(我知道 c++ 更简单,但它是练习工作),以便每次循环迭代使用的值并且放入数组中的值比上一次高一个?除了数组操作之外,循环中发生的事情的细节并不重要,因为我想知道一般情况下如何做到这一点,而不是具体情况?
您将如何在 for 循环中使用 x86 程序集递增数组。如果循环(使用 c++ 制作)看起来像:
for (int i = 0; i < limit; i++)
将数组中的值放入寄存器中,然后将更改后的值放入单独的数组中。我将如何增加 x86 程序集中的每个数组(我知道 c++ 更简单,但它是练习工作),以便每次循环迭代使用的值并且放入数组中的值比上一次高一个?除了数组操作之外,循环中发生的事情的细节并不重要,因为我想知道一般情况下如何做到这一点,而不是具体情况?
您在此处编写的循环将是:
xor eax, eax ; clear loop variable
mov ebx, limit
loop:
cmp eax, ebx
je done
inc eax
jmp loop
done:
...
我真的不明白您所说的“增加数组”是什么意思。
如果你的意思是你想从一个数组中加载一些值,操纵这个值并将结果存储在一个目标数组中,那么你应该考虑这个:
在 esi 中加载源数组的指针,在 edi 中加载目标指针。
mov esi, offset array1
mov edi, offset array2
mov ebx, counter
loop:
mov eax, [esi]
do what you need
move [edi], eax
inc esi
inc edi
dec ebx
jne loop