CSE 320
Assignment Overview
Summer 2019
Computer Project #9
This assignment develops familiarity with data structures in assembly language. You will develop a set of ARM assembly language functions to complete a program which manages student statistics.
It is worth 50 points (5% of course grade) and must be completed no later than 11:59 PM on Monday, 6/24.
Assignment Deliverables
The deliverables for this assignment are the following files: proj09.makefile themakefilewhichproducesproj09
proj09.support.s the source code for your support module
Be sure to use the specified file names and to submit them for grading via the CSE handin system. Assignment Specifications
The program will use an ordered table to maintain statistics about a set of students, where each students identification number will serve as a unique key to identify that student. The capacity of the ordered table will be determined when it is created.
1. The instructor-supplied driver module (function main and associated functions) will perform all input and output, and will manage the overall operation of the program.
2. You will supply the functions whose declarations are listed below:
int search( struct table*, unsigned long, struct student** );
int delete( struct table*, unsigned long );
int insert( struct table*, unsigned long, char*, int, int, int );
Those three functions (and any helper functions which you develop) will constitute a module named proj09.support.s.
Assignment Notes
1. The functions in your support module must be hand-written ARM assembly language functions (you may not submit compiler-generated assembly language functions).
2. The file project09.support.h (appended below) includes all relevant declarations, along with descriptive comments.
3. The file project09.driver.o contains the instructor-supplied driver module.
4. The file project09.data contains a sample data set. Your program must function correctly for that sample data set, as well as any other properly formatted data set.
5. You may wish to create stubs for the required functions, then translate, link and execute the program to explore the behavior of the driver module.
/********************************************************************/ /* Declarations for Project #9 */ /********************************************************************/
struct student
{
unsigned long number; char name[25];
/* students ID number (key) */ /* students name */ /* points on Exam #1 */ /* points on Exam #2 */ /* points on homework */ /* total points (exams + hw) */ /* percent of available (rounded) */
/* number of elements in table */ /* number of students in table */ /* total points available */ /* pointer to array of students */
}; /********************************************************************/
unsigned short
unsigned short
unsigned short
unsigned short
unsigned short
};
struct table
{
exam1;
exam2;
hw;
total;
percent;
unsigned short
unsigned short
unsigned short
struct student* memory;
capacity;
count;
available;
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/* /********************************************************************/
Function: search */ */ Purpose: locate and return a pointer to a student, if the */ student is present in the table. */ */ Arguments: */ pointer to table of students */ identification number of student to be located */ pointer to pointer to student */ */ Return value: */ 1 (true) if student located, 0 (false) otherwise */
int search( struct table*, unsigned long, struct student** ); /********************************************************************/
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/* /********************************************************************/
Function: delete */ */ Purpose: delete a student from the table, if the */ student is present in the table. */ */ Arguments: */ pointer to table of students */ identification number of student to be deleted */ */ Return value: */ 1 (true) if student deleted, 0 (false) otherwise */
int delete( struct table*, unsigned long );
/********************************************************************/
/* Function: insert */
/*
/* Purpose: insert a student into the table, as long */
/* as there is room in the table and the student is not */
/* already present in the table. */
/*
/* Arguments: */
/* pointer to table of students */
/* identification number of student to be inserted */
/* pointer to name of student */
/* points on Exam #1 */
/* points on Exam #2 */
/* points on homework */
/*
/* Return value: */
/* 1 (true) if student inserted, 0 (false) otherwise */ /********************************************************************/
int insert( struct table*, unsigned long, char*, int, int, int );
*/
*/
*/
Reviews
There are no reviews yet.