Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Repertorio Basico de Instrucciones 8085
Repertorio Basico de Instrucciones 8085
Registro de Estado
S Z Ca P C
Esta instrucción suma el dato de 8 bits especificado por D8, mas el contenido del bit de carry, al
acumulador. El resultado se guarda en el acumulador.
Hexa
ADC B 88 ADC C 89 ADC D 8A ADC E 8B
ADC H 8C ADC L 8D ADC M 8E ADC A 8F
Esta instrucción suma el dato de 8 bits representado por D8 con el contenido del acumulador, y el
resultado se guarda en el acumulador.
Esta instrucción realiza la operación lógica AND bit a bit, entre el dato de 8 bits especificado por D8,
con el contenido del acumulador, y el resultado se guarda en el acumulador. El flag de carry es puesto a
0.
Esta instrucción hace que la ejecución del programa continúe en la dirección especificada por D16. La
dirección de retorno se salvaguarda en la memoria y el puntero de pila se decrementa en 2.
Esta instrucción hace que la ejecución del programa continúe en la dirección especificada por D16, si
el flag de carry está en 1; la dirección de retorno se salvaguarda en la memoria pila, y el puntero de pila
se decrementa en 2. Si está en 0, continúa con la dirección siguiente.
CM -Llama si es negativo.
Mnemónico CM
Hexa FC
Operando D16
Flags afectados ---
Ciclos de reloj 8/18
Esta instrucción hace que la ejecución del programa continúe en la dirección especificada por D16 si el
bit de signo está en 1. La dirección de retorno se salvaguarda en la memoria pila, y el puntero de pila se
decrementa en 2. Si el bit de signo está en 0, continúa con la dirección siguiente.
Esta instrucción causa la complementación del flip flop de carry. Si el flag de carry es 0, CMC lo pone
a 1; si está en 1, CMC lo pone a 0.
3
CMP -Compara el acumulador con un registro o locación de memoria.
Mnemónico CMP
Operando R
Flags afectados C,Z,S,P,AC
Donde R es A,B,C,D,E,L,H o M.
Ciclos de reloj 4/7
Compara el acumulador con el registro especificado en la instrucción, realizando una resta entre
ambos. El resultado de esta diferencia se pierde, ya que el acumulador no se modifica.
El objetivo de utilizar esta instrucción se basa en el análisis de los bits del registro de estado Z, C y S.
El bit de Z se activa si ambos datos son iguales.
El bit de carry se activa si el valor absoluto del registro es mayor que el del acumulador, en este caso el
bit de carry cumple la función de bit de pido (borrow).
El bit de signo (N) se activa si el resultado de la diferencia entre el Ac y el registro posee un ¨1¨ en el
bit 7.
Hexa CMP B B8 CMP C B9 CMP D BA CMP E BB
CMP H BC CMP L BD CMP M BE CMP A BF
Esta instrucción hace que la ejecución del programa continúe en la dirección dada por D16 si el bit de
carry es 0. La dirección de retorno se salvaguarda en la memoria pila, y el puntero de pila se
decrementa en 2. Si el flag de carry esta en 1, continúa con la dirección siguiente.
Esta instrucción hace que la ejecución del programa continúe en la dirección especificada por D16 si el
bit de cero es puesto a 0. La dirección de retorno se salvaguarda en la memoria pila, y el puntero de
pila se decrementa en 2. Si el bit de cero esta en 1, continúa con la dirección siguiente.
CP -Llama si es positivo.
Mnemónico CP
Hexa F4
Operando D16
Flags afectados ---
Ciclos de reloj 9/18
4
Esta instrucción hace que la ejecución del programa continúe en la dirección especificada por D16 si el
bit de signo está en 0. La dirección de retorno se salvaguarda en la memoria pila, y el puntero de pila se
decrementa en 2. Si el bit de signo está en 1, continúa con la dirección siguiente.
Esta instrucción hace que la ejecución del programa continúe en la dirección especificada por D16 si el
bit de paridad está en 1. La dirección de retorno se salvaguarda en la memoria pila, y el puntero de pila
se decrementa en 2. Si el bit de paridad está en 0, continúa con la dirección siguiente.
Esta instrucción compara el dato de 8 bits representado por D8 con el contenido del acumulador,
realizando una resta entre ambos. El resultado de esta diferencia se pierde, ya que el acumulador no se
modifica.
El objetivo de utilizar esta instrucción se basa en el análisis de los bits del registro de estado Z, C y S.
El bit de Z se activa si ambos datos son iguales.
El bit de carry se activa si el valor absoluto del dato D8 es mayor que el del acumulador, en este caso el
bit de carry cumple la función de bit de pido (borrow).
El bit de signo (N) se activa si el resultado de la diferencia entre el Ac y el dato D8 posee un ¨1¨ en el
bit 7.
Esta instrucción hace que la ejecución del programa continúe en la dirección especificada por D16 si el
bit de paridad está en 0. La dirección de retorno se salvaguarda en la memoria pila, y el puntero de pila
se decrementa en 2. Si el bit de paridad está en 1, continúa con la dirección siguiente.
5
Hexa CC
Operando D16
Flags afectados ---
Ciclos de reloj 9/18
Esta instrucción hace que la ejecución del programa continúe en la dirección especificada por D16 si el
bit de cero está en 1. La dirección de retorno se salvaguarda en la memoria pila, y el puntero de pila se
decrementa en 2. Si el bit de cero está en 0, continúa con la dirección siguiente.
La utilización de esta instrucción solo tiene justificación, luego de una instrucción de suma de dos
números decimales, representados en BCD.
La operación que realiza es el tradicional ajuste decimal, el cual se puede descomponer en dos pasos:
a- Si el valor del nible bajo del acumulador es mayor que 9 0 si el carry auxiliar es 1, le suma 6 a este
nibble.
b- Si el valor del nible alto del acumulador es mayor que 9 0 si el carry es 1, le suma 6 a este nibble.
El contenido de 16 bits del par especificado por RP, es sumado al contenido de 16 Bits del par HL y el
resultado se guarda en HL. Si el par especificado es H, el contenido del par HL será duplicado.
Hexa DAD B 09 DAD D 19 DAD H 29 DAD SP 39
6
DCR E 1D DCR H 25 DCR L 2D
DCR M 35 DCR A 3D
Donde RP es B (por los registros B y C), D (por los registros D y E), H (por los registros H y L) o SP
(por el puntero de pila).
El contenido de 16 bits del par especificado por RP, es decrementado en 1.
Hexa DCX B 0B DCX D 1B DCX H 2B DCX SP 3B
DI -Inhabilita interrupciones.
Mnemónico DI
Hexa F3
Operando ---
Flags afectados ---
Ciclos de reloj 4
Esta instrucción pone en 0 el flip flop de habilitación del 8080 de manera que se ignoren las
interrupciones que se pidan. El flip flop se pone automáticamente en 0 luego de un ciclo de reset.
También se inhabilitan cuando una interrupción es aceptada. Esto asegura que una interrupción no se
autointerrumpa.
EI -Habilita interrupciones.
Mnemónico EI
Hexa FB
Operando ---
Flags afectados ---
Ciclos de reloj 4
Esta instrucción pone en 1 al flip flop de interrupciones en el 8080, de manera que el sistema
reconozca y procese las interrupciones que sean pedidas.
HLT -Alto.
Mnemónico HLT
Hexa 76
Operando ---
Flags afectados ---
Ciclos de reloj 5
7
Esta instrucción causa que el 8080 entre en un estado de espera y solo saldrá de éste al recibir una
interrupción, o una señal de reset. Los registros y los flags no son afectados.
IN -Entrada.
Mnemónico IN
Hexa DB
Operando D8
Flags afectados ---
Ciclos de reloj 10
Donde D8 es la dirección del periférico de entrada. Esta instrucción hace que el acumulador lea un dato
de 8 bits de la puerta especificada por D8.
Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por
D16, si el flag de carry está en 1. Si el flag de carry está en 0, continúa con la proxima instrucción.
8
JM -Salta si el flag de signo es 1.
Mnemónico JM
Hexa FA
Operando D16
Flags afectados ---
Ciclos de reloj 7/10
Esta instrucción hace que el programa continúe en el lugar de memoria especificado por D16, si el flag
de signo es 1. Si es 0, continúa con la proxima instrucción.
Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por
D16.
Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por
D16, si el flag de carry está en 0. Si el flag de carry está en 1, continúa con la proxima instrucción.
Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por
D16, si el flag de cero está en 0. Si el flag de cero está en 1, continúa con la proxima instrucción.
JP -Salta si es positivo.
Mnemónico JP
Hexa F2
Operando D16
Flags afectados ---
Ciclos de reloj 7/10
9
Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por
D16, si el bit de signo está en 0. Si el bit de signo está en 1, continúa con la proxima instrucción.
Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por
D16, si el flag de paridad está activo en 1, indicando paridad par. Si el flag de paridad está en 0,
continúa con la proxima instrucción.
Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por
D16, si el flag de paridad está en 0, indicando paridad impar. Si el flag de paridad está en 1, continúa
con la proxima instrucción.
Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por
D16, si el flag de cero está en 1. Si el flag de cero está en 0, continúa con la proxima instrucción.
Esta instrucción carga el acumulador con el contenido del lugar de memoria especificado en la
instrucción por la dirección D16.
10
LDAX -Carga el acumulador.
Mnemónico LDAX
Operando RP
Flags afectados ---
Donde RP es uno de los pares B (B/C) o D (D/E).
Ciclos de reloj 7
Esta instrucción hace que el contenido de la locación de memoria especificado por D16 se cargue en L.
El contenido de la locación siguiente que D16 se carga en el registro H.
Donde RP es B (por los registros B y C), D (por los registros D y E), H (por los registros H y L) o SP
(por el puntero de pila).
Esta instrucción carga en el par especificado por RP, los 16 bits especificados por D16 en la
instrucción.
Hexa LXI B 01 LXI D 11 LXI H 21 LXI SP 31
Esta instrucción hace que el byte de datos del registro designado por S (fuente) se transfiera al registro
designado por R (destino). Si M es uno de los registros especificados, se usará el contenido del lugar
de memoria direccionado por el par HL. MOV A,A y demás variantes donde R y S designan el mismo
registro, son instrucciones válidas, pero no serán ejecutadas.(equivalen a una NOP).
Hexa MOV B,B 40 MOV B,C 41 MOV B,D 42 MOV B,E 43
11
MOV B,H 44 MOV B,L 45 MOV B,M 46 MOV B,A 47
MOV C,B 48 MOV C,C 49 MOV C,D 4A MOV C,E 4B
MOV C,H 4C MOV C,L 4D MOV C,M 4E MOV C,A 4F
MOV D,B 50 MOV D,C 51 MOV D,D 52 MOV D,E 53
MOV D,H 54 MOV D,L 55 MOV D,M 56 MOV D,A 57
MOV E,B 58 MOV E,C 59 MOV E,D 5A MOV E,E 5B
MOV E,H 5C MOV E,L 5D MOV E,M 5E MOV E,A 5F
MOV H,B 60 MOV H,C 61 MOV H,D 62 MOV H,E 63
MOV H,H 64 MOV H,L 65 MOV H,M 66 MOV H,A 67
MOV L,B 68 MOV L,C 69 MOV L,D 6A MOV L,E 6B
MOV L,H 6C MOV L,L 6D MOV L,M 6E MOV L,A 6F
MOV M,B 70 MOV M,C 71 MOV M,D 72 MOV M,E 73
MOV M,H 74 MOV M,L 75 MOV M,A 77 MOV A,B 78
MOV A,C 79 MOV A,D 7A MOV A,E 7B MOV A,H 7C
MOV A,L 7D MOV A,M 7E MOV A,A 7F
Mnemónico MVI
Operando R,D8
Flags afectados ---
Donde R es A,B,C,D,E,L,H o M.
Ciclos de reloj 4/7
Esta instrucción carga el dato de 8 bits en el registro designado por R.
Hexa MVI B 06 MVI D 16 MVI H 26 MVI M 36
MVI C 0E MVI E 1E MVI L 2E MVI A 3E
12
Esta instrucción realiza la operación OR bit a bit entre el registro especificado por R y el acumulador.
El resultado se guarda en el acumulador. El flag de carry es puesto a 0. Si M es el registro especificado,
usará el contenido del lugar de memoria direccionado por el par HL.
Hexa ORA B B0 ORA C B1 ORA D B2 ORA E B3
ORA H B4 ORA L B5 ORA M B6 ORA A B7
Esta instrucción realiza la operación lógica OR bit a bit entre el dato de 8 bits representado por D8 y el
contenido del acumulador. El resultado es almacenado en el acumulador. El flag de carry es puesto en
0.
OUT -Salida.
Mnemónico OUT
Hexa D3
Operando D8
Flags afectados ---
Ciclos de reloj 10
Donde D8 representa la dirección del periférico de salida. Esta instrucción transfiere el contenido de 8
bits del acumulador por el bus de datos, al periférico especificado por D8.
Esta instrucción hace que el PC se cargue con el contenido de los registros HL. Esto hace que la
ejecución del programa siga en la dirección de memoria especificada por H y L.
Donde RP es B (por los registros B y C), D (por los registros D y E), H (por los registros H y L), o
PSW (por los flags y el acumulador).
13
El contenido del lugar de memoria cuya dirección está en el registro SP, es transferido a la parte baja
del registro par especificado, y el dato contenido en el lugar de memoria siguiente, es cargado en la
parte alta del registro especificado.
El SP es incrementado en dos.
Para el caso de PSW, la parte alta del registro corresponde al acumulador y la parte baja al código de
condición.
Hexa POP B C1 POP D D1 POP H E1 POP PSW F1
Donde RP es B (por los registros B y C), D (por los registros D y E), H (por los registros H y L), o
PSW (por los flags y el acumulador).
Esta instrucción salvaguarda el par especificado por RP en la pila, y decrementa el puntero de pila en 2.
La parte alta del registro del par (el que se usa como operando), se salvaguarda en la dirección anterior
a la que contiene SP. La parte baja es guardada dos lugares anteriores al puntero. Note que el puntero
de pila es primero decrementado y luego se salvaguarda el registro. Esto significa que la instrucción
PUSH B no guardará el registro B en la locación direccionada por el puntero sino en un lugar anterior,
y el registro C dos lugares anteriores.
Cuando se usa PUSH PSW, los flags se guardan en un lugar anterior al indicado por el puntero, y el
acumulador, dos lugares menos que donde indica el puntero. Los flags se salvaguardan como sigue.
bit 7 6 5 4 3 2 1 0
flag S Z 0 AC 0 P 1 C
Esta instrucción hace rotar a la izquierda un bit, cada uno de los bits del acumulador. En esta
instrucción el bit de carry se trata como un noveno bit; así el bit mas significativo va al lugar del bit de
carry, y el contenido de este, pasa a ocupar el lugar del bit menos significativo.
Esta instrucción si el bit de carry es 1, saca una dirección de la memoria pila e incrementa el puntero de
pila en dos , esta direcciión se carga en el PC. La ejecución del programa continúa en esa dirección. Si
el bit de carry es 0 se trata como una NOP.
RET -Retorno.
Mnemónico RET
Hexa C9
Operando ---
Flags afectados ---
Ciclos de reloj 10
Esta ejecución saca un dirección de la memoria pila e incrementa el puntero de pila en dos. La
ejecución del programa continúa en esa dirección.
Esta instrucción hace correr (rotar) un lugar los bits del acumulador. El bit mas significativo pasa a ser
el menos significativo; además, el BMS queda almacenado en el bit de carry.
Esta instrucción si el bit de signo es 1, saca una dirección de la memoria pila e incrementa el puntero
de pila en dos . La ejecución del programa continúa en esa dirección. Si el bit de signo es 0 se trata
como una NOP.
15
RNC -Retorna si no hay carry.
Mnemónico RNC
Hexa D0
Operando ---
Flags afectados ---
Ciclos de reloj 6/12
Esta instrucción si el bit de carry es 0 saca una dirección de la memoria pila e incrementa el puntero de
pila en dos. La ejecución del programa continúa en esa dirección. Si el bit de carry es 1 se trata como
una NOP.
Esta instrucción si el bit de cero es 0, saca una dirección de la memoria pila e incrementa el puntero de
pila en dos. La ejecución del programa continúa en esa dirección. Si el bit de cero es 1 se trata como
una NOP.
Esta instrucción hace correr (rotar) un lugar los bits del acumulador hacia la derecha .El bit menos
significativo pasa a ser el mas significativo; además, el bms queda almacenado en el bit de carry.
Esta instrucción si el bit de signo es 0, saca una dirección de la memoria pila e incrementa el puntero
de pila en dos. La ejecución del programa continúa en esa dirección. Si el bit de signo es 1 se trata
como una NOP.
Esta instrucción si el bit de paridad es 1, saca una dirección de la memoria pila e incrementa el puntero
de pila en dos. La ejecución del programa continúa en esa dirección. Si el bit de paridad es 0 se trata
como una NOP.
Esta instrucción si el bit de paridad es 0, saca una dirección de la memoria pila e incrementa el puntero
de pila en dos. La ejecución del programa continúa en esa dirección. Si el bit de paridad es 1 se trata
como una NOP.
RST -Restablecimiento.
Mnemónico RST
Operando N
Flags afectados ---
Ciclos de reloj 12
Donde N es un número entero entre 0 y 7. Esta instrucción rara vez es usada en el listado de un
programa. En lugar de eso, se implementa por hardware, y entra por el bus de datos, cuando el 8080
acepta un pedido de interrupción. Esta instrucción se comporta como un llamado incondicional a
subrutina a una dirección fija, por lo tanto causa que la ejecución del programa continúe en la dirección
dada por 00EXP000, donde EXP es el número N en binario. El contenido del PC, se almacena en la
memoria pila, para proveer posteriormente la dirección de retorno. Cada una de las instrucciones RST,
tiene un código diferente, y acceden a distintos lugares fijos de memoria (distintas rutinas de servicio).
Hexa RST0 C7 RST1 CF RST2 D7 RST3 DF
RST4 E7 RST5 EF RST6 F7 RST7 FF
Esta instrucción si el bit de cero es 1, saca una dirección de la memoria pila e incrementa el puntero de
pila en dos. La ejecución del programa continúa en esa dirección. Si el bit de cero es 0 se trata como
una NOP.
SBB -Resta del acumulador un registro o lugar de memoria con pido (borrow).
Mnemónico SBB
17
Operando R
Flags afectados C,S,Z,P,AC
Donde R es A,B,C,D,E,H,L o M.
Ciclos de reloj 4
Esta instrucción suma el contenido del flip flop de carry con el registro especificado por R. Este valor
luego se resta del acumulador y el resultado se guarda en el acumulador.Si M es el registro
especificado, se usará el contenido del lugar de memoria direccionado por el par HL. El flag de carry
cumple la función de pido (borrow)
Hexa SBB B 98 SBB C 99 SBB D 9A SBB E 9B
SBB H 9C SBB L 9D SBB M 9E SBB A 9F
Esta instrucción suma el bit de carry al dato de 8 bits especificado en la instrucción por D8. Este valor
luego se resta del acumulador usando complemento a dos. El resultado se guarda en el acumulador. Si
un exceso ocurre en el bit de mayor orden, el bit de carry es puesto en 1; caso contrario; es puesto en 0.
El flag de carry cumple la función de pido (borrow)
Esta instrucción hace que el contenido del registro L sea almacenado en la dirección especificada en la
instrucción por D16. El registro H es almacenado en la dirección posterior a D16.
18
El contenido de los registros H y L se carga en el puntero de pila. Se pierde el contenido anterior del
puntero SP, H y L permanecen invariables.
Esta instrucción pone en 1 el flip flop de carry. Si estaba en 1, STC lo deja en ese estado.
Esta instrucción resta del acumulador el registro designado por R, el resultado se guarda en el
acumulador. Si el registro especificado es M, se usará el contenido de la locación de memoria
direccionada por el par HL. El flag de carry cumple la función de pido (borrow).
19
Hexa
SUB B 90 SUB C 91 SUB D 92 SUB E 93
SUB H 94 SUB L 95 SUB M 96 SUB A 97
Esta instrucción resta el dato de 8 bits especificado por D8, del contenido del acumulador. El resultado
se guarda en el acumulador. El flag de carry cumple la función de pido (borrow)
Esta instrucción realiza la operación Or exclusivo entre el registro especificado por R y el acumulador.
El flag de carry es puesto a 0. Si M es el registro especificado, usará el contenido del lugar de memoria
direccionado por el par HL.
Hexa XRA B A8 XRA C A9 XRA D AA XRA E AB
XRA H AC XRA L AD XRA M AE XRA A AF
20
Esta instrucción realiza la operación lógica Or exclusivo bit a bit entre el dato de 8 bits representado
por D8 y el contenido del acumulador. El resultado se guarda en el acumulador, y el flag de carry es
puesto en 0.
21