Advertisement
EvgeniiKraaaaaaaav

2_LAB_ASM(C++)

Feb 21st, 2019
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.21 KB | None | 0 0
  1. //https://vk.com/evgenykravchenko0
  2.  
  3.                 ___                                        ___                   ___    
  4.                /  /\                  ___                 /  /\                 /  /\    
  5.               /  /:/_                /__/\               /  /:/_               /  /:/_  
  6.              /  /:/ /\               \  \:\             /  /:/ /\             /  /:/ /\  
  7.             /  /:/ /:/_               \  \:\           /  /:/_/::\           /  /:/ /:/_
  8.            /__/:/ /:/ /\          ___  \__\:\         /__/:/__\/\:\         /__/:/ /:/ /\
  9.            \  \:\/:/ /:/         /__/\ |  |:|         \  \:\ /~~/:/         \  \:\/:/ /:/
  10.             \  \::/ /:/          \  \:\|  |:|          \  \:\  /:/           \  \::/ /:/
  11.              \  \:\/:/            \  \:\__|:|           \  \:\/:/             \  \:\/:/  
  12.               \  \::/              \__\::::/             \  \::/               \  \::/  
  13.                \__\/                   ~~~~               \__\/                 \__\/    
  14.                             ___                                            
  15.                            /__/\                ___                 ___    
  16.                            \  \:\              /  /\               /  /\    
  17.                             \  \:\            /  /:/              /  /:/    
  18.                         _____\__\:\          /__/::\             /__/::\    
  19.                        /__/::::::::\         \__\/\:\__          \__\/\:\__
  20.                        \  \:\~~\~~\/            \  \:\/\            \  \:\/\
  21.                         \  \:\  ~~~              \__\::/             \__\::/
  22.                          \  \:\                  /__/:/              /__/:/
  23.                           \  \:\                 \__\/               \__\/  
  24.                            \__\/                      
  25.  
  26. #include <iostream>
  27. #include <cmath>
  28. using namespace std;
  29.  
  30. int main(int argc, const char * argv[])
  31. {
  32.     int x = 0;
  33.     int y = 0;
  34.     int temp_a = 0;
  35.     int temp_b = 0;
  36.     int temp_c = 0;
  37.     int result_a = 0;
  38.     int result_b = 0;
  39.     int result_c = 0;
  40.     int size;
  41.     int result_asm = 0;
  42.     int result_cpp = 0;
  43.    
  44.     cout << "Enter size of array: ";
  45.     cin >> size;
  46.    
  47.     int a[size];
  48.     int b[size];
  49.     int c[size];
  50.    
  51.     for( int i = 1; i <= size; i++)
  52.     {
  53.         cout << "Enter value of A[" << i << "] = ";
  54.         cin >> a[i];
  55.        
  56.         cout << "Enter value of B[" << i << "] = ";
  57.         cin >> b[i];
  58.        
  59.         cout << "Enter value of C[" << i << "] = ";
  60.         cin >> c[i];
  61.     }
  62.    
  63.     cout << "//Prog calc  ∑(Ai * X) + ∑(Bi*XY) + ∑(Ci)*Y " << endl;
  64.    
  65.     cout << "Enter value of X: ";
  66.     cin >> x;
  67.    
  68.     cout << "Enter value of Y: ";
  69.     cin >> y;
  70.    
  71.    
  72.     // цикл для вычисления на асемблер
  73.     for ( int i = 1; i <= size; i++)
  74.     {
  75.         temp_a = a[i];
  76.         temp_b = b[i];
  77.         temp_c = c[i];
  78.        
  79.         asm
  80.         {
  81.             mov eax , temp_a
  82.             imul x
  83.             mov temp_a , eax
  84.             mov eax , result_a
  85.             add eax , temp_a
  86.             mov result_a , eax
  87.            
  88.             mov eax , temp_b
  89.             imul x
  90.             imul y
  91.             mov temp_b , eax
  92.             mov eax , result_b
  93.             add eax , temp_b
  94.             mov result_b , eax
  95.            
  96.             mov eax , result_c
  97.             add eax , temp_c
  98.             mov result_c , eax
  99.         }
  100.     }
  101.    
  102.     asm
  103.     {
  104.         mov eax , result_c
  105.         imul y
  106.         add eax , result_b
  107.         mov result_b , eax
  108.        
  109.         mov eax , result_b
  110.         add eax , result_a
  111.         mov result_asm , eax
  112.     }
  113.    
  114.     temp_a = 0;
  115.     temp_b = 0;
  116.     temp_c = 0;
  117.     // цикл для вычислений на С++
  118.     //Prog calc  ∑(Ai * X) + ∑(Bi*XY) + ∑(Ci)*Y
  119.     for ( int i = 1; i <= size; i++)
  120.     {
  121.         temp_a = temp_a + (a[i] * x);
  122.         temp_b = temp_b + (b[i] * x * y);
  123.         temp_c = temp_c + c[i];
  124.     }
  125.    
  126.     result_cpp = temp_a + temp_b + (temp_c * y);
  127.    
  128.     cout << "Result on asm : " << result_asm  << endl;
  129.     cout << "Result on C++ : " << result_cpp << endl ;
  130.    
  131.     return 0;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement