estaba haciendo un pequeño ejercicio en assembler el cual es determinar si un numero es primo o no. La subrutina da como resultado 0 si el numero es primo y un 1 si el numero no es primo.
 
lo raro es que si le mando "5" por ejemplo si funcion y dice q es primo, al igual si le mando un 8 por ejemplo me dice q no es primo. Lo raro es que si mando un "3" se cuelga el programa o si mando un "7" me dice que no es primo y el "7" si es primo.
 
aca les dejo la subrutina talvez encuentran el error aunq hice pruebas de escritorio y deberia funcionar
 
numeroprimo:
;ax es la entrada
; salida es 0 si es primo y 1 si no es primo
 
    push cx
    push dx
    push bx
 
	mov cx,0
	mov dx,0
	mov bx,0
 
	inicio:
		cmp ax,bx
		je comparar
		add bx,1
		div bx
		cmp dx,0
		je contadorprimo
		jmp inicio
 
	contadorprimo:
		add cx,1
		jmp inicio
 
	;aca se compara el contador cx primero se pasa al registro ax
	; si es 2 el valor signfica que es primo ya que solo dio residuo 0 cuando se dividio entre 1 y por si mismo
	; de lo contrario no es primo
	comparar:
		mov ax,cx
		cmp ax,2
		jle esprimo
		mov ax,1
		jmp finalizar
 
	esprimo:
		mov ax,0
	    jmp finalizar
 
      finalizar:
      pop bx
      pop dx
      pop cx
	  ret 
   
 



