Problema: escriba un programa en lenguaje ensamblador en el microprocesador 8085 para intercambiar el contenido del par de registros HL con el par de registros DE utilizando instrucciones PUSH y POP.
Ejemplo –
Suposición: el contenido ya está presente en el registro HL y DE.
Algoritmo –
- Inicialice el puntero de pila (SP) por 3FFF.
- Empuje el contenido del registro H y L en la pila. Disminuye SP en 2.
- Empuje el contenido de los registros D y E en la pila. Disminuye SP en 2.
- Extraiga los dos bytes superiores de la parte superior de la pila y colóquelos en el registro HL. Incremente el SP en 2.
- Extraiga los dos bytes restantes de la parte superior de la pila y colóquelos en el registro DE. Incremente el SP en 2.
Programa –
MEMORY ADDRESS | MNEMONICS | COMMENT |
---|---|---|
2000 | LXI SP 3FFF | SP <- 3FFF |
2003 | PUSH H | SP <- SP – 1, M[SP] <- H, SP <- SP – 1, M[SP] <- L |
2004 | PUSH D | SP <- SP – 1, M[SP] <- D, SP <- SP – 1, M[SP] <- E |
2005 | POP H | L <- M[SP], SP <- SP + 1, H <- M[SP], SP <- SP + 1 |
2006 | POP D | E <- M[SP], SP <- SP + 1, D <- M[SP], SP <- SP + 1 |
2007 | HLT | ENDT |
Explicación – Registros utilizados H, L, D, E:
- LXI SP 3FFF: inicializa SP por 3FFF.
- PUSH H: empuja el contenido de los registros H y L a la pila y reduce el puntero de la pila en 2.
- PUSH D: empuja el contenido de los registros D y E en la pila y reduce el puntero de la pila en 2.
- POP H: saque los dos bytes superiores de la parte superior de la pila y colóquelos en el par de registros HL e incremente SP en 2.
- POP D: saque los dos bytes superiores de la parte superior de la pila y colóquelos en el par de registros DE e incremente SP en 2.
- 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