0

您将如何在 for 循环中使用 x86 程序集递增数组。如果循环(使用 c++ 制作)看起来像:

for (int i = 0; i < limit; i++)

将数组中的值放入寄存器中,然后将更改后的值放入单独的数组中。我将如何增加 x86 程序集中的每个数组(我知道 c++ 更简单,但它是练习工作),以便每次循环迭代使用的值并且放入数组中的值比上一次高一个?除了数组操作之外,循环中发生的事情的细节并不重要,因为我想知道一般情况下如何做到这一点,而不是具体情况?

4

1 回答 1

4

您在此处编写的循环将是:

   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
于 2013-05-06T17:53:15.613 回答