Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I have a piece of MIPS code that will sort any numbers in order inputted from us

ID: 3914592 • Letter: I

Question

I have a piece of MIPS code that will sort any numbers in order inputted from user. I need help however getting the arranged array to then calculate the mean, median, and mode.

Here is the code i currently have

#Define data

.data

#Define space

nmbrs: .space 36

#Define message

msg1: .asciiz "Enter value: 1111 for exit "

#Define message

msg2: .asciiz "The array : "

#Define newline

nxtLne: .asciiz " "

#Define text

.text

#Define main

.globl main

#Main

main:

#Load nmbrs

la $a1, nmbrs

#Load

li $a2, 9

#Set counter

li $t0, 0

#Load exit condition

li $t1,1111

#Loop

loop:

#Display message

la $a0, msg1

#Load

li $v0, 4

#System call

syscall

# Store

li $v0, 5

#System call

syscall

#Branch

beq $v0,$t1,sort

#Add instruction

addi $t0,$t0,4

#Store

sw $v0, ($a1)

#Add

addi $a1, $a1, 4

#Jump

j loop

#Define method

sort:

    la   $t4, nmbrs        

    la   $t1, nmbrs         

    addi $t1,$t1,4

    la $t8,nmbrs

    add $t8,$t0,$t8

     la $t9,nmbrs

     add $t9,$t0,$t9   

     addi $t9,$t9,-4

#Define method

lps:    lw   $t2,($t4)          

         lw   $t3,($t1)         

         blt $t2,$t3,next      

         sw $t3,($t4)      

         sw   $t2,($t1)

        

#Define method

next:    addi $t1,$t1,4

         blt $t1,$t8,lps      

         addi $t4,$t4,4            

         move $t1,$t4

         addi $t1,$t1,4

         blt $t4,$t9,lps       

#Define method

prntArry:

     la $a1,nmbrs

     la $a0, msg2

     li $v0, 4

     syscall

#Define method

loop1:

     blez $t0, done

     li $v0, 1

     lw $a0, 0($a1)

     syscall

     la $a0, nxtLne

     li $v0, 4

     syscall

     addi $a1, $a1, 4

     addi $t0, $t0, -4

     j loop1

    

#Define method

done:

     j done

Explanation / Answer

ScreenShot

-----------------------------------------------------------------------------------------

Program

#Define data
.data
#Define space
nmbrs: .space 36
#Mean prompt
mean: .asciiz "Mean Value= "
#Median prompt
median: .asciiz "Median Value= "
#Mode prompt
modePrompt: .asciiz "Mode Value= "
#Define message
msg1: .asciiz "Enter value: 1111 for exit "
#Define message
msg2: .asciiz "The array : "
#Define newline
nxtLne: .asciiz " "
#Define text
.text
#Define main
.globl main
#Main
main:
#Load nmbrs
la $a1, nmbrs
#Load
li $a2, 9
#Set counter
li $t0, 0
li $s0,0
li $s1, 0
#Load exit condition
li $t1,1111
#Loop
loop:
#Display message
la $a0, msg1
#Load
li $v0, 4
#System call
syscall
# Store
li $v0, 5
#System call
syscall
#Branch
beq $v0,$t1,sort
addi $s0,$s0,1
#Add instruction
addi $t0,$t0,4
#Store
sw $v0, ($a1)
#Add
addi $a1, $a1, 4
#Jump
j loop
#Define Sort method
sort:
    la   $t4, nmbrs      
    la   $t1, nmbrs       
    addi $t1,$t1,4
    la $t8,nmbrs
    add $t8,$t0,$t8
    la $t9,nmbrs
    add $t9,$t0,$t9
    addi $t9,$t9,-4
#Define method
lps:    lw   $t2,($t4)        
        lw   $t3,($t1)       
        blt $t2,$t3,next    
        sw $t3,($t4)    
        sw   $t2,($t1)
#Define method
next:    addi $t1,$t1,4
         blt $t1,$t8,lps    
         addi $t4,$t4,4          
         move $t1,$t4
         addi $t1,$t1,4
         blt $t4,$t9,lps     
#Define method
prntArry:
      la $a1,nmbrs
      la $a0, msg2
      li $v0, 4
      syscall
#Define method
loop1:
     blez $t0, done
     li $v0, 1
     lw $a0, 0($a1)
     add $s1,$s1,$a0
     syscall
     la $a0, nxtLne
     li $v0, 4
     syscall
     addi $a1, $a1, 4
     addi $t0, $t0, -4
     j loop1
#Define method
done:
     #Mean display
     la $a0,mean   #mean prompt
     li $v0,4
     syscall
     mtc1 $s0, $f0    #count of the numbers in the array
     cvt.s.w $f1, $f0
     mtc1 $s1, $f0     #convert into float
     cvt.s.w $f0, $f0
     div.s $f12,$f0,$f1   #sum/count
     li $v0,2            #display mean
     syscall
     #nextline
      la $a0, nxtLne
      li $v0, 4
      syscall
     #Median display
     rem $t3,$s0,2    #check odd or even to find remainder
     beq $t3,0,even #remainder 0 when the count of the numbers in the array is even
     #odd the find middle value
     div $t3,$s0,2
     addi $t3,$t3,1
     li $t0,0
     la $a1,nmbrs
loop2:
     beq $t0,$t3 oddMedian
     lw $a0, 0($a1)
     addi $a1, $a1, 4
     addi $t0, $t0,1
     j loop2
oddMedian:
     move $t0,$a0
     la $a0,median
     li $v0,4
     syscall
     move $a0,$t0
     li $v0,1
     syscall
    j mode
#Even number median = (middle1+middle2)2
even:
     div $t3,$s0,2
     addi $t3,$t3,1
     li $t0,0
     la $a1,nmbrs
     loop3:
     beq $t0,$t3 evenNext
     lw $a0, 0($a1)
     addi $a1, $a1, 4
     addi $t0, $t0,1
     j loop3
evenNext:
     move $s3,$a0
     li $t0,0
     la $a1,nmbrs
     addi $t3,$t3,1
     loop4:
     beq $t0,$t3 evenMedian
     lw $a0, 0($a1)
     addi $a1, $a1, 4
     addi $t0, $t0,1
     j loop4
evenMedian:
     move $t4,$a0
     la $a0,median
     li $v0,4
     syscall
     add $a0,$t4,$s3
      mtc1 $a0, $f0
     cvt.s.w $f1, $f0
      li $a0,2
     mtc1 $a0, $f1
     cvt.s.w $f0, $f1
     div.s $f12,$f1,$f0
     li $v0,2
     syscall
     #mode finding step
     #mode is the maximum count value
mode:
li $s3,0 #maxvalue
li $s4,0 #max count
li $t0,0
li $t2,0
la $a1,nmbrs
la $t5,nmbrs
fLoop:
    beq $t0,$s0,exit
    li $t1,0#counter
    lw $a2,0($t5)
    addi $t0,$t0,1
    addi $t5,$t5,4
sLoop:
      beq $t2,$s0,countSet
      lw $a0,0($a1)
      bne $a0,$a2,nextVal
      addi $t1,$t1,1
      addi $a1,$a1,4
      addi $t2,$t2,1
      j sLoop
nextVal:
      addi $a1,$a1,4
      addi $t2,$t2,1
      j sLoop
countSet:
     ble $t1,$s4,fLoop
     move $s4,$t1
     move $s3,$a2
     j fLoop
     #display mode and exit
exit:
    #Nextline
    la $a0, nxtLne
    li $v0, 4
    syscall
    #Mode prompt
    la $a0,modePrompt
    li $v0,4
    syscall
    #display result
    move $a0,$s3
    li $v0,1
    syscall
    #end of the program
    li $v0,10
    syscall

-----------------------------------------------------------------

Output

Enter value: 1111 for exit
1
Enter value: 1111 for exit
2
Enter value: 1111 for exit
1
Enter value: 1111 for exit
3
Enter value: 1111 for exit
5
Enter value: 1111 for exit
1111
The array :
1
1
2
3
5
Mean Value= 2.4
Median Value= 2
Mode Value= 1
-- program is finished running --