This shows you the differences between two versions of the page.
ac-is:teme-ie:course_project_assembly [2024/01/07 22:08] ionut.pascal created |
ac-is:teme-ie:course_project_assembly [2024/01/08 13:04] (current) ionut.pascal |
||
---|---|---|---|
Line 10: | Line 10: | ||
===== Objectives ===== | ===== Objectives ===== | ||
+ | This is a different kind of assignment for students which are interested in using a CPU rather than building its architecture. The main objective of this project is to get familiar with the assembly language using a dedicated ISA, by accommodating the given examples and improving their functionality. You will: | ||
+ | * Develop a new program based on a given example; | ||
+ | * Work with low-level programming with limited hardware resources; | ||
===== Description and requirements ===== | ===== Description and requirements ===== | ||
+ | Implement an assembly program which reads N elements from the keyboard and swaps the minimum value with the maximum value. The program shall have and use at least one subroutine - you can have the swap function here. | ||
+ | The implementation shall be done in 2 steps: | ||
+ | - Build and run a C program which implements the desired functionality - better if you use pointers instead of fixed uni-dimensional arrays | ||
+ | - Based on the C implementation, build the MARIE assembly program. | ||
- | + | Beside the C program and the MAR program, you must upload a README file which contains a short comparison between the two solutions and a short description of the algorithm you've chosen. | |
- | ===== Implementation ===== | + | |
===== Notes ===== | ===== Notes ===== | ||
- | + | There are several examples provided to figure out how to execute diverse operations with the MARIE CPU. You can use them to understand the procedures. | |
+ | Assembly programming implies managing the hardware recourses properly; the closest higher-level programming that you already know is C programming with pointer use and dynamic allocation. | ||
===== Additional details ===== | ===== Additional details ===== | ||
Line 32: | Line 36: | ||
* description of any complex coding parts that you consider additional explanation is needed and they are too long to be an inline comment; | * description of any complex coding parts that you consider additional explanation is needed and they are too long to be an inline comment; | ||
| | ||
- | <note important>This assignment is an **individual** assignment; using any code from external sources can be considered as plagiarism and can lead to voiding the accumulated points! </note> | + | <note important>This assignment is an **individual** assignment; using any code from external sources can be considered plagiarism and can lead to voiding the accumulated points! </note> |
Line 38: | Line 42: | ||
* +10.0 pts.: Correct implementation with passing stimuli from the keyboard | * +10.0 pts.: Correct implementation with passing stimuli from the keyboard | ||
+ | * +2.0 pts.: C implementation | ||
+ | * +8.0 pts.: Assembly implementation | ||
+ | * +1.0 pts.: Bonus for C implementation if pointers are used for the array. | ||
* -1.0 pts.: the absence of the README file; | * -1.0 pts.: the absence of the README file; | ||
* -1.0 pts.: bad coding style (chaotic indentation, irregular spacing, strange naming for variables, etc.); | * -1.0 pts.: bad coding style (chaotic indentation, irregular spacing, strange naming for variables, etc.); |