Programa 8085 para separar números pares e impares de una lista dada de números

Problema: Escriba un programa en lenguaje ensamblador en un microprocesador 8085 para separar los números pares e impares de la lista dada de 50 números. Almacene números impares en otra lista a partir de la ubicación de memoria 2100H. Almacene números pares en otra lista a partir de la ubicación de memoria 2200H. La dirección inicial de la lista es 2000H.

Ejemplos:

Explicación:
Se dice que un número es impar si su bit menos significativo es 1, de lo contrario es par. Por lo tanto, para identificar si el número es par o impar, realizamos la operación AND con 01 con la ayuda de la instrucción ANI. Si el número es impar, obtendremos 01, de lo contrario, 00 en el acumulador. La instrucción ANI también afecta las banderas de 8085. Por lo tanto, si el acumulador contiene 00, entonces se establece la bandera cero; de lo contrario, se reinicia.

Algoritmo:

  1. Cargue la ubicación de memoria 2000 en el par de registros HL.
  2. Cargue la ubicación de memoria 2100 en el par de registros DE para almacenar números impares.
  3. Almacene el número de elementos en el registro C.
  4. Mueve el siguiente número de la lista al acumulador.
  5. Realice la operación AND con 01H para comprobar si el número es par o impar.
  6. Si es par, vaya al paso 9.
  7. Obtenga el número en el acumulador y guárdelo en la ubicación de memoria señalada por DE.
  8. Incremento DE.
  9. Incrementar HL. Decremento C.
  10. Si C no es cero, vaya al paso 4.

Realice de manera similar los pasos anteriores para almacenar números pares.

Programa:

Ubicación de la memoria Mneumónica Comentarios
2000H LXI H, 2000H Inicializar puntero de memoria 1
2003H LXI D, 2100H Inicializar puntero de memoria 2
2006H MVI C, 32H Inicializar contador
2008H MOV A, M obtener el número
2009H ANI 0lH Comprobar número impar
200BH JZ 2011H Si es APAR, no almacene
200EH MOV A, M obtener el número
200FH ESTAX D Almacene el número en la lista de resultados
2010H INXD Puntero de incremento 2
2011H INXH Puntero de incremento l
2012H DCR C Contador de decrementos
2013H JNZ 2008H Si no es cero, repetir
2016H LXI H, 2000H Inicializar puntero de memoria l
2019H LXI D, 2200H Inicializar puntero de memoria2
201CH MVI C, 32H Inicializar contador
201EH MOV A, M obtener el número
201FH ANI 0lH Comprobar si hay un número par
2021H JNZ 2027H Si es impar, no almacene
2024H MOV A, M obtener el número
2025H ESTAX D Almacene el número en la lista de resultados
2026H INXD Puntero de incremento 2
2027H INXH Puntero de incremento l
2028H DCR C Contador de decrementos
2029H JNZ 201EH Si no es cero, repetir
202CH HLT Deténgase

Publicación traducida automáticamente

Artículo escrito por tech_mint0013 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 *