.data a: .word 1,1,1,1,1,1,1,1,1,1 str: .asciiz "\n" .text readarray: addi $sp,$sp,-4 # allocate space on stack sw $s0,0($sp) # push $s0 li $s0,0 # initialize counter loop: li $v0,5 # setup system call 5 syscall # do the system call beq $v0,-1,exit # check for termination value sw $v0,0($a0) # store in array addi $s0,$s0,4 # incr. counter addi $a0,$a0,4 j loop # repeat exit: move $v0,$s0 lw $s0,0($sp) addi $sp,$sp,4 # pop jr $31 # return main: addi $sp,$sp,-4 sw $31,0($sp) la $a0,a # set up input arguments for readarray method jal readarray # call the readarray method move $s0,$v0 # on return, copy num elements read into $so sra $s1,$s0,1 move $s2,$s0 addi $s2,$s2,-4 li $s3,0 loop2: lw $t0,a($s3) lw $t1,a($s2) sw $t0,a($s2) sw $t1,a($s3) addi $s3,$s3,4 addi $s2,$s2,-4 blt $s3,$s1,loop2 li $s3,0 loop3: li $v0,1 lw $a0,a($s3) syscall li $v0,4 la $a0,str syscall addi $s3,$s3,4 blt $s3,$s0,loop3 lw $31,0($sp) addi $sp,$sp,4 jr $31