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