Как бы вы увеличили массив с помощью сборки x86 внутри цикла for. Если цикл (созданный с использованием 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
Других решений пока нет …