Average of 4 Exercise
Objective
To get experience writing ARM assembly code for the GBA using arithmetic and shift operations.
Task
For this lab, you will write an ARM assembly function to calculate the average of four parameter
values. Your function will take 4 integers as parameters (the most that can be passed solely using
registers), and compute the average value of them.
- Start by downloading a GBA skeleton program with an empty average4 function:
wget https://ianfinlayson.net/class/cpsc305/labs/average4.tar.gz
tar xvf average4.tar.gz
- Compile the program so that you can see you have everything set up correctly:
gbacc average4.s main.c
- Run the program.gba program this creates. It should print that the average is
160. This is because the first value, 160, is passed in as r0 which is also used
as the return value. Since the function does nothing, the first parameter is used
as a return value.
- Edit the average4 function in average4.s so that it computes the average of the
four parameter values. Remember that there is no division instruction on the GBA!
How else could we divide by 4?
When the program works, it should return the correct value for the average of those
four numbers which is 130.
Submitting
When you are done, please submit the assembly code under the assignment in
Canvas.
Copyright ©
2024
Ian Finlayson | Licensed under a Creative Commons BY-NC-SA 4.0 License.