#include <iostream>
#include <cstdlib>
#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++) {
masiv[i] = rand() % 20001 - 10000;
cout << masiv[i] << " ";
}
cout << endl;
cout << "Введите элементы второго массива:\n";
for (int i = 0; i < n; i++) {
masiv[i] = rand() % 20001 - 10000;
cout << masiv[i] << " ";
}
cout << endl;
for (int i = 0; i < n; i++) {
int a = mas[i];
int b = masiv[i];
int res = 0;
ostatok = 0;
if (znak == '/' && b == 0) {
cout << "Ошибка деление на ноль[" << i <<"]";
masresult[i] = 0;
}
asm(
"cmpb $'+', %%cl;"
"je PLUSdeis;"
"cmpb $'-', %%cl;"
"je MINUS;"
"cmpb $'*', %%cl;"
"je MULT;"
"cmpb $'/', %%cl;"
"je DELENIE;"
"jmp konec;"
"PLUSdeis:"
"addl %%ebx, %%eax;"
"jmp konec;"
"MINUS:"
"subl %%ebx, %%eax;"
"jmp konec;"
"MULT:"
"imull %%ebx;"
"jmp konec;"
"DELENIE:"
"cltd;"
"idivl %%ebx;"
"jmp konec;"
"konec:"
: "=a"(res), "=d"(ostatok)
: "a"(mas[i]), "b"(masiv[i]), "c"(znak)
);
masresult[i] = res;
cout << "Результат [" << i << "] = " << masresult[i] << endl;
if (znak == '/')
cout << "Остаток = " << ostatok << endl;
}
}