Documente Academic
Documente Profesional
Documente Cultură
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.
Debe tenerse presente que el contador de programa se incrementa en 1 cada vez que se
ingresa a la CPU un byte de instruccin.
JGL
Universidad de Santiago 4
Facultad de Ingeniera
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.
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
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
BUS DE DIRECCIONES
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
CONTROLES
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.
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 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
Cdigo de op
Nemotcnico Bytes (hex) Descripcin
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
JGL
Universidad de Santiago 8
Facultad de Ingeniera
Cdigo de op
Nemotcnico Bytes (hex) Descripcin
CMA 1 2F Complementa A
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
DCX SP 1 3B Decrementa SP
DI 1 F3 Inhabilita interrupciones
E EI 1 FB Habilita interrupciones
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
INX SP 1 33 Incrementa SP
JGL
Universidad de Santiago 10
Facultad de Ingeniera
Cdigo de op
Nemotcnico Bytes (hex) Descripcin
L LHLD aa 3 2A Carga H&L con contenido direccin aa (L con LOC aa, H con
LOC aa+1)
JGL
Universidad de Santiago 11
Facultad de Ingeniera
Cdigo de op
Nemotcnico Bytes (hex) Descripcin
JGL
Universidad de Santiago 12
Facultad de Ingeniera
Cdigo de op
Nemotcnico Bytes (hex) Descripcin
N NOP 1 00 No operacin
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
JGL
Universidad de Santiago 14
Facultad de Ingeniera
Cdigo de op
Nemotcnico Bytes (Hex) Descripcin
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
JGL
Universidad de Santiago 15
Facultad de Ingeniera
Cdigo de op
Nemotcnico Bytes (Hex) Descripcin
XRA A 1 AF Borra A
JGL
Universidad de Santiago 16
Facultad de Ingeniera
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.
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).
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.
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.
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
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
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).
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.
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
JGL
Universidad de Santiago 23
Facultad de Ingeniera
JGL
Universidad de Santiago 24
Facultad de Ingeniera
JGL
Universidad de Santiago 25
Facultad de Ingeniera
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
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
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.
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
JGL