Код на Ассемблере. Переписать из массива А в массив B элементы массива А, индексы которых являются числами Фибоначчи(1,2,3,5,8,13...)
нужно написать программу на Ассемблере с помощью вставки на C++. Нужно с помощью сравнений и прыжков в коде ассемблера записать в массив B из массива А те элементы массива А, индексы которых являются числами Фибоначчи. К примеру, B[0]=A[1], B[1]=A[2], B[2]=A[3], B[3]=A[5], B[4]=A[8], B[5]=A[13] и т.д. Третий час ломаю голову, сложно ограничиваться четырьмя регистрами [EAX:EDX]
#include <iostream>
#include <ctime>
#include <stdlib.h>
#define N 89
using namespace std;
int main() {
system("chcp 1251");
system("cls");
int A[N], B[N], idnew = 0, idp = 0, idpp = 0, i = 0;
srand(time(0));
for (i = 0; i < N; i++) {
A[i] = rand() % 10 - 5;
}
printf("Massive A:\n");
for (i = 0; i < N; i++) {
printf("%d ", A[i]);
}
printf("\n");
__asm {
mov ecx, 1
mov ebx, 0
p1:
mov eax, [A + (type A) * ecx]
mov[B + (type B) * ebx], eax
p2:
inc ebx
mov idnew, ebx
inc ecx
add idnew, ecx
p3:
mov edx, [A + (type A) * idnew]
mov[B + (type B) * ebx], edx
}
printf("Massive B:\n");
for(i = 0; i < N; i++){
printf("%d ", B[i]);
}
return 0;
}