Programa: escriba un programa en lenguaje ensamblador en un microprocesador 8085 para contar números impares en series 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 –
- 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.
- Inicialice el registro C con 00 y el registro D con 0A.
- Incrementa la memoria indirecta en 1.
- Almacene el valor de M en el acumulador A.
- Compruebe si el contenido de A es par o impar realizando la operación AND de A con 01.
- Si el contenido de A es 01 después de la operación AND, entonces el número escaneado fue impar. Si es así, incremente C en 01; de lo contrario, si el contenido de A es 00 después de la operación AND, entonces el número escaneado fue par. Disminuye D en 01.
- 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 –
DIRECCIÓN DE MEMORIA | MNEMOTÉCNICA | COMENTARIO |
---|---|---|
2000 | LXI H 204F | H <- 20, L <- 4F |
2003 | MVI C, 00 | C <- 00 |
2005 | MVI D, 0A | D <- 0A |
2007 | INXH | METRO <- METRO + 01 |
2008 | MOV A, M | A <-M |
2009 | AÑO 01 | A <- A (Y) 01 |
200B | JZ 200F | Saltar si ZF = 1 |
200E | INR C | C <- C+ 01 |
200F | DCR D | D <- D – 01 |
2010 | JNZ 2007 | Saltar si ZF = 0 |
2013 | MOV A, C | A <-C |
2014 | STA 3050 | M[3050] <- A |
2017 | HLT | FINAL |
Explicación: los registros A, B, C, D, H, L se utilizan para fines generales.
- LXI H 204F: asigne 20 a H y 4F a L.
- MVI C, 00: asigna 00 a C.
- MVI D, 0A: asigna 0A a D.
- INX H: incrementa la ubicación de memoria indirecta M en 01.
- MOV A, M: mueve el contenido de M a A.
- ANI 01: realiza la operación AND de A con 01 y almacena el resultado en A.
- JZ 200F: salta si ZF = 1 a la ubicación de memoria 200F.
- INR C: incrementa C en 01.
- DCR D: decrementa D en 01.
- JNZ 2007: salta si ZF = 0 a la ubicación de memoria 2007.
- MOV A, C: mueve el contenido de C a A.
- STA 3050: almacene el contenido de A en la ubicación de memoria 3050.
- HLT: deja de ejecutar el programa y detiene cualquier ejecución posterior.
Publicación traducida automáticamente
Artículo escrito por AmishTandon y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA