• Предмет: Информатика
  • Автор: olegdidukh1008
  • Вопрос задан 2 месяца назад

__asm
{
mov ecx, 0
start1:
mov edi, 0
start2 :
mov edx, res // edx = res
mov esi, ecx
imul esi, 4
add edx, esi // edx = &res[i]
push [edx]
pop edx // edx = res[i]
mov esi, edi
imul esi, 4
add edx, esi // edx = &res[i][j]
push edx
xor esi, esi
start :
mov eax, a
mov ebx, b
a_to_eax :
mov edx, ecx
mov eax, [eax + 4 * edx] // eax = a[i]
mov edx, esi
mov eax, [eax + 4 * edx] // eax = a[i][esi]
b_to_ebx :
mov edx, esi
mov ebx, [ebx + 4 * edx] // ebx = b[esi]
mov edx, edi
mov ebx, [ebx + 4 * edx] // ebx =b[esi][j]
end :
pop edx
imul eax, ebx // eax = a[i][esi]*b[esi][j]
add[edx], eax
push edx
inc esi
cmp esi, n
jne start
pop edx
inc edi
cmp edi, n
jne start2
inc ecx
cmp ecx, n
jne start1
}
// ВИВЕДЕННЯ РЕЗУЛЬТАТУ
cout << " A * B: " << endl;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << res[i][j] << " ";
}
cout << endl;
}
cout << res << endl; system("pause");
}
Переробіть асемблер під це завдання: Для квадратної матриці A= {aij} порядку nобчислити різницю між максимальним елементом рядків з парними номерами і мінімальним елементом рядків з непарними номерами. В с++

Ответы

Ответ дал: 4ejl89211
0

#include <iostream>

#include <climits>

int main() {

   const int n = 4; // Размерность матрицы

   int A[n][n] = {{1, 2, 3, 4},

                  {5, 6, 7, 8},

                  {9, 10, 11, 12},

                  {13, 14, 15, 16}};

   int max_even = INT_MIN; // Максимальный элемент рядков с парными номерами

   int min_odd = INT_MAX; // Минимальный элемент рядков с непарными номерами

   for (int i = 0; i < n; i++) {

       if (i % 2 == 0) { // Проверка на парность номера ряда

           for (int j = 0; j < n; j++) {

               if (A[i][j] > max_even) {

                   max_even = A[i][j];

               }

           }

       } else { // Непарные номера рядов

           for (int j = 0; j < n; j++) {

               if (A[i][j] < min_odd) {

                   min_odd = A[i][j];

               }

           }

       }

   }

   int result = max_even - min_odd;

   std::cout << "Difference: " << result << std::endl;

   

   return 0;

}

Вас заинтересует