Advertisement
Leeen

sys_pro_3

Apr 18th, 2020
439
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.79 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #define length 10
  4. using namespace std;
  5. //вариант 20:
  6. //Найти произведение квадратов всех отрицательных элементов массива A = {a[i]}
  7.  
  8. void calc(int* array) {
  9.     int flag = 0;
  10.     int result = 1;
  11.    
  12.     _asm {
  13.         xor esi, esi; подготовим регистр индекса
  14.         mov ebx, array; ebx указывает на начало массива
  15.         mov ecx, length
  16.         mov edx, 0
  17.        
  18.  
  19.         begin_loop:
  20.         mov eax, [ebx + esi * 4]; определим текущий элемент
  21.             cmp eax, 0; сравнение a[i] и 0
  22.             jg end_loop; если больше, завершим цикл
  23.  
  24.             mul eax; возводим число в квадрат
  25.             add flag, 1
  26.             mul result
  27.             mov result, eax
  28.            
  29.         end_loop:
  30.             inc esi; переходим к следующему элементу
  31.             loop begin_loop; повторяем для всех элементов массива
  32.  
  33.         exit:
  34.            
  35.     }
  36.     if (flag == 0)
  37.         result = 0;
  38.         cout << "Result assembler calc = " << result << endl;
  39. }
  40.  
  41. int main() {
  42.     int array[length];
  43.     for (int i = 0; i < length; i++) {
  44.         int s;
  45.         cout << "Enter " << i + 1 << " element of array: ";
  46.         cin >> s;
  47.         array[i] = s;
  48.     }
  49.     calc(array);
  50.     int res = 1;
  51.     int a;
  52.     bool res_flag = false;
  53.     for (int i = 0; i < length; i++) {
  54.         if (array[i] < 0) {
  55.             res *= (array[i] * array[i]);
  56.             res_flag = true;
  57.         }
  58.     }
  59.     if (res_flag != 1)
  60.         res = 0;
  61.     cout << "Result C++ calc = " << res << endl;
  62.     return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement