help please the code is not returning the correct average value, I think the result that gets printed does not hold the right value. .dataprompt1: .asciiz "Enter the number of real numbers: "prompt2: .asciiz "Enter a real number: "result: .asciiz "The average is: " .text.globl mainmain:# Prompt for the number of real numbersli $v0, 4la $a0, prompt1syscall li $v0, 5 # Read integer (n)syscallmove $t0, $v0 # Store number in $t0move $t1, $zero # Counter # Initialize floating-point sum to 0.0mtc1 $zero, $f0 # Move zero to $f0cvt.s.w $f0, $f0 # Convert to float input_loop:beq $t1, $t0, calculate # Exit loop # Prompt and read each real numberli $v0, 4la $a0, prompt2syscall li $v0, 6 # Read floatsyscall add.s $f0, $f0, $f12 # Add float to sum addi $t1, $t1, 1 # Increment counterj input_loop calculate:# Calculate averagemtc1 $t0, $f2 # Move count to $f2cvt.s.w $f2, $f2 # Convert to floatdiv.s $f4, $f0, $f2 # Divide sum by count # Print resultli $v0, 4la $a0, resultsyscall mov.s $f12, $f4 # Move average to $f12li $v0, 2 # Print floatsyscall # Exitli $v0, 10syscall
help please the code is not returning the correct average value, I think the result that gets printed does not hold the right value.
.data
prompt1: .asciiz "Enter the number of real numbers: "
prompt2: .asciiz "Enter a real number: "
result: .asciiz "The average is: "
.text
.globl main
main:
# Prompt for the number of real numbers
li $v0, 4
la $a0, prompt1
syscall
li $v0, 5 # Read integer (n)
syscall
move $t0, $v0 # Store number in $t0
move $t1, $zero # Counter
# Initialize floating-point sum to 0.0
mtc1 $zero, $f0 # Move zero to $f0
cvt.s.w $f0, $f0 # Convert to float
input_loop:
beq $t1, $t0, calculate # Exit loop
# Prompt and read each real number
li $v0, 4
la $a0, prompt2
syscall
li $v0, 6 # Read float
syscall
add.s $f0, $f0, $f12 # Add float to sum
addi $t1, $t1, 1 # Increment counter
j input_loop
calculate:
# Calculate average
mtc1 $t0, $f2 # Move count to $f2
cvt.s.w $f2, $f2 # Convert to float
div.s $f4, $f0, $f2 # Divide sum by count
# Print result
li $v0, 4
la $a0, result
syscall
mov.s $f12, $f4 # Move average to $f12
li $v0, 2 # Print float
syscall
# Exit
li $v0, 10
syscall
Unlock instant AI solutions
Tap the button
to generate a solution