MICROPROCESADORES
CONJUNTO DE INTRUCCIONES DEL 8085A

Continuamos describiendo el hardware y software de los microcontroladores 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 desde la edición 203 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

Continuamos describiendo las funciones de las primeras instrucciones de la tabla publicada en Saber Electrónica Nº203. 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.
RET
La instrucción RET echa fuera dos bytes de datos del stack y los mete en el registro contador de programa. El programa continúa entonces en la nueva dirección. Normalmente RET se emplea conjuntamente con CALL.
  • Código Objeto: C9
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 10
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO INDIRECTO
RIM
RIM carga los 8 bits de datos siguientes en el acumulador:
  • Código Objeto: 29
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 4
  • Flags afectados: --
  • Modos de direccionamiento: ---

SID I7.5 I6.5 I5.5 IE M7.5 M6.5 M5.5

SID = Bit presente en la entrada serie
I7.5 = Interrupción 7.5 pendiente si está a 1
I6.5 = Interrupción 6.5 pendiente si está a 1
I5.5 = Interrupción 5.5 pendiente si está a 1
IE = Las interrupciones son autorizadas si es 1
M7.5 = La interrupción 7.5 está prohibida si está a 1
M6.5 = La interrupción 6.5 está prohibida si está a 1
M5.5 = La interrupción 5.5 está prohibida si está a 1

 
RLC
RLC rota un bit hacia la izquierda todo el contenido del acumulador, transfiriendo el bit de más alto orden al flag de acarreo y al mismo tiempo a la posición de menor orden del acumulador
  • Código Objeto: 07
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 4
  • Flags afectados: CV
  • Modos de direccionamiento: ---
RM
La instrucción RM comprueba el flag de signo. Si tiene un 1, indicando dato negativo en el acumulador, la instrucción echa dos bytes fuera del stack y los mete en el contador de programa. Si el flag tiene 0, continúa el programa normal con la siguiente instrucción.
  • Código Objeto: F8
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 6/12
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO INDIRECTO
RNC
La instrucción RNC comprueba el flag de acarreo. Si está a 0 indicando que no hay acarreo, la instrucción echa fuera del stack dos bytes y los carga en el contador de programa. Si el flag está a 1 continúa el ciclo normal.
  • Código Objeto: DO
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 6/12
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO INDIRECTO
RNZ
La instrucción RNZ comprueba el flag cero. Si está a 0, indicando que el contenido del acumulador no es cero, la instrucción echa fuera del stack dos bytes y los carga en el contador de programa. Si el flag está a 1, continúa el ciclo normal.
  • Código Objeto: CO
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 6/12
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO INDIRECTO
RP
La instrucción RP comprueba el flag signo. Si está a 0, indicando que el contenido del acumulador es positivo, la instrucción echa fuera del stack dos bytes y los carga en el contador de programa. Si el flag está a 1 continúa el ciclo normal.
  • Código Objeto: FO
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 6/12
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO INDIRECTO
RPE
La instrucción RPE comprueba el flag de paridad. Si está a 1, indicando que existe paridad, la instrucción echa fuera del stack dos bytes y los carga en el contador de programa. Si el flag está a 0 continúa el ciclo normal. (Existe paridad si el byte que está en el acumulador tiene un número par de bits, colocándose el flag de paridad a 1 en este caso).
  • Código Objeto: B8
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 6/12
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO INDIRECTO
RPO
La instrucción RPO comprueba el flag de paridad. Si está a 0, indicando que no hay paridad, la instrucción echa fuera del stack dos bytes y los carga en el contador de programa. Si el flag está a 1, continúa el ciclo normal.
  • Código Objeto: EO
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 6/12
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO INDIRECTO
RRC
RRC rota el contenido del acumulador un bit a la derecha, transfiriendo el bit de más bajo orden a la posición de más alto orden del acumulador, además pone el flag de acarreo igual al bit de menor orden del acumulador.
  • Código Objeto: OF
    Cantidad de Bytes: 1
    Ciclos de ejecución: 4
    Flags afectados: CV
    Modos de direccionamiento: ---
RST N
Es una instrucción CALL para usar con interrupciones. RST carga el contenido del contador de programa en el stack, para proveerse de una dirección de retorno y salta a una de las "ocho" direcciones determinadas previamente. Un código de tres bits incluido en el código de operación de la instrucción RST especifica la dirección de salto. Esta instrucción es empleada por los periféricos cuando intentan una interrupción.
  • Código Objeto: 11XX X111
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 12
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO INDIRECTO

La instrucción RST tiene el siguiente formato:

1 1 C C C 1 1 1

Luego según la combinación de 0 y 1 que demos a C C C obtendremos los distintos formatos y las distintas direcciones de las interrupciones, que serán:

 
FORMATO
RST
CONTADOR DE PROGRAMA
1100 0111
C7
0000000000000000
0000H
1100 1111
CF
0000000000001000
0008H
1101 0111
D7
0000000000010000
0010H
1101 1111
DF
0000000000011000
0018H
1110 0111
E7
0000000000100000
0020H
1110 1111
EF
0000000000101000
0028H
1111 0111
F7
0000000000110000
0030H
1111 1111
FF
0000000000111000
0038H
 
RZ
La instrucción RZ comprueba el flag de cero. Si está a 1, indicando que el contenido del acumulador es cero, la instrucción echa fuera del stack dos bytes y los carga en el contador de programa. Si el flag está a 0, continúa el ciclo normal.
  • Código Objeto: C8
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 6/12
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO INDIRECTO
SBB reg
SBB reg resta uno de los registros del A al E, el H o el L y el flag de acarreo, del contenido del acumulador, dejando el resultado en el acumulador.
  • Código Objeto: 1001 1XXX
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 4
  • Flags afectados: Z, S, P, CY, AC
  • Modos de direccionamiento: REGISTRO
SBB m
Esta instrucción resta el flag de acarreo y el contenido de la posición de memoria direccionada por los registros H y L, del contenido del acumulador y deja el resultado en el acumulador.
  • Código Objeto: 9E
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 7
  • Flags afectados: Z, S, P, CY, AC
  • Modos de direccionamiento: REGISTRO INDIRECTO
SBI DATA
SBI resta el contenido de DATA y el flag de acarreo, del contenido del acumulador, dejando el resultado en el acumulador.
  • Código Objeto: DE YY
  • Cantidad de Bytes: 2
  • Ciclos de ejecución: 7
  • Flags afectados: Z, S, P, CY, AC
  • Modos de direccionamiento: INMEDIATO
SHLD ADDR
SHLD almacena una copia del registro L en la posición de memoria especificada por ADDR, a continuación almacena una copia del registro H en la siguiente posición de memoria (ADDR+1). SHLD es una instrucción proyectada para salvar el contenido del par HL.
  • Código Objeto: 22 PP QQ
  • Cantidad de Bytes: 3
  • Ciclos de ejecución: 16
  • Flags afectados: --
  • Modos de direccionamiento: DIRECTO
SIM
SIM es una instrucción de usos múltiples que utiliza el contenido del acumulador para posicionar el enmascaramiento de interrupciones para las RST 5.5, RST 6.5, RST 7.5; pone a cero el flanco sensitivo de la entrada RST 7.5 y saca el bit 7 del acumulador al latch de datos de salida serie.
  • Código Objeto: 30
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 4
  • Flags afectados: ---
  • Modos de direccionamiento: --

La estructura de la instrucción SIM es como sigue:
SOD SOE X R7.5 MSE M7.5 M6.5 M5.5
SOD = Bit a presentar sobre la salida serie.
SOE = La salida serie está autorizada si está a 1.
R7.5 = Reset de RST 7.5. Si es 1 el flip-flop se pone a 0
MSE = Si es un 1 los enmascarados están autorizados.
M7.5 = Si es 1 la interrupción 7.5 queda prohibida.
M6.5 = Si es 1 la interrupción 6.5 queda prohibida.
M5.5 = Si es 1 la interrupción 5.5 queda prohibida.

Si el bit 3 se pone a 1, la función poner "mask" se pone enable (permitida). Los bits 0 al 2 ponen en servicio la correspondiente interrupción RST colocando un 0 en la interrupción que deseamos habilitar. Si colocamos un 1 en alguno de los bits 0 al 2, la interrupción correspondiente no se cumplirá. Si el bit 3 tiene un 0, los bits 0 al 2 no tienen efectos. Se debe usar esta peculiaridad para enviar un bit de salida serie sin afectar al enmascaramiento de las interrupciones. (La instrucción DI anula la SIM).

Si el bit 6 (SOE) se pone a 1 se habilita la función de salida serie. El bit 7 se sitúa en la salida SOD donde puede ser tratado por los aparatos periféricos. Si el bit 6 se pone a cero, el bit 7 no tendrá efecto alguno, siendo ignorado.

 
SPHL
SPHL carga el contenido de los registros H y L en el stack.
  • Código Objeto: F9
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 6
  • Flags afectados: --
  • Modos de direccionamiento: --
STA ADDR
Almacena una copia del contenido actual del acumulador en la posición de memoria especificada por ADDR.
  • Código Objeto: 32 PPQQ
  • Cantidad de Bytes: 3
  • Ciclos de ejecución: 13
  • Flags afectados: --
  • Modos de direccionamiento: DIRECTO
STAX RP
STAX RP almacena una copia del contenido del acumulador en la posición de memoria direccionada por el par de registros especificados por RP (Par BC o par DE).
  • Código Objeto: 000X 0010
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 7
  • Flags afectados: --
  • Modos de direccionamiento: REGISTRO INDIRECTO
STC
STC pone el flag de acarreo a 1. No afecta a otro flag.
  • Código Objeto: 37
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 4
  • Flags afectados: CY
  • Modos de direccionamiento: --
SUB reg
El operando debe especificar uno de los registros del A al E, el H o el L. La instrucción resta el contenido del registro especificado del contenido del acumulador, usando representación de los datos en complemento a dos. El resultado es almacenado en el acumulador.
  • Código Objeto: 001 0XXX
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 4
  • Flags afectados: Z, S, P, CY, AC
  • Modos de direccionamiento: REGISTRO
SUB M
La instrucción resta el contenido de la posición de memoria direccionada por los registros H y L del contenido del acumulador. El resultado es almacenado en el acumulador.
  • Código Objeto: 96
  • Cantidad de Bytes: 1
  • Ciclos de ejecución: 7
  • Flags afectados: Z, S, P, CY, AC
  • Modos de direccionamiento: REGISTRO INDIRECTO
Sobre bibliografía de: Ing. Celestino Benítez Vázquez
 
 
 
 
 
PROMOCIONES
 
 
PROMOCIONES
 
 
PROMOCIONES
 
 
PROMOCIONES
 
 
PROMOCIONES
 
 
PROMOCIONES
 
 
PROMOCIONES
 
 
PROMOCIONES