Write an assembly program that asks for the number of integers to be read. It then dynamically allocates an array of that size. It will
Write an assembly program that asks for the number of integers to be read. It then dynamically allocates an array of that size. It will stop reading integers when the array is full. After all the integers are read and validated, the program displays the entries in reverse order, the sum of the entries, and the average of the entries to 4 decimal places using only MIPS Integer commands. There will be at least 4 subprograms.
The first subprogram allocate_array will ask the user for the number of integers to be read and dynamically declares an array to hold them. It receives no arguments IN and has two arguments OUT, the base address of the dynamically declared array and it size. Do not forget to validate array size (array size should be greater than zero).
The second subprogram read_values which receives two arguments IN, the array base address and its size. Also, it makes sure that each entered number is non-negative and divisible by 2 and 3. It returns (OUT) the sum of valid numbers read in the appropriate registers.
The third subprogram print_backwards receives the base address of the array and its size as arguments IN. It has no arguments OUT. It outputs the array in reverse order one number per line at a time.
Hint: Ex: Your array length = 6. Element type = Word / Integer.
#element0 | #element1 | #element2 | #element3 | #element4 | #element5 |
You need to print the last element first. So, at the beginning of your printing backwards iteration, at least one of your register should hold the address of theArrow_Marked location of your array.
The fourth subprogram print_average which receives as arguments IN the total and count and has no arguments OUT. It outputs the average of the numbers read to 4 decimal places using only integer commands.
Hint: Take just a pencil and paper. Now try to divide 7 / 3 by hand till 4th decimal point (X. XXXX). How are you obtaining the values after the decimal point? Replicate that same step by step operation in MIPS to get the values after decimal point.
In main, you will call all 4 subprograms and declare and use static variables to hold the base address of the array, count of element, and the sum of values of the elements. This is what i have so far:
###########################################################
# Program Description
###########################################################
# Register Usage
# $t0
# $t1
# $t2
# $t3
# $t4
# $t5
# $t6
# $t7
# $t8
# $t9
###########################################################
.data
###########################################################
.text
main:
li $v0, 10 #End Program
syscall
###########################################################
###########################################################
# Subprogram Description
###########################################################
# Arguments In and Out of subprogram
#
# $a0
# $a1
# $a2
# $a3
# $v0
# $v1
# $sp
# $sp+4
# $sp+8
# $sp+12
###########################################################
# Register Usage
# $t0
# $t1
# $t2
# $t3
# $t4
# $t5
# $t6
# $t7
# $t8
# $t9
###########################################################
.data
###########################################################
.text
jr $ra #return to calling location
###########################################################
###########################################################
# Subprogram Description
###########################################################
# Arguments In and Out of subprogram
#
# $a0
# $a1
# $a2
# $a3
# $v0
# $v1
# $sp
# $sp+4
# $sp+8
# $sp+12
###########################################################
# Register Usage
# $t0
# $t1
# $t2
# $t3
# $t4
# $t5
# $t6
# $t7
# $t8
# $t9
###########################################################
.data
###########################################################
.text
jr $ra #return to calling location
###########################################################
###########################################################
# Subprogram Description
###########################################################
# Arguments In and Out of subprogram
#
# $a0
# $a1
# $a2
# $a3
# $v0
# $v1
# $sp
# $sp+4
# $sp+8
# $sp+12
###########################################################
# Register Usage
# $t0
# $t1
# $t2
# $t3
# $t4
# $t5
# $t6
# $t7
# $t8
# $t9
###########################################################
.data
###########################################################
.text
jr $ra #return to calling location
###########################################################
###########################################################
# Subprogram Description
###########################################################
# Arguments In and Out of subprogram
#
# $a0
# $a1
# $a2
# $a3
# $v0
# $v1
# $sp
# $sp+4
# $sp+8
# $sp+12
###########################################################
# Register Usage
# $t0
# $t1
# $t2
# $t3
# $t4
# $t5
# $t6
# $t7
# $t8
# $t9
###########################################################
.data
###########################################################
.text
jr $ra #return to calling location
###########################################################
###########################################################
# Subprogram Description
###########################################################
# Arguments In and Out of subprogram
#
# $a0
# $a1
# $a2
# $a3
# $v0
# $v1
# $sp
# $sp+4
# $sp+8
# $sp+12
###########################################################
# Register Usage
# $t0
# $t1
# $t2
# $t3
# $t4
# $t5
# $t6
# $t7
# $t8
# $t9
###########################################################
.data
###########################################################
.text
jr $ra #return to calling location
#########################################################
Step by Step Solution
There are 3 Steps involved in it
Step: 1
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started