Как увеличить массив в сборке x86?

Как бы вы увеличили массив с помощью сборки x86 внутри цикла for. Если цикл (созданный с использованием c ++) выглядит так:

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

Значение из массива помещается в регистр, затем измененное значение помещается в отдельный массив. Как увеличить каждый массив в сборке x86 (я знаю, что c ++ проще, но это практическая работа), чтобы каждый раз, когда цикл повторял используемое значение, а значение, помещенное в массивы, было на единицу больше, чем в предыдущий раз? Детали того, что происходит в цикле помимо манипулирования массивом, не важны, так как я хотел бы знать, как это можно сделать в целом, а не в конкретной ситуации?

0

Решение

Цикл, который вы пишете здесь, будет:

   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
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]