Programa 8085 para determinar si el número es primo o no

Problema: escriba un programa en lenguaje ensamblador para determinar si un número dado es primo o no utilizando el microprocesador 8085.

Si el número es primo, almacene 01H en la ubicación de memoria que almacena el resultado, de lo contrario, 00H.

Ejemplos:

Input : 03H
Output : 01H
The number 3 only has two divisors, 1 and 3. 
Hence, it is prime.
Input : 09H
Output : 00H
The number 9 has three divisors, 1, 3 and 9. 
Hence, it is composite.

Un número primo es aquel que tiene sólo dos divisores, el 1 y el propio número.
Un número compuesto, por otro lado, tiene 3 o más divisores.

Algoritmo:

  1. Tomar n como entrada
  2. Ejecute un ciclo de i = n a 1. Para cada iteración, verifique si i divide n por completo o no. Si es así, entonces i es el divisor de n
  3. Mantenga una cuenta del número total de divisores de n
  4. Si la cuenta de divisores es 2, entonces el número es primo, de lo contrario compuesto

¿Cómo saber si i es un divisor o no?
Siga restando i del dividendo hasta que el dividendo se convierta en 0 o menos de 0. Ahora, verifique el valor del dividendo. Si es 0, entonces i es un divisor, de lo contrario no lo es.

Pasos:

  1. Cargue los datos de la ubicación de la memoria (2029H, elección arbitraria) en el acumulador
  2. Inicialice el registro C con 00H. Esto almacena el número de divisores de n
  3. Mueva el valor en el acumulador en E. Esto actuará como un iterador para el ciclo de n a 1.
  4. Mueva el valor en el acumulador en B. B almacena permanentemente n porque el valor en el acumulador cambiará
  5. Mueve el valor de E a D y realiza la división con el acumulador como dividendo y D como divisor.
  6. División: siga restando D de A hasta que el valor de A sea 0 o menos de 0. Después de esto, verifique el valor en el acumulador. Si es igual a 0, entonces incremente el conteo de divisores incrementando el valor en C por uno
  7. Restaure el valor del acumulador moviendo el valor de B a A y continúe con el bucle hasta que E se convierta en 0
  8. Ahora, mueve el número de divisores de C a A y verifica si es igual a 2 o no. Si es así, almacene 01H a 202AH (arbitrario), de lo contrario almacene 00H.

202AH contiene el resultado.

DIRECCIÓN ETIQUETA MNEMOTÉCNICO
2000H LDA 2029H
2001H
2002H
2003H MVI C, 00H
2004H
2005H MUEVE UN
2006H MOV B, A
2007H BUCLE1 MOV D, E
2008H BUCLE2 CMP D
2009H JC DIVIDENDLESTH0
200AH
200BH
200CH SUB-D
200DH JNZ LOOP2
200EH
200FH
2010H DIVIDENDLESLESTH0 IPC 00H
2011H
2012H NOTADIVISOR JNZ
2013H
2014H
2015H INR C
2016H NOTADIVISOR MOV A, B
2017H DCR E
2018H BUCLE JNZ1
2019H
201AH
201BH MOV A, C
201CH MVI C, 00H
201DH
201EH IPC 02H
201FH
2020H COMPUESTO JNZ
2021H
2022H
2023H INR C
2024H COMPUESTO MOV A, C
2025H STA 202AH
2026H
2027H
2028H HLT


Almacene el valor de n en 2029H. Si 202AH contiene 01H, entonces n es primo, de lo contrario, compuesto.

Publicación traducida automáticamente

Artículo escrito por aganjali10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *