#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;
}