CONJUNTO DE INSTRUCCIONES DEL 8085A - CONTINUACION -

Continuamos describiendo el hardware y software de los microprocesadores tomando como base al 8085, vimos cómo es un sistema básico, cuáles son los apoyos del µP y hasta la fuente de alimentación, describimos las características del software del 8085 y en la edición anterior comenzamos a analizar las diferentes instrucciones que nos permitirán avanzar sobre la construcción de programas. En este artículo continuamos con la descripción de las instrucciones del 8085A.

INTRODUCCION

En la edición anterior publicamos la tabla donde se pueden observar en forma ordenada todas las instrucciones que componen el set de trabajo del 8085A. A continuación continuamos describiendo las funciones de las primeras instrucciones de la tabla.

En cada una de las instrucciones que se muestran a continuación se especificará:

  • El formato de la instrucción.
  • El código objeto de la misma.
  • El número de bytes que emplea.
  • Los ciclos necesarios para su ejecución.
  • Los flags afectados al ejecutarse dicha instrucción.
  • El modo de direccionamiento empleado en la misma.
 
LDA ADDR

LDA ADDR carga el acumulador con el contenido de la memoria direccionada por ADDR. La dirección puede ser puesta como un número, una etiqueta previamente definida o una expresión.

  • Código Objeto: 3A PPQQ
  • Cantidad de Bytes: 3
  • Ciclos de ejecución: 13
  • Flags afectados: --
  • Modos de direccionamiento: DIRECTO
 
LDAX RP

LDAX RP carga el acumulador con una copia del byte almacenado en la localización de memoria direccionada por el par de registros BC o DE. (El par BC se especifica con B y el par DE con D).

  • Código Objeto: 000X 1010
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 7
  • Flags afectados: --
  • Modos de direccionamiento: INDIRECTO
 
LHLD ADDR
LHLD ADDR carga el registro L con una copia del byte almacenado en la posición de memoria especificada por ADDR. Después carga el registro H con una copia del byte almacenado en la posición siguiente de memoria especificada por ADDR.

La instrucción LHLD esta prevista para cargar direcciones nuevas en los registros H y L.

  • Código Objeto: 2A PPQQ
  • Cantidad de Bytes: 3
  • Ciclos de ejecución: 16
  • Flags afectados: --
  • Modos de direccionamiento: DIRECTO
 
LXI RP, DA16
LXI es una instrucción de 3 bytes; su segundo y tercer byte contienen el dato que ha de ser cargado en el par de registros (RP). El primer operando debe especificar el par de registros a ser cargados, pueden ser los pares BC, DE, HL, o el SP. El segundo operando especifica los dos bytes a ser cargados. LXI es la única instrucción inmediata que acepta un valor de 16 bits. El resto trabajan con datos de 8 bits.
  • Código Objeto: 00XX 0001 YY YY
  • Cantidad de Bytes: 3
  • Ciclos de ejecución: 10
  • Flags afectados: --
  • Modos de direccionamiento: INMEDIATO
 
MOV reg,reg
Copia el contenido del segundo registro en el primero. Cada operando debe especificar uno de los registros A, B, C, D, E, H o L.
  • Código Objeto: 01dddsss
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 4
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO
 
MOV M,reg
Copia el contenido del registro especificado en la posición de memoria direccionada por los registros H y L. El segundo operando (reg) debe especificar uno de los registros A, B, C, D, E, H o L.
  • Código Objeto: 0111 Osss
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 7
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO INDIRECTO
 
MOV reg,M
Copia el contenido de la posición de memoria direccionada por los registros H y L en el registro especificado. El primer operando debe especificar el registro deseado como destino.
  • Código Objeto: 01dd d110
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 7
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO INDIRECTO
 
MVI reg,DAT
El primer operando debe ser uno de los registros A,B,C,D,E,H o L, que será cargado con el dato especificado en el segundo operando (DATA). El dato no debe exceder de un byte.
  • Código Objeto: 00ddd110 YY
  • Cantidad de Bytes: 2
  • Ciclos de ejecución: 7
  • Flags afectados: --
  • Modos de direccionamiento: INMEDIATO
 
MVI M,DATA
Esta instrucción carga el dato especificado por DATA en la posición de memoria direccionada por el par HL.
  • Código Objeto: 36 YY
  • Cantidad de Bytes: 2
  • Ciclos de ejecución: 10
  • Flags afectados: --
  • Modos de direccionamiento: INMEDIAT./REG. INDIREC.
 
NOP
NOP no realiza ninguna operación y no afecta a ninguno de los flags de condición. Se emplea normalmente para completar ciclos de lazo.
  • Código Objeto: 00
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 4
  • Flags afectados: --
  • Modos de direccionamiento: ----
 
ORA reg
El operando debe especificar uno de los registros del A al E, el H o el L. Esta instrucción realiza una operación lógica "O" entre el contenido del registro especificado y el acumulador, dejando el resultado en el acumulador. Los flags de acarreo y acarreo auxiliar se ponen a cero.
  • Código Objeto: 1011 OXXX
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 4
  • Flags afectados: Z, S, P, C, Y, A, C
  • Modos de direccionamiento: REGISTRO
 
ORA M
Realiza una operación "O" entre el contenido de la dirección de memoria especificada por el par HL y el contenido del acumulador. El resultado es almacenado en el acumulador. Los flags de acarreo y acarreo auxiliar son puestos a cero.
  • Código Objeto: B6
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 7
  • Flags afectados: Z, S, P, C, Y, A, C
  • Modos de direccionamiento: REGISTRO INDIRECTO
 
ORI DATA
ORI desarrolla una operación lógica "O inclusiva" entre el contenido especificado por DATA y el contenido del acumulador. El resultado se deja en el acumulador. Los flags de acarreo y acarreo auxiliar se ponen a cero.
  • Código Objeto: F6 YY
  • Cantidad de Bytes: 2
  • Ciclos de ejecución: 7
  • Flags afectados: Z, S, P, C, Y, A, C
  • Modos de direccionamiento: INMEDIATO
 
OUT PORT
OUT PORT pone el contenido del acumulador en el bus de datos de 8 bits del puerto seleccionado en el bus de direcciones de 16 bits. El número de puertos oscila de 0 a 255 y es duplicado en el bus de direcciones. Es la lógica externa la encargada de seleccionar el puerto y aceptar el dato de salida. El operando (PORT) debe especificar el número del puerto de salida seleccionado.
  • Código Objeto: D3YY
  • Cantidad de Bytes: 2
  • Ciclos de ejecución: 10
  • Flags afectados: --
  • Modos de direccionamiento: DIRECTO
 
PCHL
PCHL carga el contenido de los registros H y L en el contador de programa. Como el procesador busca la siguiente instrucción en la siguiente dirección del contador de programa, PCHL tiene el efecto de una instrucción de salto. El contenido de H va a los 8 bits más altos de contador de programa y el contenido de L va a los 8 bits más bajos.
  • Código Objeto: E9
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 6
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO
 
POP RP
POP RP copia el contenido de la posición de memoria direccionada por el stack pointer en el registro de bajo orden del par de registros especificados. A continuación se incrementa el stack pointer en 1 y copia el contenido de la dirección resultante en el registro de más alto orden del par. Luego se incrementa el stack pointer otra vez de modo que se apunta al siguiente dato del stack.

El operando debe especificar el par de registros BC, DE, HL o PSW.

POP PSW usa el contenido de la localización de memoria especificada por el stack pointer para restablecer los flags de condiciones.

  • Código Objeto: 11XX 0001
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 10
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO INDIRECTO
 
PUSH RP
PUSH copia dos bytes de datos en el stack. El dato puede ser el contenido de un par de registros o la "palabra de estado del programa". PUSH resta 1 del stack pointer y copia el contenido del registro de "alto orden" del par de registros en la dirección resultante. A continuación se resta otra vez 1 al stack pointer y se copia el registro de bajo orden en la dirección resultante. Los registros permanecen invariables.
  • Código Objeto: 11XX 0101
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 12
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO INDIRECTO
 
RAL
RAL hace girar el contenido del acumulador y el flag de acarreo un espacio de un bit hacia la salida (izquierda). El flan de acarreo que es tratado como si fuera del acumulador, se transfiere el bit de menor orden del acumulador. El bit de mayor orden del acumulador se transfiere al flag de acarreo. No tiene operandos.
  • Código Objeto: 17
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 4
  • Flags afectados: CY
  • Modos de direccionamiento: REGISTRO INDIRECTO
 
RAR
RAR rota el contenido del acumulador y del flag de acarreo 1 bit de posición a la derecha. El flag de acarreo que es tratado como si fuera parte del acumulador se transfiere al bit de más alto orden del acumulador. El bit de menor peso del acumulador se carga en el flag de acarreo. No existen operandos en la instrucción RAR.
  • Código Objeto: 1F
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 4
  • Flags afectados: CY
  • Modos de direccionamiento: ---
 
RC
La instrucción RC comprueba el estado del flag de acarreo. Si tiene un 1 (indicando que hay acarreo) la instrucción saca dos bytes del stack y los mete en el contador de programa. El programa continúa en la nueva dirección suministrada.

Si el flag es 0, el programa continúa en la siguiente instrucción de la secuencia normal.

  • Código Objeto: D8
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 6/12
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO INDIRECTO
 
Sobre Bibliografía de: Ing. Celestino Benítez Vázquez
 
 
 
 
 
PROMOCIONES
 
 
PROMOCIONES
 
 
PROMOCIONES
 
 
PROMOCIONES
 
 
PROMOCIONES
 
 
PROMOCIONES
 
 
PROMOCIONES
 
 
PROMOCIONES