Está en la página 1de 21

MICROPROCESADORES I

SET DE INSTRUCCIONES DEL 8080

Registro de Estado

S Z Ca P C

S: Bit de Signo Z: Bit de Cero Ca: Carry Auxiliar


P: Bit de Paridad C: Bit de Carry AC: Acumulador

ACI -Suma en forma inmediata un dato con el acumulador con carry.


Mnemónico ACI
Hexa CE
Operando D8
Flags afectados C,S,Z,P,AC
Ciclos de reloj 7

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.

ADC -Suma un registro o lugar de memoria con el acumulador con carry.


Mnemónico ADC
Operando R
Flags afectados C,S,Z,P,AC
Donde R es A,B,C,D,E,L,H o M.
Ciclos de reloj 4/7
Esta instrucción suma el contenido del registro especificado por R mas el bit de carry al acumulador. Si
el registro especificado es M, se usará el lugar de memoria designado por el par HL.

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

ADD -Suma un registro o memoria al acumulador.


Mnemónico ADD
Operando R
Flags afectados C,S,Z,P,AC
Donde R es A,B,C,D,E,L,H, o M.
Ciclos de reloj 4/7
Esta instrucción suma el contenido del registro designado con R al contenido del acumulador,
guardando el resultado en el acumulador. El acarreo, de existir o no, será reflejado en el bit de carry. Si
el registro especificado es M, se usará el lugar de memoria designado por el par HL.
1
Hexa
ADD B 80 ADD C 81 ADD D 82 ADD E 83
ADD H 84 ADD L 85 ADD M 86 ADD A 87

ADI -Suma en forma inmediata un dato con el acumulador.


Mnemónico ADI
Hexa C6
Operando D8
Flags afectados C,S,Z,P,AC
Ciclos de reloj 7

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.

ANA -Realiza la,operación lógica AND entre un registro o lugar de memoria y el


acumulador.
Mnemónico ANA
Operando R
Flags afectados C,Z,S,P
Donde R es A,B,C,D,E,L,H o M.
Ciclos de reloj 4/7
Esta instrucción realiza la operación lógica AND, bit a bit entre el registro especificado en 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, se usará el contenido del lugar de memoria direccionado por el par HL.
Hexa
ANA B A0 ANA C A1 ANA D A2 ANA E A3
ANA H A4 ANA L A5 ANA M A6 ANA A A7

ANI -Realiza la operación lógica AND entre un dato y el acumulador.


Mnemónico ANI
Hexa E6
Operando D8
Flags afectados C,Z,S,AC
Ciclos de reloj 7

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.

CALL -Llama a subrutina.


Mnemónico CALL
Hexa CD
Operando D16
2
Flags afectados ---
Ciclos de reloj 18

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.

CC -Llama si hay carry.


Mnemónico CC
Hexa DC
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 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.

CMA -Complemento del acumulador.


Mnemónico CMA
Hexa 2F
Operando ---
Flags afectados ---
Ciclos de reloj 4
El contenido del acumulador es complementado bit a bit

CMC -Complementa el bit de carry.


Mnemónico CMC
Hexa 3F
Operando ---
Flags afectados C
Ciclos de reloj 4

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

CNC -Llama si no hay carry.


Mnemónico CNC
Hexa D4
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 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.

CNZ -Llama si el bit de cero es 0.


Mnemónico CNZ
Hexa C4
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 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.

CPE -Llama si la paridad es par.


Mnemónico CPE
Hexa EC
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 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.

CPI -Compara en forma inmediata con el acumulador.


Mnemónico CPI
Hexa FE
Operando D8
Flags afectados C,Z,S,P
Ciclos de reloj 7

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.

CPO -Llama si la paridad es impar.


Mnemónico CPO
Hexa E4
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 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.

CZ -Llama si el bit de cero es 1.


Mnemónico CZ

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.

DAA -Ajuste decimal del acumulador.


Mnemónico DAA
Hexa 27
Operando ---
Flags afectados Z,S,P,C,AC
Ciclos de reloj 4

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.

DAD -Doble adición.


Mnemónico DAD
Operando RP
Flags afectados C
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).
Ciclos de reloj 10

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

DCR -Decrementa un registro o memoria.


Mnemónico DCR
Operando R
Flags afectados Z,S,P,AC
Donde R es A,B,C,D,E,H,L o M
Ciclos de reloj 4/10

Esta instrucción decrementa en 1 el contenido del registro especificado por R.

Hexa DCR B 05 DCR C 0D DCR D 15

6
DCR E 1D DCR H 25 DCR L 2D
DCR M 35 DCR A 3D

DCX -Decrementa un registro par.


Mnemónico DCX
Operando RP
Flags afectados ---
Ciclos de reloj 6

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.

INR -Incremento de registro o memoria.


Mnemónico INR
Operando R
Flags afectados Z,S,P,AC
Donde R es A,B,C,D,E,H,L o M
Ciclos de reloj 4
Esta instrucción causa que un registro, especificado por R, sea incrementado en 1. El carry no se
modifica.
Hexa INR B 04 INR C 0C INR D 14
INR E 1C INR H 24 INR L 2C
INR M 34 INR A 3C

INX -Incremento de registro par.


Mnemónico INX
Operando RO
Flags afectados ---
Ciclos de reloj 6
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 registro par especificado por RP, es incrementado en 1.

Hexa INX B 03 INX D 13 INX H 23 INX SP 33

JC -Salta si el bit de carry es 1


Mnemónico JC
Hexa DA
Operando D16
Flags afectados ---
Ciclos de reloj 7/10

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.

JMP -Salto incondicional.


Mnemónico JMP
Hexa C3
Operando D16
Flags afectados ---
Ciclos de reloj 10

Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por
D16.

JNC -Salta si el flag de carry es 0.


Mnemónico JNC
Hexa D2
Operando D16
Flags afectados ---
Ciclos de reloj 7/10

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.

JNZ -Salta si el flag de cero es 0.


Mnemónico JNZ
Hexa C2
Operando D16
Flags afectados ---
Ciclos de reloj 7/10

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.

JPE -Salta si la paridad es par.


Mnemónico JPE
Hexa EA
Operando D16
Flags afectados ---
Ciclos de reloj 7/10

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.

JPO -Salta si la paridad es impar.


Mnemónico JPO
Hexa E2
Operando D16
Flags afectados ---
Ciclos de reloj 7/10

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.

JZ -Salta si el flag de cero es 1.


Mnemónico JZ
Hexa CA
Operando D16
Flags afectados ---
Ciclos de reloj 7/10

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.

LDA -Carga el acumulador en forma directa.


Mnemónico LDA
Hexa 3A
Operando D16
Flags afectados ---
Ciclos de reloj 13

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

Carga en el acumulador el contenido de la locación de memoria direccionada por el par registro RP


especificado en la instrucción.
Hexa LDAX B 0A LDAX D 1A

LHLD -Carga H y L en forma directa.


Mnemónico LHLD
Hexa 2A
Operando D16
Flags afectados ---
Ciclos de reloj 16

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.

LXI -Carga en forma inmediata un registro par.


Mnemónico LXI
Operando RP, D16
Flags afectados ---
Ciclos de reloj 10

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

MOV -Transferencia entre registros.


Mnemónico MOV
Operandos R,S
Flags afectados ---
Donde R y S son A,B,C,D,E,L,H o M.
Ciclos de reloj 4/7

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

MVI -Carga inmediata de un registro o memoria.

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

NOP -No opera.


Mnemónico NOP
Hexa 00
Operando ---
Flags afectados ---
Ciclos de reloj 4

No realiza ninguna operación. El contador de programa (PC) se incrementa en uno y la ejecución


continúa en la próxima instrucción.

ORA -Or entre un lugar de memoria o registro y el acumulador.


Mnemónico ORA
Operando R
Flags afectados C,Z,S,P
Donde R es A,B,C,D,E,L,H o M.
Ciclos de reloj 7

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

ORI -Or inmediato con el acumulador.


Mnemónico ORI
Hexa EE
Operando D8
Flags afectados C,Z,S,P
Ciclos de reloj 7

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.

PCHL -Carga el contador de programa.


Mnemónico PCHL
Hexa E9
Operando ---
Flags afectados ---
Ciclos de reloj 6

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.

POP -Saca datos de la pila.


Mnemónico POP
Operando RP
Flags afectados ---
Ciclos de reloj 10

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

PUSH -Guarda datos en la pila.


Mnemónico PUSH
Operando RP
Flags afectados ---
Ciclos de reloj 12

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

Hexa PUSH B C5 PUSH D D5 PUSH H E5 PUSH PSW F5

RAL -Rota el acumulador hacia la izquierda a través del bit de carry.


Mnemónico RAL
Hexa 17
Operando ---
Flags afectados C
Ciclos de reloj 4

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.

RAR -Rota el acumulador a la derecha a través del bit de carry.


Mnemónico RAR
Hexa 1F
Operando ---
Flags afectados C
Ciclos de reloj 4
14
Esta instrucción hace rotar a la derecha 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 menos significativo va al lugar del bit de carry, y
el contenido de este, pasa a ocupar el lugar del bit mas significativo.

RC -Retorna si hay carry.


Mnemónico RC
Hexa D8
Operando ---
Flags afectados ---
Ciclos de reloj 6/12

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.

RLC -Rota el acumulador a la izquierda.


Mnemónico RLC
Hexa 07
Operando ---
Flags afectados C
Ciclos de reloj 4

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.

RM -Retorna si el bit de signo es 1(negativo).


Mnemónico RM
Hexa F8
Operando ---
Flags afectados ---
Ciclos de reloj 6/12

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.

RNZ -Retorna si el bit de cero es 0.


Mnemónico RNZ
Hexa C0
Operando ---
Flags afectados ---
Ciclos de reloj 6/12

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.

RRC -Rota el acumulador a la derecha.


Mnemónico RRC
Hexa 0F
Operando ---
Flags afectados C
Ciclos de reloj 4

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.

RP -Retorna si el bit de signo es 0(positivo).


Mnemónico RP
Hexa F0
Operando ---
Flags afectados ---
Ciclos de reloj 6/12

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.

RPE -Retorna si la paridad es par.


Mnemónico RPE
Hexa E8
Operando ---
16
Flags afectados ---
Ciclos de reloj 6/12

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.

RPO -Retorna si la paridad es impar.


Mnemónico RPO
Hexa E0
Operando ---
Flags afectados ---
Ciclos de reloj 6/12

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

RZ -Retorna si el bit de cero es 1.


Mnemónico RZ
Hexa C8
Operando ---
Flags afectados ---
Ciclos de reloj 6/12

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

SBI -Resta en forma inmediata del acumulador con pido.


Mnemónico SBI
Hexa DE
Operando D8
Flags afectados C,S,Z,P,AC
Ciclos de reloj 7

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)

SHLD -Almacena H y L en forma directa.


Mnemónico SHLD
Hexa 22
Operando D16
Flags afectados ---
Ciclos de reloj 16

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.

SPHL -Carga el puntero de pila con el contenido de HL.


Mnemónico SPHL
Hexa F9
Operando ---
Flags afectados ---
Ciclos de reloj 6

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.

STA -Almacena en el acumulador en forma directa.


Mnemónico STA
Hexa 32
Operando D16
Flags afectados ---
Ciclos de reloj 13

Esta instrucción almacena el contenido del acumulador en la dirección de memoria especificada en la


instrucción por D16.

STAX -Salvaguarda el acumulador.


Mnemónico STAX
Operando RP
Flags afectados ---
Ciclos de reloj 7

Donde RP es uno de los pares B (B/C) o D (D/E).


Esta instrucción guarda el contenido del acumulador en la dirección de memoria direccionada por el
registro par especificado por RP.
Hexa STAX B 02 STAX D 12

STC -Pone en 1 el bit de carry.


Mnemónico STC
Hexa 37
Operando ---
Flags afectados C
Ciclos de reloj 4

Esta instrucción pone en 1 el flip flop de carry. Si estaba en 1, STC lo deja en ese estado.

SUB -Resta del acumulador un registro o lugar de memoria.


Mnemónico SUB
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 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

SUI -Resta en forma inmediata del acumulador.


Mnemónico SUI
Hexa D6
Operando D8
Flags afectados C,Z,S,P,AC
Ciclos de reloj 7

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)

XCHG -Intercambia registros.


Mnemónico XCHG
Hexa EB
Operando ---
Flags afectados ---
Ciclos de reloj 4

El contenido de 16 bits de los registros D y E, se intercambian con el contenido de los registros H y L.


El intercambio es entre D y H, y entre E y L.

XRA -Or exclusivo de un registro o lugar de memoria con el acumulador.


Mnemónico XRA
Operando R
Flags afectados C,Z,S,P
Donde R es A,B,C,D,E,L,H o M.
Ciclos de reloj 4

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

XRI -Or exclusivo en forma inmediata con el acumulador.


Mnemónico XRI
Hexa EE
Operando D8
Flags afectados C,Z,S,AC
Ciclos de reloj 7

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.

XTHL -Intercambia contenido de la memoria pila con el puntero HL.


Mnemónico XTHL
Hexa E3
Operando ---
Flags afectados ---
Ciclos de reloj 16

El contenido del registro L es intercambiado con el contenido de la locación de memoria direccionada


por el puntero de pila. El contenido del registro H es intercambiado con el contenido de la locación de
memoria un lugar mayor que el direccionado por el puntero.

21

También podría gustarte