Programa para saber si un número es primo o no en MIPS

.data
.globl main
cad: .asciiz "introduce un numero para saber si es primo o no: "
cadSol: .asciiz "primo."
cadLuna: .asciiz "no primo."
.text
main:
la $a0, cad #Pasamos como argumento la cadena a imprimir
li $v0, 4 #Llamada al sistema que imprime la cadena
syscall
li $v0, 5 #Llamada al sistema para leer un nÂœmero
syscall
li $a1, 1
li $a0, 0 #iniciamos un contador
li $t6, 1
# llamamos a la subrutina_1, que a su vez contendrá una llamada
# a la subrutina_2. Resolveremos el retorno usando la pila.
jal subrutina



beq $a0, $t6, imprimir1
bne $a0, $t6, imprimir2





subrutina:
beq $v0, $a1, fin
div $v0,$a1
mfhi $t2
beqz $t2, etiqueta # si vale 0 etiqueta
bnez $t2, etiqueta2




etiqueta:
addi $a1, $a1, 1
addi $a0, $a0, 1 #Si  es  0, con lo que incrementamos el contador
j subrutina

etiqueta2:
addi $a1, $a1, 1
j subrutina
fin:

jr $ra # volvemos al main
imprimir1:
la $a0, cadSol #Pasamos como argumento la cadena a imprimir
li $v0, 4 #Llamada al sistema que imprime la cadena
syscall
li $v0, 10 #acabar
syscall
imprimir2:
la $a0, cadLuna #Pasamos como argumento la cadena a imprimir
li $v0, 4 #Llamada al sistema que imprime la cadena
syscall
li $v0, 10 #acabar
syscall