Код на Ассемблере. Переписать из массива А в массив 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;
}

Ответы (0 шт):