.data #int number = 36 number: .word 36 #int sof sof: .word 0 #int tf tf: .word 2 .text .globl main #void main( ) #{ main: # sof = 0 # tf = 2 lw $t0, number # while (tf * tf < number) # { whileLoop: lw $t1, tf mul $t1, $t1, $t1 bge $t1, $t0, endLoop # if (number % tf == 0) # { factorTest: rem $t2, $t0, $t1 bne $t2, 0, incrementFactor # add to the sum of factors (if it is a factor) # sof = lw $t2, sof lw $t1, tf # + sof add $t2, $t2, $t2 # + tf add $t2, $t2, $t1 # + (number / tf) div $t3, $t0, $t1 add $t2, $t2, $t3 sw $t2, sof # } # tf = tf + 1 incrementFactor: addi, $t1, 1 sw $t1, tf # } j whileLoop endLoop: # if (tf * tf == number) # { lw $t1, tf mul $t2, $t1, $t1 bne $t2, $t0, endOfProgram # sof = tf + sof lw $t2, sof add $t2, $t2, $t1 sw $t2, sof # } #} endOfProgram: li $v0, 10 syscall