/**********************************************************
 * An example to illustrate C program calling assembly    *
 * procedure and assembly procedure calling a C function. *
 * This program calls the assembly language procedure     *
 * in file MARKS_A.ASM. The program outputs minimum,      *
 * maximum, and rounded average of a set of marks.        *
 **********************************************************/
#include <stdio.h>

#define  CLASS_SIZE  50

int main(void)
{
      int     marks[CLASS_SIZE];
      int     minimum, maximum, average;
      int     class_size, i;
      int     find_avg(int, int);
      extern  void stats(int*, int, int*, int*, int*);

      printf("Please enter class size (<50): ");
      scanf("%d", &class_size);
      printf("Please enter marks:\n");
      for (i=0; i<class_size; i++)
          scanf("%d", &marks[i]);
      
      stats(marks, class_size, &minimum, &maximum, &average);
      printf("Minimum = %d, Maximum = %d, Average = %d\n", 
                        minimum, maximum, average);
      return 0;
}
 /*********************************************************
  * Returns the rounded average required by the assembly 
  * procedure STATS in file MARKS_A.ASM.
  *********************************************************/
int find_avg(int total, int number)
{
      return((int)((double)total/number + 0.5));
}
