Problema: escriba un programa en lenguaje ensamblador en el microprocesador 8085 para acceder al registro de bandera e intercambiar el contenido del registro de bandera F con el registro B.
Ejemplo –
Suposiciones: los valores iniciales del registro de bandera, el registro B y el puntero de pila son 00, 3F y 3FFF, respectivamente.
PSW significa PALABRA DE ESTADO DEL PROGRAMA . PSW combina el acumulador A y el registro de bandera F.
Algoritmo –
- Empuje el valor de la pila en memoria de PSW con la ayuda de la instrucción PUSH
- Extraiga el valor del registro Flag y guárdelo en el registro H con la ayuda de la instrucción POP
- Mueva el valor del registro L en el registro C [H -> VALOR ACUMULADOR, L-> VALOR REGISTRO BANDER]
- Mover el valor del registro B en el registro L
- Mover el valor del registro C en el registro B
- Empuje el valor del registro H en la pila de memoria con la ayuda de la instrucción PUSH
- Extraiga el valor de PSW de la pila de memoria usando la instrucción POP
Programa –
MVI B , 3FH PUSH PSW POP H MOV C , L MOV L , B MOV B , C PUSH H POP PSW HLT
DIRECCIÓN DE MEMORIA | MNEMOTÉCNICA | COMENTARIO |
---|---|---|
2000 | PUSH PSW | Empuje el valor del acumulador y la bandera en la pila |
2001 | POP H | Valor emergente de la parte SUPERIOR de la pila de memoria en H |
2002 | MOV C, L | C <- L |
2003 | MOV H, L | L <- B |
2004 | MOV B, L | B <-C |
2005 | EMPUJAR H | Empuje el valor del registro H |
2006 | PSW POP | Valor pop del registro de bandera y acumulador |
2007 | HLT | FINAL |
Explicación – Registros utilizados A, B, C, H, F
- La instrucción PUSH PSW realiza la siguiente tarea:
SP <- SP - 1 M[SP] <- A SP <- SP - 1 M[SP] <- F
- La instrucción POP H realiza la siguiente tarea:
H <- M[SP] SP <- SP + 1
- MOV C, L: mueve el valor de L en el registro C, ya que sabemos que H contiene el valor del acumulador y L contiene el valor del registro de bandera.
- MOV L, B: mueve el valor de B en el registro L, por lo tanto, L se actualiza
- MOV B, C: mueve el valor de C en el registro B, por lo tanto, B se actualiza
- PUSH H realiza la siguiente tarea:
SP <- SP - 1 M[SP] <- H
- POP PSW realiza la siguiente tarea:
F <- M[SP] SP <- SP + 1 A <- M[SP] SP <- SP + 1
- HLT: deja de ejecutar el programa y detiene cualquier ejecución adicional
Publicación traducida automáticamente
Artículo escrito por AmishTandon y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA