Загрузка данных


#include <iostream>
#include <ctime>
using namespace std;

int main()
{
    setlocale(LC_ALL, "russian");
    srand(time(0));

    int n;
    cout << "Введите количество элементов в массивах: ";
    cin >> n;

    int* mas = new int[n];
    int* masiv = new int[n];
    int* masresult = new int[n];

    int ostatok = 0;
    char znak;
    cout << "Введите +, -, * или /: ";
    cin >> znak;

    // Заполнение первого массива
    cout << "Введите элементы первого массива:\n";
    for (int i = 0; i < n; i++) {
        mas[i] = rand() % 20001 - 10000;
        cout << mas[i] << " ";
    }

    // Заполнение второго массива
    cout << "\n\nВведите элементы второго массива:\n";
    for (int i = 0; i < n; i++) {
        masiv[i] = rand() % 20001 - 10000;
        cout << masiv[i] << " ";
    }

    // ==================== ТАЙМЕР ====================
    clock_t start = clock();
    
    for (int i = 0; i < n; i++) {
        int a = mas[i];
        int b = masiv[i];
        int res = 0;

        __asm {
            mov eax, a
            mov ebx, b

            cmp znak, '+'
            je PLUS
            cmp znak, '-'
            je MINUS
            cmp znak, '*'
            je MULT
            cmp znak, '/'
            je DELENIE
            jmp EXEAF

        PLUS:
            add eax, ebx
            jmp EXEAF

        MINUS:
            sub eax, ebx
            jmp EXEAF

        MULT:
            imul ebx
            jmp EXEAF

        DELENIE:
            cmp ebx, 0
            je DIV_ZERO
            cdq
            idiv ebx
            mov ostatok, edx
            jmp EXEAF

        DIV_ZERO:
            mov eax, 0
            mov ostatok, 0
            jmp EXEAF

        EXEAF:
            mov res, eax
        }

        masresult[i] = res;
    }

    clock_t end = clock();
    double time_taken = double(end - start) / CLOCKS_PER_SEC;
    // ================================================

    // Вывод результата
    cout << "\n\nРезультат:\n";
    for (int i = 0; i < n; i++) {
        cout << "Результат [" << i << "] = " << masresult[i];
        if (znak == '/') {
            cout << " (остаток = " << ostatok << ")";
        }
        cout << "\n";
    }

    cout << "\nВремя выполнения: " << time_taken << " секунд\n";

    delete[] mas;
    delete[] masiv;
    delete[] masresult;

    system("pause");
    return 0;
}