CS201 Lab: SPIM Addressing Modes
Objective of this lab:
To practice using base addressing to implement arrays
in Spim. You will also use loops.
Preparation
Read lab lecture notes.
Lab Assignment
Please note:
To make it easier for marking, you are required to submit
one .pdf file and all the .s files.
The .pdf file will contain all the required components for the lab assignment including the code for the .s files.
This will apply to Lab #6 to Lab #9.
Program#1: (Will be marked)
Complete the SPIM assembly language program loop1.s.
- The program will calculate the sum of the elements in "array".
- Here is the program skeleton; you will complete it.
##
## Program Name: loop1.s
##
## - will calculate the sum of the elements in "array".
## - "count" holds the number of elements in "array".
##
##
## - Output format must be
## "sum = 15"
##
## $t0 - point to array elements in turn
## $t1 - contains count of elements
## $t2 - contains sum
##
## $t3 - each word from array in turn
##
#################################################
# #
# text segment #
# #
#################################################
.text
.globl __start
__start: # execution starts here
# Put your answer between dashed lines.
#
#------------------Your code starts next line---------------
#-----------------Your code ends above this line----------------
la $a0,endl # syscall to print out
li $v0,4 # a new line
syscall
li $v0,10 # Exit
syscall # Bye!
#################################################
# #
# data segment #
# #
#################################################
.data
array: .word 3, 4, 2, 6
count: .word 4
ans1: .asciiz "sum = "
endl: .asciiz "\n"
##
## end of file loop1.s
- Print out the sum in this format: "sum = 15"
Program#2: (Will be marked)
Complete the SPIM assembly language program loop2.s.
- The program will calculate the sum of the elements in "numbers"
whose value is less than or equal to 1000.
- Here is the program skeleton; you will complete it.
##
## Program Name: loop2.s
##
## - will calculate the sum of all elements in the array "numbers"
## whose value is less than or equal to 1000.
## - "numbers" is an array with 5 integer elements.
## - "count" holds the number of elements in "numbers".
##
## - Output the sum
##
## $t0 - points to array elements in turn
## $t1 - contains a count of elements
## $t2 - contains sum
##
## $t3 - each word from the array "numbers" in turn
##
#################################################
# #
# text segment #
# #
#################################################
.text
.globl __start
__start: # execution starts here
# Put your answer between dashed lines.
#
#------------------Your code starts next line---------------
#-----------------Your code ends above this line----------------
la $a0,endl # syscall to print out
li $v0,4 # a new line
syscall
li $v0,10 # Exit
syscall # Bye!
#################################################
# #
# data segment #
# #
#################################################
.data
numbers:
.word 3, 1000, 2, 6, 3000
count: .word 5
ans1: .asciiz "sum = "
endl: .asciiz "\n"
##
## end of file loop2.s
- Print out the sum.
Program#3: (not required for assignment handin)
Write a program called Average.s
##
## - The program will ask the user to enter 10 numbers and
## store the numbers as an array of words in the memory.
## - The program will call a function/procedure CalAvg to
## find the average of the array elements.
## - The function/procedure CalAvg will return the average
## of the array elements to the calling function.
## - Print the calculated average (returned from the function CalAvg)
## in the calling function.
## - Use these testing values for the assignment submission:
## 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
##
You will hand in the following:
- The source code in the files loop1.s and loop2.s.
- The screenshot to show the screen right after you loaded the .s file.
- The screenshot of the console displaying the corresponding results
- You are asked to submit one .pdf file and all the .s files. If you miss any one of them, you will get 0 marks.
Copyright: Department of Computer Science, University of Regina.