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