You are on page 1of 29

Universidad de Santiago 1

Facultad de Ingeniera

CAPITULO 8
MICROPROCESADORES

JGL
Universidad de Santiago 2
Facultad de Ingeniera

EL MICROPROCESADOR 8080
El microprocesador 8080 es un Chip de alta integracin ( LSI ) de 40 pines que contiene un BUS de
Direcciones de 16 lneas , un Bus de Datos de 8 lneas, 10 lneas de control, 4 lneas para fuentes de
poder y dos entradas para un reloj de dos fases.

JGL
Universidad de Santiago 3
Facultad de Ingeniera

CICLO DE OPERACION
El procesador ejecuta instrucciones que residen en una memoria externa. Las
instrucciones son de 1, 2 3 bytes, siendo siempre el primer byte el cdigo de la instruccin. Las
instrucciones deben estar puestas en posiciones consecutivas de la memoria, constituyendo un programa.

El procesador, en un instante dado trae, desde la posicin de memoria indicada por el


CONTADOR DE PROGRAMA, un byte (el cdigo de la instruccin) y lo coloca en el REGISTRO DE
INSTRUCCIONES. Posteriormente, incrementa el Contador de Programa en 1 y procede a la ejecucin
de la instruccin. Terminada la ejecucin vuelve a repetir el ciclo. Es decir, el traer un byte desde la
posicin de memoria indicada por el contador de programa, colocarlo en el registro de instrucciones,
incrementar el contador de programa y ejecutar la instruccin es un ciclo que se repite indefinidamente
en el tiempo, mientras el procesador se encuentre encendido.

Debe tenerse presente que el contador de programa se incrementa en 1 cada vez que se
ingresa a la CPU un byte de instruccin.

REGISTROS DE PROPOSITO GENERAL

Existen 7 registros de propsito general, a saber, A, B, C, D, E, H y L. Estos registros de


8 bit pueden ser usados por el usuario para acumular informacin. Pueden ser incrementados o
decrementados en 1.

El registro A es conocido como el ACUMULADOR y puede, adems de servir como


registro de acumulacin, efectuar operaciones aritmeticas de suma y resta u operaciones lgicas AND,
OR, OR-EXCLUSIVO Y COMPARE. Trabaja con 5 banderas de condicin (flip-flops) que dan cuenta
de su estado.

JGL
Universidad de Santiago 4
Facultad de Ingeniera

EL PUNTERO DE PILA (STACK POINTER)

El Stack o Pila es una regin de memoria usada para guardar datos transitoriamente y que
debern ser usados posteriormente. Esta regin est apuntada por el registro puntero del stack (SP).
Cuando se ingresa un byte en el stack el puntero primero se decrementa en 1. Cuando se saca un byte
del stack, primero se extrae el dato y despus se incrementa. Luego, el puntero est siempre indicando la
posicin de memoria del ltimo dato ingresado al stack.

Este sistema es conocido con el nombre LIFO (Last In First Out).

El stack es usado por las instrucciones de llamado a subrutinas CALL y por las
Interrupciones. Adems, pueden ingresarse o sacarse datos del stack por medio de las instrucciones
PUSH Y POP

SEALES Y BUSES DEL MICROPROCESADOR

FUENTES DE PODER
pin 28 +12 Volts
pin 20 +5 Volts
pin 2 Tierra ( GND )
pin 11 -5 Volts

RELOJ
El 8080 requiere de un RELOJ DE DOS FASES NO TRASLAPADO

pin 22 Fase 1 del reloj


pin 15 Fase 2 del reloj

BUS DE DIRECCIONES

El microprocesador 8080 puede direccionar directamente hasta 65.536 ( 64 Kilos ) de posiciones


de memoria a travs del uso de un bus de direcciones de 16 lneas.
pin 25 Bit A0., el bit menos significativo ( LSB )
pin 26 Bit A1
pin 27 Bit A2
pin 29 Bit A3
pin 30 Bit A4
pin 31 Bit A5
JGL
Universidad de Santiago 5
Facultad de Ingeniera

pin 32 Bit A6
pin 33 Bit A7, el bit ms significativo ( MSB ) del cdigo de dispositivo
pin 34 Bit A8, el bit menos significativo del cdigo de dispositivo
pin 35 Bit A9
pin 1 Bit A10
pin 40 Bit A11
pin 37 Bit A12
pin 38 Bit A13
pin 39 Bit A14
pin 36 Bit A15, el bit ms significativo ( MSB )

BUS DE DATOS

El 8080 es un microprocesador de 8 bits, lo que significa que tiene un registro acumulador de 8


bit, varios registros de propsitos generales de 8 bit y un bus de datos bidireccional de 8 bit. El que este
bus sea bidireccional significa que los datos pueden salir del microprocesador o ser ingresados a travs
de el. Y, adems es un bus de tres estados ( 1, 0 desconectado ).

pin 10 Bit D0 del dato, el menos significativo


pin 9 Bit D1 del dato
pin 8 Bit D2 del dato
pin 7 Bit D3 del dato
pin 3 Bit D4 del dato
pin 4 Bit D5 del dato
pin 5 Bit D6 del dato
pin 6 Bit D7 del dato, el ms significativo

CONTROLES

Los controles determinan como debe funcionar el microprocesador.


Existen cuatro seales de entrada de control, que son :

pin 12 RESET. Un 0 lgico en esta entrada lleva a cero el contador de programa

pin 14 INT, Requerimiento de Interrupcin. Un 1 lgico en esta entrada generar un


requerimiento de interrupcin, que el microprocesador reconocer al finalizar la
ejecucin de la instruccin presente o cuando est detenido. Si la CPU est en el
estado HOLD, o si la bandera de permiso de interrupcin est en 0, el
requerimiento de interrupcin no ser concedido.

pin 23 READY. Un 1 lgico le indicar al 8080 que un dato est listo en el bus de
datos. Esta seal, de acuerdo con la literatura Intel, es usada para sincronizar la
CPU con memorias lentas o con dispositivos I/O. Si despus de enviar una
direccin por el bus de direcciones el 8080 no recibe un 1 lgico en READY, el
microprocesador entrar en un estado WAIT, mientras esta lnea permanezca en
0. Esta entrada puede ser usada tambin para llevar la CPU paso a paso.

JGL
Universidad de Santiago 6
Facultad de Ingeniera

pin 13 HOLD. Un 1 lgico en esta entrada hace que la CPU entre al estado HOLD, que
permite a un dispositivo externo tomar el control de los buses de dato y
direcciones, tan pronto como el 8080 halla terminado de usarlos en el ciclo de
mquina presente. Cuando la CPU entra al estado HOLD, el bus de datos y el de
direcciones tomarn el estado de alta impedancia (tercer estado). La CPU
indicar que est en el estado HOLD por medio de la seal HLDA.
HOLD es reconocido bajo dos condiciones:
1) La CPU se encuentra en el estado HALT, o
2) La CPU est en el estado T2 o Tw y la seal READY se encuentre en
1.

Las 6 salidas de control del 8080 son:

pin 24 WAIT. Esta seal indica con un 1 lgico que la CPU se encuentra en el estado
WAIT.
___
pin 18 WR o WRITE. Esta seal es usada para escribir en Memoria o en un dispositivo
I/O. Cuando este pin esta en 0 lgico el dato en el bus de datos est estable y
puede ser ledo.

pin 21 HLDA o HOLD ACKNOWLEDGE. Esta salida toma el valor lgico 1 en


respuesta a la seal de entrada HOLD. Indica que el bus de datos y de
direcciones toman el estado de alta impedancia. La seal HLDA comienza: 1)
en T3 para una operacin de lectura de memoria o de entrada, o 2) el perodo de
reloj que sigue a T3 para una operacin de escritura en memoria o salida.

pin 16 INTE o INTERRUPT ENABLE. Esta seal indica el contenido de la bandera


interna de permiso de interrupcin. Este flip-flop (bandera) puede ser puesto en 0
o en 1 para habilitar o deshabilitar el sistema de interrupciones por medio de las
instrucciones EI o DI respectivamente. Esta bandera es limpiada
automticamente ( y por lo tanto desabilitando el sistema de interrupciones ) en
el tiempo T1 del ciclo de mquina FETCH cuando una interrupcin es aceptada.
Esta bandera tambin es limpiada por medio de la seal RESET.

pin 19 SYNC ( seal de sincronizacin ). Esta seal se mantiene en 1 lgico durante el


primer ciclo de reloj de cada ciclo de mquina.

pin 17 DBIN o DATA BUS IN. Cuando esta seal toma el valor lgico 1 indica que el
Bus de Datos se encuentra en su modo de entrada

JGL
Universidad de Santiago 7
Facultad de Ingeniera

REPERTORIO DE INSTRUCCIONES PARA EL MICROPROCESADOR


INTEL 8080/8085

Cdigo de op
Nemotcnico Bytes (hex) Descripcin

ADD A 1 87 Suma A a A (doble A)

ADD B 1 80 Suma B a A

ADD C 1 81 Suma C a A

ADD D 1 82 Suma D a A

ADD E 1 83 Suma E a A

ADD H 1 84 Suma H a A

ADD L 1 85 Suma L a A

ADD M 1 86 Suma LOC memoria (H&L) a A

ADI v 2 C6 Suma dato inmediato v a A

ADC A 1 8F Suma A a A con arrastre (doble A con arrastre)

ADC B 1 88 Suma B a A con arrastre

A ADC C 1 89 Suma C a A con arrastre

ADC D 1 8A Suma D a A con arrastre

ADC E 1 8B Suma E a A con arrastre

ADC H 1 8C Sauma H a A con arrastre

ADC L 1 8D Suma L a A con arrastre

ADC M 1 8E Suma LOC memoria (H&L) a A con arrastre

ACI v 2 CE Suma dato inmediato v a A con arrastre

ANA A 1 A7 Examina A y borra arrastre

ANA B 1 A0 AND B con A

ANA C 1 A1 AND C con A

ANA D 1 A2 AND D con A

ANA E 1 A3 AND E con A

ANA H 1 A4 AND H con A

ANA L 1 A5 AND L con A

ANA M 1 AND LOC memoria (H&L) con A

ANI v 2 AND dato inmediato v con A

JGL
Universidad de Santiago 8
Facultad de Ingeniera

Cdigo de op
Nemotcnico Bytes (hex) Descripcin

CALL aa 3 CD Llama a subrutina en direccin aa

CZ aa 3 CC Si cero, llama a subrutina en direccin aa

CNZ aa 3 C4 Si no cero, llama a subrutina en direccin aa

CP aa 3 F4 Si ms, llama a subrutina en direccin aa

CM aa 3 FC Si menos, llama a subrutina en direccin aa

CC aa 3 DD Si arrastre, llama a subrutina en direccin aa

CNC aa 3 D4 Si no arrastre, llama a subrutina en direccin aa

CPE aa 3 EC Si paridad par, llama a subrutina en direccin aa

C CPO aa 3 E4 Si paridad impar, llama a subrutina en direccin aa

CMA 1 2F Complementa A

CMC 1 3F Complementa arrastre

CMP A 1 BF Pone en 1 la bandera de cero

CMP B 1 B8 Compara A con B

CMP C 1 B9 Compara A con C

CMP D 1 BA Compara A con D

CMP E 1 BB Compara A con E

CMP H 1 BC Compara A con H

CMP L 1 BD Compara A con L

CMP M 1 BE Compara A con LOC memoria (H&L)

CPI v 2 FE Compara A con dato inmediato v

DAA 1 27 Ajuste decimal A

DAD B 1 09 Suma B&C a H&L

DAD D 1 19 Suma D&E a H&L

D DAD H 1 29 Suma H&L a H&L (doble H&L)

DAD SP 1 39 Suma SP a H&L

DCR A 1 3D Decrementa A

DCR B 1 05 Decrementa B

JGL
Universidad de Santiago 9
Facultad de Ingeniera

Cdigo de op
Nemotcnico Bytes (hex) Descripcin

DCR C 1 0D Decrementa C

DCR D 1 15 Decrementa D

DCR E 1 1D Decrementa E

DCR H 1 25 Decrementa H

DCR L 1 2D Decrementa L

D DCR M 1 35 Decrementa LOC memoria (H&L)

DCX B 1 0B Decrementa B&C

DCX D 1 1B Decrementa D&E

DCX H 1 2B Decrementa H&L

DCX SP 1 3B Decrementa SP

DI 1 F3 Inhabilita interrupciones

E EI 1 FB Habilita interrupciones

H HLT 1 76 Alto hasta interrupcin

IN v 2 DB Entrada desde el dispositivo v

INR A 1 3C Incrementa A

INR B 1 04 Incrementa B

INR C 1 0C Incrementa C

INR D 1 14 Incrementa D

I INR E 1 1C Incrementa E

INR H 1 24 Incrementa H

INR L 1 2C Incrementa L

INR M 1 34 Incrementa LOC memoria (H&L)

INX B 1 03 Incrementa B&C

INX D 1 13 Incrementa D&E

INX H 1 23 Incrementa H&L

INX SP 1 33 Incrementa SP

JGL
Universidad de Santiago 10
Facultad de Ingeniera

Cdigo de op
Nemotcnico Bytes (hex) Descripcin

JMP aa 3 C3 Salta a direccin aa

JZ aa 3 CA Si cero salta a direccin aa

JNZ aa 3 C2 Si no cero, salta a direccin aa

JP aa 3 F2 Si ms, salta a direccin aa

J JM aa 3 FA Si menos, salta a direccin aa

JC aa 3 DA Si arrastre, salta a direccin aa

JNC aa 3 D2 Si no arrastre, salta a direccin aa

JPE aa 3 EA Si paridad par, salta a direccin aa

JPO aa 3 E2 Si paridad impar, salta a direccin aa

LDA aa 3 3A Carga A con contenido direccin aa

LDAX B 3 0A Carga A con contenido de LOC memoria ( B & C )

LDAX D 3 1A Carga A con contenido de LOC memoria ( D & E )

L LHLD aa 3 2A Carga H&L con contenido direccin aa (L con LOC aa, H con
LOC aa+1)

LXI B,vv 3 1 Carga B & C con dato inmediato vv

LXI D,vv 3 11 Carga D & E con dato inmediato vv

LXI H,vv 3 21 Carga H & L con dato inmediato vv

LXI SP,vv 3 31 Carga SP con dato inmediato vv

MOV A,B 1 78 Transfiere B a A

MOV A,C 1 79 Transfiere C a A

MOV A,D 1 7A Transfiere D a A

MOV A,E 1 7B Transfiere E a A

MOV A,H 1 7C Transfiere H a A

M MOV A,L 1 7D Transfiere L a A

MOV A, M 1 7 Transfiere LOC memoria ( H & L ) a A

MOV B,A 1 47 Transfiere A a B

MOV B,C 1 41 Transfiere C a B

MOV B,D 1 42 Transfiere D a B

MOV B,E 1 43 TransfiereE a B

MOV B,H 1 44 Transfiere H a B

JGL
Universidad de Santiago 11
Facultad de Ingeniera

Cdigo de op
Nemotcnico Bytes (hex) Descripcin

MOV B,L 1 45 Transfiere L a B

MOV B,M 1 46 Transfiere LOC memoria ( H & L ) a B

MOV C,A 1 4F Transfiere A a C

MOV C,B 1 48 Transfiere B a C

MOV C,D 1 4A Transfiere D a C

MOV C,E 1 4B Transfiere E a C

MOV C,H 1 4C Transfiere H a C

MOV C,L 1 4D Transfiere L a C

MOV C,M 1 4 Transfiere LOC memoria ( H & L ) a C

MOV D,A 1 57 Transfiere A a D

MOV D,B 1 50 Transfiere B a D

MOV D,C 1 51 Transfiere C a D

MOV D,E 1 53 Transfiere E a D

M MOV D,H 1 54 Transfiere H a D

MOV D,L 1 55 Transfiere L a D

MOV D,M 1 56 Transfiere LOC memoria ( H & L ) a D

MOV E,A 1 5F Transfiere A a E

MOV E,B 1 58 Transfiere B a E

MOV E,C 1 59 Transfiere C a E

MOV E,D 1 5A Transfiere D a E

MOV E,H 1 5C Transfiere H a E

MOV E,L 1 5D Transfiere L a E

MOV E,M 1 5 Transfiere LOC memoria ( H & L ) a E

MOV H,A 1 67 Transfiere A a H

MOV H,B 1 60 Transfiere B a H

MOV H,C 1 61 Transfiere C a H

MOV H,D 1 62 Transfiere D a H

MOV H,E 1 63 Transfiere E a H

MOV H,L 1 65 Transfiere L a H

JGL
Universidad de Santiago 12
Facultad de Ingeniera

Cdigo de op
Nemotcnico Bytes (hex) Descripcin

MOV H,M 1 66 Transfiere LOC memoria (H & L ) a H

MOV L,A 1 6F Transfiere A a L

MOV L,B 1 68 Transfiere B a L

MOV L,C 1 69 Transfiere C a L

MOV L,D 1 6A Transfiere D a L

MOV L,E 1 6B Transfiere E a L

MOV L,H 1 6C Transfiere H a L

MOV L,M 1 6E Transfiere LOC memoria ( H & L ) a L

MOV M,A 1 77 Transfiere A a LOC memoria ( H & L )

MOV M,B 1 70 Transfiere B a LOC memoria ( H & L )

MOV M,C 1 71 Transfiere C a LOC memoria ( H & L )

M MOV M,D 1 72 Transfiere D a LOC memoria ( H & L )

MOV M,E 1 73 Transfiere E a LOC memoria ( H & L )

MOV M,H 1 74 Transfiere H a LOC memoria ( H & L )

MOV M,L 1 75 Transfiere L a LOC memoria ( H & L )

MVI A,v 2 3E Transfiere dato inmediato v a A

MVI B,v 2 06 Transfiere dato inmediato v a B

MVI C,v 2 0E Transfiere dato inmediato v a C

MVI D,v 2 16 Transfiere dato inmediato v a D

MVI E,v 2 1E Transfiere dato inmediato v a E

MVI H,v 2 26 Transfiere dato inmediato v a H

MVI L,v 2 2E Transfiere dato inmediato v a L

MVI M,v 2 36 Transfiere dato inmediato v a LOC memoria (H & L )

N NOP 1 00 No operacin

ORA A 1 B7 Examina A y borra arrastre

ORA B 1 B0 OR B con A

O ORA C 1 B1 OR C con A

ORA D 1 B2 OR D con A

ORA E 1 B3 OR E con A

JGL
Universidad de Santiago 13
Facultad de Ingeniera

Cdigo de op
Nemotcnico Bytes (hex) Descripcin

ORA H 1 B4 OR H con A

ORA L 1 B5 OR L con a

O ORA M 1 B6 OR LOC memoria ( H & L ) con A

ORI v 1 F6 OR dato inmediato v con A

OUT v 2 D3 Saca A a dispositivo v

PCHL 1 E9 Salta a LOC memoria contenida en ( H & L )

POP B 1 C1 Carga B & C desde la pila

POP D 1 D1 Carga D & E desde la pila

POP H 1 E1 Carga H & L desde la pila

P POP PSW 1 F1 Carga A y sus banderas desde la pila

PUSH B 1 C5 Introduce B & C en la pila

PUSH D 1 D5 Introduce D 6 E en la pila

PUSH H 1 E5 Introduce H & L en la Pila

PUSH PSW 1 F5 Introdcuce A y sus banderas en la pila

RAL 1 17 Desplazamiento circular CY + A a la izquierda

RAR 1 1F Desplazamiento circular CY + A a la derecha

RLC 1 07 Desplazamiento circular A a la izquierda y arrastre

RRC 1 0F Desplazamiento circular A a la derecha y arrastre

RIM 1 20 Lee mascara de interrupcin ( 8085 solamente )

RET 1 C9 Vuelve de subrutina

R RZ 1 C8 Si cero, vuelve de subrutina

RNZ 1 C0 Si no cero, vuelve de subrutina

RP 1 F0 Si ms, vuelve de subrutina

RM 1 F8 Si menos, vuelve de subrutina

RC 1 D8 Si arrastre, vuelve de subrutina

RNC 1 D0 Si no arrastre, vuelve de subrutina

RPE 1 E8 Si paridad par, vuelve de subrutina

RPO 1 E0 Si paridad impar, vuelve de subrutina

JGL
Universidad de Santiago 14
Facultad de Ingeniera

Cdigo de op
Nemotcnico Bytes (Hex) Descripcin

RST 0 1 C7 Va a subrutina en direcci{on 0000H

RST 1 1 CF Va a subrutina en direcci{on 0008H

RST 2 1 D7 Va a subrutina en direcci{on 0010H

R RST 3 1 DF Va a subrutina en direcci{on 0018H

RST 4 1 E7 Va a subrutina en direccin 0020H

RST 5 1 EF Va a subrutina en direccin 0028H

RST 6 1 F7 Va a subrutina en direccin 0030H

RST 7 1 FF Va a subrutina en direccin 0038H

SIM 1 30 Pone en 1 mscara de interrupcin ( 8085 solamente)

SPHL 1 F9 Carga SP desde H & L

SHLD aa 3 22 Almacena H & L en LOC memoria aa

STA aa 3 32 Almacena A en LOC memoria aa

STAX B 1 02 Almacena A en LOC memoria ( B & C )

STAX D 1 12 Almacena A en LOC memoria ( D & E )

STC 1 37 Coloca en 1 bandera de arrastre

SUB A 1 97 Borra A

SUB B 1 90 Resta B de A

SUB C 1 91 Resta C de A

S SUB D 1 92 Resta D de A

SUB E 1 93 Resta E de A

SUB H 1 94 Resta H de A

SUB L 1 95 Resta L de A

SUB M 1 96 Resta contenido de LOC memoria ( H & L ) de A

SUI v 2 D6 Resta dato inmediato v de A

SBB A 1 9F Pone A con arrastre menos

SBB B 1 98 Resta B de A con prestamo

SBB C 1 99 Resta C de A con prestamo

SBB D 1 9A Resta D de A con prestamo

SBB E 1 9B Resta E de A con prestamo

JGL
Universidad de Santiago 15
Facultad de Ingeniera

Cdigo de op
Nemotcnico Bytes (Hex) Descripcin

SBB H 1 9C Resta H de A con prestamo

S SBB L 1 9D Resta L de A con prestamo

SBB M 1 9E Resta LOC memoria ( H& L ) de A con prestamo

SBI v 2 DE Resta dato immediato v de A con prestamo

XCHG 1 EB Intercambia D & E con H & L

XTHL 1 E3 Intercambia tope de la pila con H & L

XRA A 1 AF Borra A

XRA B 1 A8 OR exclusivo de B con A

X XRA C 1 A9 OR exclusivo de C con A

XRA D 1 AA OR exclusivo de D con A

XRA E 1 AB OR exclusivo de E con A

XRA H 1 AC OR exclusivo de H con A

XRA L 1 AD OR exclusivo de L con A

XRA M 1 AE OR exclusivo de LOC memoria ( H & L ) con A

XRI v 2 EE OR exclusivo de dato inmediato v con A

JGL
Universidad de Santiago 16
Facultad de Ingeniera

BREVE DESCRIPCION DE LAS INSTRUCCIONES DEL 8080


Las instrucciones estn constituidas de 1, 2 o 3 bytes. El primer byte contiene el cdigo de operacin de
la instruccin y los bytes siguientes contienen un datos.

1.- Instrucciones de transferencias de datos.

MOV x,y.
Son instrucciones de un byte, que copian el contenido de un registro y, en otro registro x. Los
registros x e y pueden ser cualesquiera de los registros de propsito general del procesador, o, un
registro de la memoria. En este ltimo caso, la direccin del registro de memoria est contenida
en el par de registros H y L. Por ejemplo, MOV M,B , copia el contenido del registro B en la
posicin de memoria indicada por HL.

MVI X,v
Son instrucciones de movimiento inmediato de dos bytes. El primer byte indica el cdigo de la
instruccin y, el segundo byte, contiene el dato v que ser copiado en el registro X. X es
cualquiera de los registros de propsito general, o, una posicin de memoria indicada por HL.

LXI P,vv
Son instrucciones de movimiento inmediato de tres bytes. El primer byte indica el cdigo de la
instruccin y los dos bytes restantes contienen el dato vv que ser cargado en el par de registros
P. P puede ser el par de registros BC, DE, HL el puntero de pila SP.

Instrucciones de transferencias del Acumulador


STAX B
STAX D
Son instrucciones de un byte, que transfieren el contenido del Acumulador a la posicin de
memoria indicada por el par de registros BC o DE, respectivamente.

LDAX B
LDAX D
Son instrucciones de un byte, que cargan el Acumulador con en contenido de la posicin de
memoria indicada por el par de registros BC o DE, respectivamente.

STA aa
Es una instruccin de tres bytes que copia el contenido del Acumulador en la posicin de
memoria indicada en los bytes 2 y 3 de la propia instruccin (aa).

LDA aa
Es una instruccin de tres bytes que carga el Acumulador con el contenido de la direccin
indicada en los bytes 2 y 3 de la propia instruccin (aa).

Instrucciones de transferencia para el par HL


SHLD aa
Instruccin de tres bytes que copia el contenido del registro L en la direccin aa y el contenido
de H en aa + 1.
JGL
Universidad de Santiago 17
Facultad de Ingeniera

LHLD aa
Instruccin de tres bytes que carga el registro L con el contenido de la direccin aa y H con el
contenido de la direccin aa + 1.

SPHL
Instruccin de un byte que copia el contenido del par HL en el registro puntero de pila SP.

Instrucciones de intercambio
XCHG
Instrucin de un byte que intercambia el contenido del par HL con el contenido del par DE

XTHL
Intercambia el tope de la Pila con el contenido de HL. El contenido del registro L es
intercambiado con el contenido de la posicin de memoria cuya direccin est especificada por
SP. El contenido del registro H es intercambiado con el contenido de la posicin de memoria
SP+1.

Instrucciones de trasferencias con la Pila


PUSH x
Instrucciones de un byte que cargan la pila con el par de registros x. Por ej. PUSH B, introduce
el contenido del registro B en la posicin de memoria SP-1, y el contenido del registro C en SP-
2 (SP = Contenido del Puntero de Pila).

POP x
Instrucciones de un byte que permiten extraer dos bytes desde la pila y cargarlos en el par de
registros nombrado. Por ej. POP B extrae el contenido de la posicin de memoria SP y lo carga
en el registro C y, el contenido de SP+1 lo carga en B.

2.- Instrucciones aritmticas y lgicas

Existen ocho operaciones aritmticas y lgicas :


Suma
Suma con acarreo
Resta
Resta con reserva
AND
OR-Exclusivo
OR
Compare

Estas operaciones se realizan sobre el Acumulador y el resultado queda en el


Acumulador ( excepto el COMPARE ). Por ejemplo ADD B suma al Acumulador el contenido
del registro B y el resultado queda en el Acumulador. En la suma con acarreo (o resta con
reserva), se suma (o resta) el contenido de la bandera de condicin CY al bit menos significativo
del Acumulador. Las operaciones aritmticas se desarrollan en notacin de complemento a 2.

Las operaciones lgicas AND, OR y OR-EXCLUSIVO se realizan bit a bit entre el


registro correspondiente y el Acumulador.
JGL
Universidad de Santiago 18
Facultad de Ingeniera

La operacin COMPARE compara si el contenido de un registro es igual, mayor o menor


que el contenido del acumulador. Esto lo realiza el procesador de la misma manera que una
resta, pero sin guardar el resultado en el acumulador y slo son afectadas las banderas de
condicin Z y S, concordantemente con el resultado de la eventual resta.
Operaciones con registros.
Son instrucciones aritmticas o lgicas de un slo byte, en que est denominado el
registro cuyo contenido va a ser operado con el acumulador. Por ej. ADD B, SUB M, CMP L,
etc.

Tal como en el caso de las instrucciones MOV, el registro M es aquel registro de la


memoria cuya direccin est indicada por el par de registros H y L.

Operaciones Inmediatas
En este tipo de instrucciones de dos bytes, la propia instruccin contiene el dato a operar
con el acumulador. Por ej. ADI 20h, suma 20h al acumulador.

Complementar el acumulador
La instruccin de un byte CMA, complementa el acumulador

Operaciones de suma al par HL


Las instrucciones de un byte DAD B, DAD C, DAD H y DAD SP, suman a HL el
contenido del par de registros nombrado en la instruccin.

3.- Incrementar/Decrementar
Son instrucciones de un slo byte que suman o restan un 1 en la posicin menos significativa de
un registro, posicin de memoria indicada por HL, par de registros de propsito general, o, al
puntero de pila ( por ejemplo: DCR C,INX B ).

4.- Rotaciones
Estas operaciones, de un slo byte, se realizan slo en el acumulador.

RLC
Desplaza el contenido del acumulador una posicin a la izquierda. El bit ms significativo (que
se perdera en el desplazamiento) es introducido en el bit menos significativo del acumulador y
adems en la bandera de acarreo CY

RRC
Desplaza el contenido del acumulador una posicin a la derecha. El bit menos significativo (que
se perdera en el desplazamiento) es introducido en la posicin ms significativa del acumulador
y adems en la bandera de acarreo CY.

RAL
Desplaza el contenido del acumulador una posicin a la izquierda a travs de la bandera de
acarreo CY. Simultneamente, introduce el bit ms significativo del acumulador en la bandera
JGL
Universidad de Santiago 19
Facultad de Ingeniera

de acarreo y el contenido de la bandera de acarreo es introducido en la posicin menos


significativa del acumulador.

RAR
Desplaza el contenido del acumulador una posicin a la derecha a travs de la bandera de
acarreo CY. Simultneamente, introduce el bit menos significativo del acumulador en la bandera
de acarreo y el contenido de la bandera de acarreo es introducido en la posicin ms significativa
del acumulador.
5.- Instrucciones de Salto
Estas instrucciones alteran el contenido del Contador de Programa, permitiendo con ello
romper la secuencia natural de ejecucin de instrucciones por el procesador. Existen tres tipos de
instrucciones de salto, los JUMP, los CALL y los RETURN

Las instrucciones JUMP son de tres bytes. Los bytes 2 y 3 deben contener una direccin
de memoria. La ejecucin de este tipo de instrucciones consiste en reemplazar el contenido del
Contador de Programa por el contenido de los bytes 2 y 3 de la instruccin. Entonces, como
consecuencia de esta operacin, la siguiente instruccin que se ejecutar ser la que se encuentra
en la posicin de memoria indicada por los Bytes 2 y 3 de la instruccin y no aquella que se
encuentra a continuacin de la instruccin Jump (produciendo un salto del programa. Esto es
similar a las instrucciones GOTO de los lenguajes de alto nivel).

Las instrucciones CALL son tambin de tres bytes y realizan la misma operacin que los
JUMP, excepto que, previo a reemplazar el contenido del Contador de Programa con los bytes 2
y 3, guarda el contenido del Contador de Programa en la Pila (en las posiciones de memoria
indicadas por el Puntero de Pila SP menos 1 y menos 2.

Las instrucciones RETURN constan de un slo byte y lo que realizan es tomar dos bytes
desde la pila (desde SP y SP + 1) e ingresarlos al Contador de Programa.

La pareja CALL, RETURN permite el uso de Subrutinas. Por medio del CALL se llama
a ejecutar una subrutina que comienza en la posicin de memoria indicada por los bytes 2 y 3 de
la instruccin y con el RETURN se vuelve al programa principal ( Return debe ser la ltima
instruccin de la subrutina).

Las instrucciones JUMP, CALL y RETURN son Incondicionales y Condicionales. Las


Incondicionales funcionan de la manera descrita anteriormente. En las Condicionales su
ejecucin depender del valor de alguna de las banderas de condicin del Acumulador. Si la
bandera elegida est en un valor determinado ( 0 1 ), se efecta el salto, en caso contrario el
contador de programa no es alterado y por consiguiente no se efecta el salto, continuando la
ejecucin del programa con la instruccin que sigue al JUMP, CALL o RETURN en uso. Por ej.
JNZ 2020h, salta a la direccin 2020h si la bandera de cero Z se encuentra en 0, en caso
contrario ( Z = 1 ) se continua con la instruccin siguiente del programa principal.

Adems de las instrucciones CALL descritas, existen las instrucciones CALL de un slo
byte RSTi (i=0...7), que son llamadas a Subrutinas en posiciones fijas de la memoria. Por ej.
RST0 salta a la posicin de memoria 0000h, RST1 salta a 0010h, RST2 a 0020h, etc.

Por ltimo, existe la instruccin JUMP de un byte PCHL, que carga el Contador de
JGL
Universidad de Santiago 20
Facultad de Ingeniera

Programa con el contenido del par de registros HL. Esto permite efectuar saltos a posiciones de
memoria indicadas por el par HL.

6.- Instrucciones I/O


IN v, OUT v
Son instrucciones de dos bytes que permiten trasferir un byte desde un registro externo v
(distinto de la memoria) al acumulador (IN v) o desde el acumulador a un registro externo v. El
segundo byte de la instruccin debe contener el cdigo del registro externo involucrado. Por ej.
OUT 5Bh, transfiere el contenido del acumulador al registro externo cuyo cdigo es 5Bh
7.- Instrucciones de control
EI y DI
Permiten habilitar (EI) o deshabilitar (DI) el sistema de interrupciones. EI coloca en 1 la bandera
de permiso de interrupcin INTE y DI la coloca en 0.

HLT
Detiene el microprocesador. Los registros y banderas no son afectados

NOP
No realiza ninguna operacin, slo gasta tiempo.

CMP
Complementa bandera de acarreo CY

STC
Colca en 1 la bandera de acarreo CY
RIM
Lee mscara de interrupcin ( 8085 solamente )

SIM
Pone en 1 mscara de interrucin ( 8085 solamente )

JGL
Universidad de Santiago 21
Facultad de Ingeniera

Ejemplo de programacin: Sumar tres nmeros que se encuentran en las posiciones de memoria
2010H, 2011H, 2012H y acumular el resultado en la posicin 2013H

Direccin Contenid
(hex) o Etiqueta Nemotcnico
(hex) Comentarios
2020 21 LXI H,2010H Carga el registro par HL con 2010H
2021 10
2022 20

JGL
Universidad de Santiago 22
Facultad de Ingeniera

2023 7E MOV A,M Carga el acumulador con el primer


nmero, contenido en la posicin de
memoria 2010H
2024 23 INX H Incrementa el registro par HL a 2011H
2025 86 ADD M Suma el segundo nmero, contenido
en la posicin 2011H, al acumulador
2026 23 INX H Incrementa el registro par HL a 2012H
2027 86 ADD M Suma el tercer nmero, contenido en la
posicin 2012H, al acumulador
2028 23 INX H Incrementa el registro par HL a 2013H
2029 77 MOV M,A Almacena la suma del acumulador el
la posicin de memoria 2013H
202A 76 HLT Detiene la CPU

(c) Programas en lenguaje ensamblador y de mquina

JGL
Universidad de Santiago 23
Facultad de Ingeniera

Ejemplo de programacin: Comparar dos nmeros y almacenar el mayor

Diagrama de flujo detallado

Etiqueta Nemotcnico Comentarios


MVI A,0FH ; Carga acumulador con el primer nmero (1510)
MVI L,06H ; Carga registro L con el segundo nmero (610)
CMP L ; Compara (A) y (L)
Bandera CY = 1 si A< L
JC ACUM_L ; Salta a la posicin de ACUM_L si CY = 1 ( si A < L )
STA 2040H ; Almacena (A) en posicin de memoria 2040H
HLT ; Detiene la CPU
ACUM_L MOV A,L ; Transfiere el contenido del registro L al acumulador
STA 2040H ; Almacena (A) en la posicin de memoria 2040H
HLT ; Detiene la CPU

JGL
Universidad de Santiago 24
Facultad de Ingeniera

Ejemplo de programacin: Cuenta del 0 al 9 y los almacena en posiciones consecutivas de memoria.

Diagrama de flujo detallado de "cuenta


y almacena"

Etiqueta Nemotcnico Comentarios


LXI H,2040H ; Carga el registro HL con 2040H
XRA A ; Pone el acumulador a 00H
LOOP MOV M,A ; Almacena el contenido de A en la posicin de memoria
apuntada por HL
INX H ; Incrementa HL
INR A ; Incrementa el acumulador
CPI 09H ; Compara es (A) igual a 09H ?
Si (A) = 09H, entonces la bandera Z se coloca en 1
JNZ LOOP ; Salta a la posicin LOOP si Z = 0 ( si (A) < 09H, en caso
contrario contina con la siguiente instruccin
HLT ; Detiene la CPU

Programa en lenguaje ensamblador de "cuenta y almacena"

JGL
Universidad de Santiago 25
Facultad de Ingeniera

BITS DE ESTATUS Y CICLOS DE MAQUINA


B I T S D E S T A T U S
-----
CICLOS DE MAQUINA MEM INP M1 OUT HLTA STACK WO INTA
R D7 D5 D4 D3 D2 D1 D0
D7

FETCH 1 0 1 0 0 0 1 0

MEMORY READ 1 0 0 0 0 0 1 0

MEMORY WRITE 0 0 0 0 0 0 0 0

STACK READ 1 0 0 0 0 1 1 0

STACK WRITE 0 0 0 0 0 1 0 0

INPUT 0 1 0 0 0 0 1 0

OUTPUT 0 0 0 1 0 0 0 0

INTERRUPT 0 0 1 0 0 0 1 1

HALT 1 0 0 0 1 0 1 0

INTERRUPT WHILE 0 0 1 0 1 0 1 1
HALT

CAPTURA DE LOS BITS DE STATUS


Los bits de status aparecen por el bus de datos, cuando la seal de sincronismo (SYNC) se
encuentra en 1. Es decir, en el primer ciclo de reloj de cada ciclo de mquina (respecto de la fase 2 del
reloj).

JGL
Universidad de Santiago 26
Facultad de Ingeniera

CICLOS DE MAQUINA

FETCH
Es el primer ciclo de mquina de toda instruccin. Consiste de 4 o 5 pulsos de reloj, con la
excepcin de los estados WAIT, HLDA y HLTA, que tienen cualquier nmero de ciclos de
reloj mayor que 3.
Durante este ciclo, el cdigo de operacin de la instruccin es trado (fetched) desde la
posicin de memoria indicada por el contador de programa y puesto en el registro de
instrucciones. Una vez realizado esto, incrementa el contador de programa en 1.
Durante este ciclo de mquina se producen adems transferencias simples entre los registros
internos de la CPU y tambin se realizan operaciones aritmticas y lgicas. Para algunas
instrucciones, este es el nico ciclo de mquina requerido.

MEMORY READ
Este ciclo de mquina consiste de 3 ciclos de reloj. Durante este ciclo, es transferido un byte
desde la posicin de memoria indicada por el contador de programa y puesto en alguno de los
registros internos del procesador. Al final incrementa el contador de programa en 1.

MEMORY WRITE
Este ciclo de mquina consiste de 3 o 4 ciclos de reloj. Durante este ciclo, el contenido de un
registro es transferido a la posicin de memoria indicada por el para de registros HL. HL
puede ser tambin incrementado o decrementado.

OUTPUT
Este ciclo de mquina consiste de 3 ciclos de reloj, durante los cuales es puesto en el bus de
direcciones el cdigo del dispositivo de salida y, el contenido del acumulador, es puesto en el
bus de datos.

INPUT
Este ciclo de mquina consiste de 3 ciclos de reloj, durante los cuales el cdigo del dispositivo
de entrada es puesto en el bus de direcciones y, el buffer/latch del bus de datos es puesto en su
modo de entrada para capturar el dato del bus de datos externo y llevarlo al acumulador.

STACK WRITE
Durante este ciclo de mquina consistente de 3 ciclos de reloj, un byte es puesto en el bus de
datos externo y transferido a la posicin de memoria indicada por el registro puntero del stack
(SP) menos 1 o menos 2, es decir, M(SP - 1) o M(SP - 2). Debe tenerse presente que primero
el registro SP es decrementado y posteriormente se escribe en esa nueva posicin indicada por
SP.

STACK READ
Durante este ciclo de mquina de 3 ciclos de reloj, un byte es transferido desde la posicin de
memoria indicada por SP o SP + 1 a alguno de los registros internos del procesador tales como
H, L, B, C ,D, E, o, el contador de programa. Debe tenerse presente que primero se efecta la
transferencia y posteriormente el registro SP es incrementado.

JGL
Universidad de Santiago 27
Facultad de Ingeniera

HALT
Este ciclo de mquina contiene cualquier nmero entero de ciclos de reloj mayor que 3. El
microprocesador permanece en el estado WAIT mientras la seal de entrada READY se
encuentre en 0 lgico. La salida WAIT del 8080 toma el valor lgico 1 para indicar que la
CPU se encuentra en el estado WAIT.

INTERRUPT
Este ciclo de mquina de 5 ciclos de reloj, se asemeja al ciclo FETCH, excepto que el contador
de programa no es incrementado, para permitir que el estatus existente, previo a la
interrupcin, sea salvado en el stack. Esto permite un retorno ordenado al programa
interrumpido despus que el requerimiento de interrupcin ha sido procesado.

BITS DE STATUS

INTA
Un 1 lgico en esta seal indica que una interrupcin ha sido concedida. Esta seal debera ser
usada para colocar una instruccin RST en el bus de datos externo para ser introducida al 8080
cuando DBIN tome el valor 1.
___
W0
Si la operacin del ciclo de mquina en curso es una escritura en memoria o una operacin de
salida a un dispositivo externo, este bit tomar el valor 0. Si la operacin es una lectura desde
la memoria o entrada desde un dispositivo externo, este bit tomar el valor 1.

STACK
Un 1 lgico indica que el bus de direcciones contiene la direccin indicada por el registro
puntero del stack.

HLTA
Seal de reconocimiento de una instruccin HALT. Cuando el procesador est en el ciclo de
mquina HALT, este bit toma el valor 1 lgico.

OUT
Cuando este bit toma el valor 1 lgico, indica que el bus de direcciones contiene el Cdigo del
Dispositivo de salida (8 bits. El cdigo aparece repetido en las 8 lneas menos significativa y
en las 8 lneas ms significativas del bus de direcciones ) y que el bus de datos externo
contendr el contenido del acumulador cuando la seal de salida WR tome el valor 0 lgico.

M1
Este bit toma el valor 1 lgico para indicar que la CPU se encuentra en un ciclo Fetch.

INP
Cuando este bit toma el valor 1 lgico, indica que el bus de direcciones contiene el Cdigo del
Dispositivo de entrada (8 bits. El cdigo aparece repetido en las 8 lneas menos significativa y
en las 8 lneas ms significativas del bus de direcciones ) y que el dato deber ser puesto en el
JGL
Universidad de Santiago 28
Facultad de Ingeniera

bus de datos externo cuando la seal DBIN tome el valor 1 lgico.

MEMR
Un 1 en este bit indica que el bus de datos externo contendr datos provenientes de la memoria
durante el ciclo de mquina MEMORY READ.

LAS INTERRUPCIONES

Por interrupcin se entiende al acto en que un dispositivo externo solicita al procesador ser
atendido y para ello, la CPU debe suspender transitoriamente la tarea que este realizando, para despus
que haya atendido al dispositivo, reinicie la ejecucin de dicha tarea.

Para el caso del 8080, el dispositivo externo solicita la interrupcin colocando un 1 en la


entrada de control INT. El procesador, al trmino de cada instruccin que este ejecutando, verifica el
estado de la bandera de permiso de interrupcin (INTE). Si esta se encuentra en 0, indicando que el
sistema de interrupciones est deshabilitado, no concede la interrupcin y continua con la siguiente
instruccin del programa que est ejecutando. En cambio, si la bandera est en 1, indicando que el
sistema de permiso de interrupcin est habilitado, verifica si la seal INT se encuentra en 1 ( un
dispositivo externo est solicitando servicio ), concede la interrupcin y vuelve a cero la bandera de
permiso de interrupcin.

Cuando el procesador concede la interrupcin guarda el contenido del Contador de Programa


en el Stack y el dispositivo externo debe colocar en el bus de datos una de las 8 instrucciones RST. El
8080 coloca esta instruccin en el Registro de Instrucciones y procede a ejecutarla.

Debemos recordar que las instrucciones RST son del tipo CALL a posiciones fijas de la
memoria, por consiguiente en dicha direccin debe estar el comienzo de la subrutina de servicio que
atiende al dispositivo que solicit la interrupcin. Como toda subrutina, la ltima instruccin debe ser
del tipo RETURN, para retomar la ejecucin del programa que fue interrumpido.

Cada vez que se concede una interrupcin, la bandera INTE vuelve a cero, quedando
deshabilitado el sistema para subsecuentes requerimientos de interrupciones. La bandera INTE se puede
colocar en 1 o en 0 con las instrucciones DI y EI respectivamente.

JGL
Universidad de Santiago 29
Facultad de Ingeniera

DISPOSITIVOS DE ENTRADA / SALIDA

JGL

You might also like