Write a MIPS program to solve the following problem a Prompt
Write a MIPS program to solve the following problem: a. Prompt the user to enter 3 integer values. b. Read the integer. c. Calculate and print the average of the integers as an integer result. d. Calculate and print the average of the integers as a floating point number. The number of decimal places is not relevant in your answer
***no Pseudo-instructions allowed***
This is what I have so far:
.data
data:.word 0,0,0
prompt: .asciiz \"Enter 3 integers\ \"
newline: .asciiz \"\ \"
.text
ori $v0,$0,4 # Command to print string
lui $a0,0x1001 # Sets register for data
addiu $a0,$a0,12 # Get start of prompt
syscall # Print the prompt
ori $v0,$0,5 # Command to read integer
syscall # Value in $v0
lui $t0,0x1001 # Sets register $t0
sw $v0, 0($t0) # Stores value of first integer
ori $v0,$0,5 # Command to read integer
syscall # Value in $v0
lui $t1,0x1001
sw $v0, 4($t1) # Stores value of second integer
ori $v0,$0,5 # Command to read integer
syscall # Value in $v0
lui $t2,0x1001
sw $v0, 8($t2) # Stores value of second integer
add $t0,$t0,$t1
add $t0,$t0,$t2 # Sums three integers
Solution
Solution:
#program that asks user for input three integers
#and prints its average
.data 0x10010000
newline: .asciiz \"\ \"
prompt: .asciiz \"Enter 3 integers\ \"
.globl main
.text
main:
lui $v0, 0 #load instruction to print a string
ori $v0, $0, 4
lui $a0, 0x1001 #load address of string prompt
ori $a0, $a0, 0x0002
syscall
lui $v0, 0 #load instruction to read 1st integer
ori $v0, $0, 5
syscall
ori $t4,$v0,0
lui $v0, 0 #load instruction to read 2nd integer
ori $v0, $0, 5
syscall
ori $t5,$v0,0
lui $v0, 0 #load instruction to read 3rd integer
ori $v0, $0, 5
syscall
ori $t6,$v0,0
add $t7,$t4,$t5
add $t7,$t7,$t6
ori $s0,$0,3
div $t7,$s0
mflo $t8
lui $v0, 0 #load instruction to print a integer
ori $v0, $0, 1
ori $a0,$t8,0
syscall
lui $v0, 0 #load instruction to print a string
ori $v0, $0, 4
lui $a0, 0x1001 #load address of string to print newline
ori $a0, $a0, 0x0000
syscall
mtc1 $t7,$f1
mtc1 $s0,$f3
div.s $f12, $f1, $f3
lui $v0, 0 #load instruction to print a float
ori $v0, $0, 2
syscall

