Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .globl main
- .text
- li $v0, 5 #system call for read integer
- syscall #read integer
- bltu $v0, 50, else #if $v0 < 50 branch to else (failing grade)
- sw $v0, 0($t1) #store word in pass array
- addi $t1, $t1, 4 #t1 = t1 + 4 (increment pass pointer)
- addi $t0, $t0, 1 #t0 = t0 + 1 (increment pass counter)
- b l_end #branch over else statement
- li $v0, 4 #system call for print string
- la $a0, o_pasc #load string
- syscall #output "Number of Passing Scores:
- la $v0, 1 #system call for print integer
- add $a0, $t0, 0 #load value of pass counter into $a0
- syscall #output value
- li $v0, 4 #system call for print string
- la $a0, o_fasc #load string
- syscall #output "Number of Failing Scores: "
- la $v0, 1 #system call for print string
- add $a0, $t2, 0 #load value of fail counter into $a0
- syscall #output value
- li $v0, 4 #setup output
- la $a0, o_pass #setup text
- syscall #output string o_pass
- la $t1, pass #load address of pass pointer to t1
- lw $a0, 0($t1) #load word at $t1 into $a0
- li $v0, 1 #system call for print integer
- li $v0, 4 #system call for print string
- la $a0, o_coma #load string
- syscall #ouput comma and space
- li $v0, 1 #setup output
- addi $t1, $t1, 4 #move pointer down by 1 word
- lw $a0, 0($t1) #move word at pointer into $a0
- addi $t5, $t5, 1 #add 1 to counter
- b loop_a #branch to top
- la $t5, 0 #clear t5 (counter)
- li $v0, 4 #setup output
- la $a0, o_fail #setup text
- syscall #output string o_fail
- la $t3, fail #load address for fail pointer into $t3
- lw $a0, 0($t3) #load word at mem addy $t3 into $a0
- li $v0, 1 #system call for print integer
- li $v0, 4 #system call for print string
- la $a0, o_coma #load string
- syscall #output comma and space
- li $v0, 1 #setup output
- addi $t3, $t3, 4 #move pointer down by 1 word
- lw $a0, 0($t3) #load word from mem addy $t3 to $a0
- addi $t5, $t5, 1 #add 1 to counter
- b loop_b #branch to top
- li $v0, 4 #setup output
- la $a0, o_brk #setup text
- syscall #output line break
- li $v0, 10 #loads 10 to $v0
- syscall #ends program
- bleu $t0,$t5,lp_a_end #if t0 <= t5 branch to lp_a_end
- bleu $t0,$zero,lp_a_end
- li $t5,50
- bltu $v0,$t5,else
- la $t3, fail #load address for fail pointer into $t3
- lw $a0, 0($t3) #load word at mem addy $t3 into $a0
- li $v0, 1
- loop_b: bleu $t2, $t5, lp_b_end #if t2 <= t5 branch to lp_a_end
- syscall #output single score
- #Is there anything to print in the array? If not, goto lp_b_end
- bleu $t2,$zero,lp_b_end
- #Ok, we know we are not pointing at an invalid position of the array.
- la $t3, fail #load address for fail pointer into $t3
- lw $a0, 0($t3) #load word at mem addy $t3 into $a0
- li $v0, 1
- syscall
Add Comment
Please, Sign In to add comment