Programa 8085 para contar números pares totales en series de 10 números

Programa: escriba un programa en lenguaje ensamblador en un microprocesador 8085 para contar números pares en una serie de 10 números. 

Ejemplo –

  

Suposición: se almacenan diez números de 8 bits desde la ubicación de memoria inicial 2050. El valor de conteo se almacena en la ubicación de memoria 3050. 

Algoritmo –

  1. Inicialice el registro H con 20 y el registro L con 4F para que la memoria indirecta apunte a la ubicación de memoria 204F.
  2. Inicialice el registro C con 00 y el registro D con 0A.
  3. Incrementa la memoria indirecta en 1.
  4. Almacene el valor de M en el acumulador A.
  5. Compruebe si el contenido de A es par o impar realizando la operación AND de A con 01.
  6. Si el contenido de A es 00 después de la operación AND, entonces el número escaneado fue par, si es así, incremente C en 01; de lo contrario, si el contenido de A es 01 después de la operación AND, entonces el número escaneado fue impar, si es así, entonces disminuye D en 01.
  7. Verifique si el indicador cero no está configurado, es decir, ZF = 0, luego salte al paso 3; de lo contrario, almacene el valor de C en la ubicación de memoria 3050.

Programa (Usando Instrucción ANI) –

DIRECCIÓN DE MEMORIA MNEMOTÉCNICA COMENTARIO

Explicación: los registros A, B, C, D, H, L se utilizan para fines generales.

  1. LXI H 204F: asigne 20 a H y 4F a L.
  2. MVI C, 00: asigna 00 a C.
  3. MVI D, 0A: asigna 0A a D.
  4. INX H: incrementa la ubicación de memoria indirecta M en 01.
  5. MOV A, M: mueve el contenido de M a A.
  6. ANI 01: realiza la operación AND de A con 01 y almacena el resultado en A.
  7. JNZ 200F: salta si ZF = 0 a la ubicación de memoria 200F.
  8. INR C: incrementa C en 01.
  9. DCR D: decrementa D en 01.
  10. JNZ 2007: salta si ZF = 0 a la ubicación de memoria 2007.
  11. MOV A, C: mueve el contenido de C a A.
  12. STA 3050: almacene el contenido de A en la ubicación de memoria 3050.
  13. HLT: deja de ejecutar el programa y detiene cualquier ejecución posterior.

Enfoque alternativo (usando instrucciones de rotación):

Para un conjunto dado de números, si el bit menos significativo (LSB) de la representación binaria de cada número es 1, entonces se asegura que el número dado es un número impar.

Pero si el bit menos significativo (LSB) de la representación binaria de cada número es 0, entonces se asegura que el número dado sea un número par.

Por lo tanto, aquí utilizaremos las instrucciones de rotación del microprocesador 8085. es decir , Instrucción RAR (Rotar Acumulador a la Derecha involucrando bandera de Acarreo en Rotación).

Si rotamos el número binario dado en la dirección correcta en 1 bit, obtendremos la bandera de acarreo como Cero o Uno.

Si obtenemos Carry Flag = 1, entonces el número dado es IMPAR, de lo contrario PAR.

DIRECCIÓN DE MEMORIA

simbolos

COMENTARIO
2000 LXI H,204FH Cargar par HL con ubicación anterior de 2050H, H <- 20, L <- 4F
2003 MVI C,00H Para almacenar el conteo de números pares [C]=0H
2005 MVI D,0AH Para series de 10 números, hemos almacenado el tamaño de la array como [D] = 10
2007 INXH Puntero de memoria de incremento apuntado por par HL
2008 MOV A,M Mueva el contenido de la ubicación de memoria 2050H al acumulador A. {[A] <- [M]}
2009 RAR Gire el acumulador a la derecha con acarreo.
200B JC 200F Después de rotar si Llevar bandera = 1, podemos decir que el número dado es IMPAR, por lo que solo tenemos que pasar al siguiente elemento, no hay nada más que hacer aquí.
200E INR C si encontramos que Carry Flag = 0, entonces podemos decir que el número dado es PAR, por lo que debemos incrementar nuestro conteo en 1. Por lo tanto, INR C ocurrirá para todas las condiciones posteriores.
200F DCR D Ahora, si descubrimos si el número dado es IMPAR/PAR, entonces debemos disminuir el tamaño de la array porque aquí el tamaño es 10 y debemos disminuir hasta 0.
2010 JNZ 2007 Hasta que [D] = 0, tenemos que disminuir D y movernos a la siguiente ubicación de memoria y tomar la entrada de 10 números (esta es una estructura en bucle).
2013 MOV A,C (Después de que termine todo el bucle) Transfiera/Copie el contenido del registro C que contiene el número total de números pares en el acumulador.
2014 STA 3050H Almacene el contenido del acumulador que contiene el conteo de números pares en la ubicación de memoria 3050H como se requiere en la pregunta
2017 HLT Fin de la ejecución de un programa 

Publicación traducida automáticamente

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