У меня есть это домашнее задание, чтобы прочитать массив от пользователя, затем найти среднее значение и найти определенный c номер, введенный пользователем. Я не могу напечатать значение avg и вывод findNumber дает мне тот же результат и хочу прочитать возвращаемые значения методов AveArray () и FindNum () и отобразить результаты в главном. Можете ли вы помочь мне, пожалуйста, вот мой код:
.data
arr_size : .asciiz "Please enter number of elements (N) : " ;
array : .asciiz "Please enter number of the array : \n" ;
options : .asciiz " **** Options**** \n " ;
Compute: .asciiz " 1- To compute the average of the array elements .\n " ;
Search : .asciiz " 2- Search for a number in the array.\n " ;
choice : .asciiz "Enter your choice: " ;
average : .asciiz "The average is : " ;
value : .asciiz "\nEnter the value to be searched : " ;
found : .asciiz "Number is found " ;
notFound : .asciiz "Nmber is not found " ;
arr: .word 40
#---------------------------------------------------------------------------------
.text
main:
li $t0, 0 #sets index to 0
li $t1, 0 #sets input num to 0
li $t2, 0 # sets count to 0
li $s0, 0 #sets sum to 0
li $t7, 1 #sets choice to 1
# display the arraySize message
la $a0,arr_size
li $v0,4
syscall
#user input number of elements
li $v0,5
syscall
move $t3,$v0
# display the numberOfArray message
la $a0,array
li $v0,4
syscall
jal rearArray
# display the Options message
la $a0,options
li $v0,4
syscall
# display the firstChoice message
la $a0,Compute
li $v0,4
syscall
# display secondChoice message
la $a0,Search
li $v0,4
syscall
# display userChoice message
la $a0,choice
li $v0,4
syscall
li $v0,5
syscall
move $t6,$v0
beq $t6, $t7, aveArray
jal FindNum
#------------------------------------------------------------------------
rearArray:
beq $t2, $t3, end #if count > size of array stop
li $v0, 5
syscall
move $t1,$v0 # sets input to num
sb $t1, arr($t0) #stores integer in array
addi $t0, $t0, 4 #increments index by 4
addi $t2, $t2, 1 #increments count
j rearArray
end : jr $ra
#----------------------------------------------------
aveArray :
beq $t2, $t3,avg #exits loop when everything is read
lw $t1, arr($t0)
add $s0, $s0, $t1 #calculates sum
addi $t0, $t0, 4 #increments index by 4
addi $t2, $t2, 1 #increments count
j aveArray
avg :
div $s1, $s0, $t3 #calculates average
la $a0,average
li $v0,4
syscall
li $v0,4
move $a0
# end of program
li $v0,10
syscall
#------------------------------------------------------------
FindNum :
la $a0,value
li $v0,4
syscall
li $v0,5
syscall
move $t8,$v0 #search for a specific number
beq $t2, $t3,end1 #exits loop when everything is read
lw $t1, arr($t0)
beq $t8,$t1,end2
addi $t0, $t0, 4 #increments index by 4
addi $t2, $t2, 1 #increments count
j FindNum
end2:
la $a0,found
li $v0,4
syscall
jr $ra
end1 :
la $a0,notFound
li $v0,4
syscall
jr $ra