Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .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: "
Advertisement
Add Comment
Please, Sign In to add comment