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:
- Cargue la ubicación de memoria 2000 en el par de registros HL.
- Cargue la ubicación de memoria 2100 en el par de registros DE para almacenar números impares.
- Almacene el número de elementos en el registro C.
- Mueve el siguiente número de la lista al acumulador.
- Realice la operación AND con 01H para comprobar si el número es par o impar.
- Si es par, vaya al paso 9.
- Obtenga el número en el acumulador y guárdelo en la ubicación de memoria señalada por DE.
- Incremento DE.
- Incrementar HL. Decremento C.
- 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