Tema: Assembler!
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/11/2011, 11:35
Avatar de rdk_
rdk_
 
Fecha de Ingreso: noviembre-2011
Mensajes: 3
Antigüedad: 12 años, 6 meses
Puntos: 0
Assembler!

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