Использование языка ассемблер, страница 2

Для нахождения среднего арифметического нам уже необходим только один цикл, т.к. значение одной координаты уже задано. В теле цикла мы добавляем в переменную result значение очередного элемента, а по выходе из цикла мы делим полученные результат на общее количество элементов среди которых мы находим среднее арифметическое.

Текстпрограммы

#include <iostream>

#include <conio.h>     

#include <time.h>

#include <iomanip>     

#define SIZE_X 10

#define SIZE_Y 10

using namespace std;

struct point

{

      int x;

      int y;

};

int **A;

point max(int **A, int size_x, int size_y)

{

      point result;

      int x, y;

      __asm

      {

            mov result.x, 0

            mov result.y, 0

            mov ecx, A

            mov edx, [ecx]

            mov edi, [edx]

            mov x, 0

            jmp x_cmp

x_add:      mov eax, x

            add eax, 1

            mov x, eax

x_cmp:      mov eax, size_x

            cmp x, eax

            jge x_end

            mov eax, x

            mov edx, [ecx+eax*4]

            mov y, 0

            jmp y_cmp

y_add:      mov eax, y

            add eax, 1

            mov y, eax

y_cmp:      mov eax, size_y

            cmp y, eax

            jge y_end

            mov eax, y

            mov esi, [edx+eax*4]

            cmp esi, edi

            jle y_add

            mov eax, x

            mov result.x, eax

            mov eax, y

            mov result.y, eax

            mov edi, esi

            jmp y_add

y_end:

            jmp x_add

x_end:                 

      }

      return result;

}

point min(int **A, int size_x, int size_y)

{

      point result;

      int x, y;

      __asm

      {

            mov result.x, 0