.text .globl main main: li $t0, 0 #initialize t0 li $t1, 0 #initialize t1 jal input #call input li $v0, 10 #exit syscall input: sub $sp, $sp, 4 sw $ra, 0($sp) #store the value in $ra on the stack position 4 li $v0, 4 #prompt stuff la $a0, prompt syscall li $v0, 5 #get number syscall move $a0, $v0 #store number #we can keep number in a0 jal check check: sub $sp, $sp, 4 sw $ra, 0($sp) #store the value in $ra on the stack position 8 #bltz $a0, negative #bgtz $a0, positive #beqz $a0, zero jal addnum jal output addnum: sub $sp, $sp, 4 sw $ra, 0($sp) #store the value in $ra on the stack position 12 bltz $a0, negative bgtz $a0, positive beqz $a0, zero negative: add $t0, $t0, $a0 lw $ra, 0($sp) addu $sp, $sp, 8 #go back 8 spaces, to input jr $ra positive: add $t1, $t1, $a0 lw $ra, 0($sp) addu $sp, $sp, 8 #go back 8 spaces, to input jr $ra zero: lw $ra, 0($sp) addu $sp, $sp, 8 #go back 4 spaces, to check jr $ra output: li $v0, 4 la $a0, posi_sum syscall move $a0, $t1 li $v0, 1 #output positive sums li $v0, 4 la $a0, nega_sum syscall move $a0, $t0 li $v0, 1 #output negative sum lw $ra, 0($sp) addu $sp, $sp, 12 #go back to main jr $ra .data prompt: .asciiz "\nInput your number: " posi_sum: .asciiz "\nYour positive sum is: " nega_sum: .asciiz "\nYour negative sum is: "