.text main: .data a: .word 0 bb: .word 0 x: .word 0 copy1: .word 0 y: .word 0 copy2: .word 0 z: .word 0 result: .word 0 statuscode: .word 0 .text li $v0,5 syscall move $t0,$v0 sw $t0,a li $t0,0 sw $t0,bb lw $t0,a lw $t1,bb seq $t0,$t0,$t1 bnez $t0,GETNUMS li $t0,1 sw $t0,bb lw $t0,a lw $t1,bb seq $t0,$t0,$t1 bnez $t0,GETNUMS b ERROR GETNUMS: li $v0,5 syscall move $t0,$v0 sw $t0,x li $v0,5 syscall move $t0,$v0 sw $t0,y li $t0,1 sw $t0,bb lw $t0,a lw $t1,bb sne $t0,$t0,$t1 bnez $t0,SUBNUMS ADDNUMS: lw $t0,x sw $t0,copy1 lw $t0,y sw $t0,copy2 lw $t0,x lw $t1,y add $t0,$t0,$t1 sw $t0,result b PRINT SUBNUMS: lw $t0,y sw $t0,copy1 lw $t0,x sw $t0,copy2 lw $t0,x lw $t1,y sub $t0,$t0,$t1 sw $t0,result b PRINT PRINT: lw $t0,a li $t1,0 seq $t0,$t0,$t1 bnez $t0,WRITESUBOPS lw $t0,copy1 li $v0,1 move $a0,$t0 syscall lw $t0,copy2 li $v0,1 move $a0,$t0 syscall b WRITERESULT WRITESUBOPS: lw $t0,copy2 li $v0,1 move $a0,$t0 syscall lw $t0,copy1 li $v0,1 move $a0,$t0 syscall b WRITERESULT WRITERESULT: lw $t0,result sw $t0,z lw $t0,z li $v0,1 move $a0,$t0 syscall li $t0,0 sw $t0,statuscode b FINISHED ERROR: li $t0,1 neg $t0,$t0 sw $t0,statuscode b FINISHED FINISHED: lw $t0,statuscode li $v0,1 move $a0,$t0 syscall li $v0,10 syscall