In: Computer Science
Write a simple MIPS Assembly program to average 3 integers. Make sure to read in three numbers from the user instead of hard coding them. To divide the sum by 3 you may use div $t0, $t0, 3 where register $t0 conatins the sum of the 3 integers.
.data
prompt1: .asciiz " Please enter an integer: "
prompt2: .asciiz " Please enter an integer: "
prompt3: .asciiz " Please enter an integer: "
result: .asciiz "The average of three number is: "
.text
main:
li $v0, 4 # syscall to print string
la $a0, prompt1
syscall
li $v0, 5 # syscall to read an integer
syscall
move $t0, $v0 # move number to read into $t0
li $v0, 4
la $a0, prompt2
syscall
li $v0,5
syscall
move $t1, $v0
li $v0, 4
la $a0, prompt3
syscall
li $v0,5
syscall
move $t2, $v0
# add all integers to $t3
add $t3, $t0, $t1
add $t3, $t2, $t3
li $v0, 1
syscall
# Read the sum
li $v0, 3
syscall
move $t3, $v0
# Divide Sum / count
div $t4, $t3, 3
#li $v0, 1
#move $a0, $t4
#print out the average
move $a0, t4
li $v0, 1
la $a0, result
syscall
exit:
li $v0, 10
syscall
Whats the problem?
Greetings!!
Code:
#DATA SEGMENT
.data
prompt1: .asciiz " Please enter an integer: "
prompt2: .asciiz " Please enter an integer: "
prompt3: .asciiz " Please enter an integer: "
result: .asciiz "The average of three number is: "
#CODE SEGMENT
.text
main:
#DISPLAY PROMPT1
li $v0, 4 #parameter to print string
la $a0, prompt1 #address of prompt1
syscall #syscall for print string
#READ 1ST NUMBER
li $v0, 5 #parameter to read an integer
syscall #syscall for read number
move $t0, $v0 #move number read to register $t0
#DISPLAY PROMPT2
li $v0, 4 #parameter to print string
la $a0, prompt2 #address of prompt2
syscall #syscall for print string
#READ 2ND NUMBER
li $v0,5 #parameter to read an integer
syscall #syscall for read number
move $t1, $v0 #move number read to register $t1
#DISPLAY PROMPT3
li $v0, 4 #parameter to print string
la $a0, prompt3 #address of prompt2
syscall #syscall for print string
#READ 3RD NUMBER
li $v0,5 #parameter to read an integer
syscall #syscall for read number
move $t2, $v0 #move number read to register $t2
# ADD ALL INTEGERS TO $T3
add $t3, $t0, $t1 #sum of first 2 numbers into t3
add $t3, $t2, $t3 #sum of 3 numbers into t3
# DIVIDE SUM / COUNT
div $t4, $t3, 3 #calculate the average
#DISPLAY MESSAGE "THE AVERAGE OF..."
li $v0, 4 #parameter for display string
la $a0, result #address of the string
syscall #system call for display string
#PRINT OUT THE AVERAGE
move $a0,$t4 #load the average into register a0 for display
li $v0, 1 #parameter for display number
syscall #system call for display number
#TERMINATE THE EXECUTION
li $v0, 10
syscall
Output screenshot:
Hope this helps