Subido por David Elías Delfino

Instrucciones Intel 8085

Anuncio
Instrucciones Intel 8085
TRANSFERENCIA DE DATOS:
MOV: Esta instrucción se utiliza para copiar los datos de un lugar a otro.
MVI: Esta instrucción se utiliza para mover los datos inmediatos a un registro o ubicación de
memoria.
LDA: Esta instrucción copia los datos de una dirección dada de 16 bits al acumulador.
LDAX: El contenido del par de registros designado apunta a una ubicación de memoria. Esta
instrucción copia el contenido de esa ubicación de memoria en el acumulador. El contenido del
par de registros o de la ubicación de memoria no se modifica.
LXI: La instrucción carga datos de 16 bits en el par de registros designado en el operando.
LHLD: Esta instrucción carga el contenido de la ubicación de memoria de 16 bits en el par de
registros HL.
STA: El contenido del acumulador se copia en la ubicación de memoria especificada por el
operando.
STAX: El contenido del acumulador se copia en la ubicación de memoria especificada por el
contenido del operando (par de registros).
SHLD: El contenido del registro L se almacena en la ubicación de memoria especificada por la
dirección de 16 bits en el operando y el contenido del registro H se almacena en la siguiente
ubicación de memoria incrementando el operando.
XCHG: El contenido del registro H se intercambia con el contenido del registro D, y el
contenido del registro L se intercambia con el contenido del registro E.
SPHL: La instrucción carga el contenido de los registros H y L en el Stack Pointer. El contenido
del registro H proporciona la dirección de orden superior y el contenido del registro L
proporciona la dirección de orden inferior.
XTHL: Esta instrucción intercambia H y L con la parte superior de la pila. El contenido del
registro L se intercambia con la ubicación de la pila señalada por el contenido del registro
puntero de pila (Stack Pointer). El contenido del registro H se intercambia con la siguiente
ubicación de la pila (SP+1); sin embargo, el contenido del registro de puntero de pila no se
modifica.
PUSH: Esta instrucción empuja el par de registros a la pila. El contenido del par de registros
designado en el operando se copia en la pila en la siguiente secuencia. El registro puntero de
pila (Stack Pointer) se decrementa y el contenido del registro de orden superior (B, D, H, A) se
copia en esa ubicación. El registro del puntero de la pila se vuelve a decrementar y el
contenido del registro de orden inferior (C, E, L, banderas) se copia en esa ubicación.
POP: Esta es una instrucción emergente de la pila para registrar el par. El contenido de la
ubicación de memoria señalada por el registro de puntero de pila se copia en el registro de
orden inferior (C, E, L, indicadores de estado) del operando.
El puntero de la pila se incrementa en 1 y el contenido de esa ubicación de memoria se copia
en el registro de orden superior (B, D, H, A) del operando. El registro de puntero de pila se
incrementa nuevamente en 1.
OUT: Salida de datos del acumulador a un puerto con direcciones de 8 bits. El contenido del
acumulador se copia en el puerto E/S especificado por el operando.
IN: Ingresa datos al acumulador desde un puerto con direcciones de 8 bits. El contenido del
puerto de entrada designado en el operando se lee y se carga en el acumulador.
OPERACIONES ARITMÉTICAS:
ADD: El contenido del operando se agrega al contenido del acumulador y el resultado se
almacena en el acumulador.
ADI: Agrega un medio inmediato y un valor inmediato con el contenido del acumulador y se
almacena en acumulador.
ADC: El contenido del registro o la memoria y el indicador de acarreo se agregan al contenido
del acumulador y el resultado se almacena en el acumulador.
ACI: El valor inmediato y la vadera de acarreo se agregan al contenido del acumulador y el
resultado se almacena en el acumulador.
DAD: Agrega un par de registros al registro HL. El contenido de 16 bits del par de registros
especificado se agrega al contenido del registro HL y la suma se almacena en el registro HL. El
contenido del par de registros fuente no se modifica. Si el resultado es mayor que 16 bits, se
establece el indicador de acarreo. Ninguna otra bandera se altera.
SUB: Resta el contenido de un registro o de una ubicación de memoria al contenido del
acumulador y el resultado se almacena en el acumulador.
SBB: El contenido del registro de la memoria y las banderas de préstamos se restan del
contenido del acumulador y el resultado se coloca en el acumulador.
SUI: Esta instrucción resta los datos inmediatos del contenido del acumulador y el resultado se
almacena en el acumulador.
SBI: Esta instrucción restará tanto el valor inmediato como el contenido de la bandera de
acarreo del contenido del acumulador y el resultado se almacena en el acumulador.
INR: El contenido del registro o la memoria designados se incrementa en 1 y el resultado se
almacena en el mismo lugar. Si el operando es una ubicación de memoria, su ubicación está
especificada por el contenido de los registros HL.
INX: El contenido del par de registros designado se incrementa en 1 y su resultado se almacena
en el mismo lugar.
DCR: El contenido del registro o a memoria designados se reduce en 1 y su resultado se
almacena en el mismo lugar.
DCX: El contenido del par de registros designado se reduce en 1 y su resultado se almacena en
el mismo lugar.
DAA: El contenido del acumulador se cambia de un valor binario a dos dígitos decimales
codificados en binario (BCD) de 4 bits. Ésta es la única instrucción que utiliza el indicador
auxiliar para realizar la conversión de binario a BCD, y el procedimiento de conversión se
describe a continuación. Los indicadores S, Z, AC, P, CY se modifican para reflejar los resultados
de la operación. Si el valor de los 5 bits de orden inferior en el acumulador es mayor que 9 o si
la bandera AC está activada, la instrucción suma 6 a los cuatro bits de orden inferior. Si el valor
de los 4 bits de orden superior en el acumulador es mayor que 9 o si la bandera de acarreo
está activada, la instrucción suma 6 a los cuatro bits de orden superior.
OPERACIONES LÓGICAS:
CMP: El contenido del registro de operando o la memoria M se compara con el contenido del
acumulador. Ambos contenidos se conservan. El resultado de la comparación se muestra
configurando las banderas de la siguiente manera:
-
Si (A) < reg/memoria: Se establece la bandera de acarreo.
Si (A) = reg/memoria: Se establece la bandera de cero.
Si (A) > reg/memoria: Se establecen banderas de acarreo y cero.
CPI: El segundo byte (datos de 8 bits) se compara con el contenido del acumulador. Los valores
que se comparan permaneces sin cambios. El resultado de la comparación se muestra
configurando las banderas de la siguiente manera:
-
Si (A) < datos: Se establece la bandera de acarreo.
Si (A) = datos: Se establece la bandera de cero.
Si (A) > datos: Se restablecen las banderas de acarreo y cero.
ANA: El contenido del acumulador es lógicamente AND con el contenido del registro o la
memoria, y el resultado se coloca en el acumulador.
ANI: El contenido del acumulador es lógicamente AND con los datos 8 bits y el resultado se
coloca en el acumulador.
XRA: El contenido del acumulador es OR Exclusivo con M. El contenido del registro o memoria
y el resultado se coloca en el acumulador.
XRI: El contenido del acumulador es OR Exclusivo con los datos de 8 bits y el resultado se
coloca en el acumulador.
ORA: El contenido del acumulador es lógicamente OR con el contenido del registro o la
memoria, y el contenido se coloca en el acumulador.
ORI: El contenido del acumulador es lógicamente OR con los datos de 8 bits y el resultado se
coloca en el acumulador.
RLC: Cada bit binario del acumulador se gira una posición a la izquierda. El bit 7D se coloca en
la posición D0 así como en la bandera de acarreo. La bandera de acarreo se modifica según el
bit D7.
RRC: Cada binario del acumulador se gira una posición a la derecha. El bit D0 se coloca en la
posición de D7 así como en la bandera de acarreo. La bandera de acarreo se modifica según el
bit D0.
RAL: Cada binario del acumulador gira a la derecha una posición a través de la bandera de
acarreo. El bit D7 se coloca en la bandera de acarreo, y la bandera de acarreo se coloca en la
posición menos significativa D0. Las banderas de transporte se modifican según el bit D7.
RAR: Cada binario del acumulador gira a la derecha una posición a través de la bandera de
acarreo. El bit D0 se coloca en la bandera de acarreo y la bandera de acarreo se coloca en la
posición más significativa D7. La bandera de acarreo se modifica según el bit D0.
CMA: Se complementa el contenido del acumulador. Ninguna bandera se ve afectada.
CMC: Se complementa la bandera de acarreo. Ninguna otra bandera se afecta.
STC: Esta instrucción establece la bandera de acarreo.
INSTRUCCIONES DE CONTROL:
NOP: Esta instrucción se recupera y decodifica. Sin embargo, no se ejecuta ninguna operación.
HLT: La CPU terminó de ejecutarla instrucción actual y detienen cualquier ejecución posterior.
Es necesaria una interrupción o reinicio para salir del estado de parada.
DI: El flip-flop de interrupciones se establece y todas las interrupciones, excepto la TRAP, se
deshabilitan. No se ven afectadas las banderas.
EI: Se establece el flip-flop de habilitación de interrupciones y se habilitan todas las
interrupciones.
RIM: Esta instrucción se utiliza para leer el estado de las interrupciones 7.5, 6.5, 5.5 y leer el bit
de entrada de datos en serie.
SIM: Esta instrucción se utiliza para implementar las interrupciones 75, 6.5, 5.5 y la entrada de
datos en serie.
OPERACIONES DE DERIVACIÓN
JMP: La secuencia del programa se transfiere a la ubicación de memoria especificada por la
dirección de 16 bits dada en el operando.
JC: La secuencia del programa se transfiere a una etiqueta particular o a una dirección de 16
bits si C = 1 o el indicador de acarreo es 1.
JNC: La secuencia del programa se transfiere a una etiqueta particular o a una dirección de 16
bits si C = 0 o el indicador de acarreo es 0.
JP: La secuencia del programa se transfiere a una etiqueta particular o a una dirección de 16
bits si S = 0 o el indicador de signo es 0.
JM: La secuencia del programa se transfiere a una etiqueta particular o a una dirección de 16
bits si S = 1 o el indicador de signo es 1.
JZ: La secuencia del programa se transfiere a una etiqueta particular o a una dirección de 16
bits si Z = 1 o el indicador de cero es 1.
JNZ: La secuencia del programa se transfiere a una etiqueta particular o a una dirección de 16
bits si Z = 0 o el indicador de cero es 0.
JPE: La secuencia del programa se transfiere a una etiqueta particular o a una dirección de 16
bits si P = 1 o el indicador de paridad es 1.
JPO: La secuencia del programa se transfiere a una etiqueta particular o a una dirección de 16
bits si P = 0 o el indicador de paridad es 0.
CALL: La instrucción interrumpe el flujo de un programa al pasar a una subrutina interna o
externa. Una subrutina interna es parte del programa de llamada.
CC: La secuencia del programa se transfiere a una etiqueta particular o a una dirección de 16
bits si C = 1 o el indicador de acarreo es 1. Antes de transferir, la dirección de la siguiente
instrucción después de CALL se inserta en la pila.
CNC: La secuencia del programa se transfiere a una etiqueta particular o a una dirección de 16
bits si C = 0 o el indicador de acarreo es 0. Antes de transferir, la dirección de la siguiente
instrucción después de CALL se inserta en la pila.
CP: La secuencia del programa se transfiere a una etiqueta particular o a una dirección de 16
bits si S = 0 o el indicador de signo es 0. Antes de transferir, la dirección de la siguiente
instrucción después de CALL se inserta en la pila.
CM: La secuencia del programa se transfiere a una etiqueta particular o a una dirección de 16
bits si S = 1 o el indicador de signo es 1. Antes de transferir, la dirección de la siguiente
instrucción después de CALL se inserta en la pila.
CZ: La secuencia del programa se transfiere a una etiqueta particular o a una dirección de 16
bits si Z = 1 o el indicador de cero es 1. Antes de transferir, la dirección de la siguiente
instrucción después de CALL se inserta en la pila.
CNZ: La secuencia del programa se transfiere a una etiqueta particular o a una dirección de 16
bits si Z = 0 o el indicador de cero es 0. Antes de transferir, la dirección de la siguiente
instrucción después de CALL se inserta en la pila.
CPE: La secuencia del programa se transfiere a una etiqueta particular o a una dirección de 16
bits si P = 1 o el indicador de paridad es 1. Antes de transferir, la dirección de la siguiente
instrucción después de CALL se inserta en la pila.
CPO: La secuencia del programa se transfiere a una etiqueta particular o a una dirección de 16
bits si P = 1 o el indicador de paridad es 0. Antes de transferir, la dirección de la siguiente
instrucción después de CALL se inserta en la pila.
RET: La secuencia del programa se transfiere de la subrutina al programa de llamada.
RC: La secuencia del programa se transfiere de la subrutina al programa de llamada si C = 1 o el
indicador de acarreo es 1.
RNC: La secuencia del programa se transfiere de la subrutina al programa de llamada si C = 0 o
el indicador de acarreo es 0.
RP: La secuencia del programa se transfiere de la subrutina al programa de llamada si S = 0 o el
indicador de signo es 0.
RM: La secuencia del programa se transfiere de la subrutina al programa de llamada si S = 1 o
el indicador de signo es 1.
RZ: La secuencia del programa se transfiere de la subrutina al programa de llamada si Z = 1 o el
indicador de cero es 1.
RNZ: La secuencia del programa se transfiere de la subrutina al programa de llamada si Z = 0 o
el indicador de cero es 0.
RPE: La secuencia del programa se transfiere de la subrutina al programa de llamada si P = 1 o
el indicador de paridad es 1.
RPO: La secuencia del programa se transfiere de la subrutina al programa de llamada si P = 0 o
el indicador de paridad es 0.
PCHL: El contenido de los registros H y L se copia en el contador del programa. El contenido de
H se coloca como byte de orden superior y el contenido de L como byte de orden inferior.
RST: Las instrucciones se utilizan generalmente junto con interrupciones y se insertan
mediante hardware externo. Sin embargo, se pueden utilizar como instrucciones de software
en un programa para transferir la ejecución del programa a una de las ocho ubicaciones. Las
direcciones son:
-
RST 0
RST 1
RST 2
RST 3
RST 4
RST 5
RST 6
RST 7
0000h
0008h
0010h
0018h
0020h
0028h
0030h
0038h
Descargar