Problema: escriba un programa en lenguaje ensamblador en un microprocesador 8085 para verificar si los dos nibbles del número de 8 bits son iguales o no. Si los nibbles son iguales, almacene 00 en la ubicación de memoria 3050; de lo contrario, almacene FF en la ubicación de memoria 3050.
Ejemplo –
Suposición: el número, para comprobar si hay nibbles similares, se almacena en la ubicación de memoria 2050.
Algoritmo –
- Cargue el contenido de la ubicación de memoria 2050 en A.
- Mueve el contenido de A en B.
- Enmascare el nibble inferior y guárdelo en el registro C.
- Mueva el contenido de B en A.
- Enmascare el nibble de orden superior y guárdelo en A.
- Invierta el contenido de A usando la instrucción RLC 4 veces.
- Compare los contenidos de A y C con la ayuda de la instrucción CMP . Actualizar las banderas de 8085.
- Ahora almacene FF si ZF = 0, de lo contrario almacene 00 si ZF = 1.
- Almacene el resultado final en la ubicación de memoria 3050.
Programa –
DIRECCIÓN DE MEMORIA | MNEMOTÉCNICA | COMENTARIO |
---|---|---|
2000 | LDA 2050 | A <- M[2050] |
2003 | MOV B, A | B <- A |
2004 | AÑO 0F | A <- A (Y) 0F |
2006 | MOV C, A | C <- A |
2007 | MOV A, B | A <-B |
2008 | ANI F0 | A <- A (Y) 0F |
200A | RLC | Rotar el contenido de A a la izquierda un bit sin llevar |
200B | RLC | Rotar el contenido de A a la izquierda un bit sin llevar |
200C | RLC | Rotar el contenido de A a la izquierda un bit sin llevar |
200D | RLC | Rotar el contenido de A a la izquierda un bit sin llevar |
200E | CMP C | A-C |
200F | JZ 2018 | Saltar si ZF = 1 |
2013 | MVI A, FF | A <-FF |
2015 | JMP 201A | Saltar a la ubicación de memoria 201A |
2018 | MVI A, 00 | A <- 00 |
201A | STA 3050 | M[3050] <- A |
201D | HLT | FINAL |
Explicación: los registros A, B y C se utilizan para fines generales.
- LDA 2050: cargue el contenido de la ubicación de memoria 2050 en el acumulador A.
- MOV B, A: mueve el contenido de A en el registro B.
- ANI 0F: realiza la operación AND en los contenidos de A y 0F. Almacene el resultado en A.
- MOV C, A: mueve el contenido de A en el registro C.
- MOV A, B: mueve el contenido de B en A.
- ANI F0: realiza la operación AND en los contenidos de A y F0. Almacene el resultado en A.
- RLC: rota el contenido de A hacia la izquierda un bit sin acarreo. Usa la instrucción 4 veces para invertir el número.
- CMP C: compara el contenido de A y C. Actualice las banderas de 8085 en consecuencia.
- JZ 2018: salta a la ubicación de memoria 2018 si se establece el indicador cero.
- MVI A, FF: asigna FF a A.
- JMP 201A: salta a la ubicación de memoria 201A.
- MVI A, 00: asigna 00 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