Download - Capitulo_8.__Microprocesadores
-
Universidad de Santiago
Facultad de Ingeniera
JGL
1
CAPITULO 8
MICROPROCESADORES
-
Universidad de Santiago
Facultad de Ingeniera
JGL
2
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.
-
Universidad de Santiago
Facultad de Ingeniera
JGL
3
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.
-
Universidad de Santiago
Facultad de Ingeniera
JGL
4
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
-
Universidad de Santiago
Facultad de Ingeniera
JGL
5
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.
-
Universidad de Santiago
Facultad de Ingeniera
JGL
6
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
-
Universidad de Santiago
Facultad de Ingeniera
JGL
7
REPERTORIO DE INSTRUCCIONES PARA EL MICROPROCESADOR
INTEL 8080/8085
Nemotcnico
Bytes
Cdigo de op
(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
-
Universidad de Santiago
Facultad de Ingeniera
JGL
8
Nemotcnico
Bytes
Cdigo de op
(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
-
Universidad de Santiago
Facultad de Ingeniera
JGL
9
Nemotcnico
Bytes
Cdigo de op
(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
-
Universidad de Santiago
Facultad de Ingeniera
JGL
10
Nemotcnico
Bytes
Cdigo de op
(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
-
Universidad de Santiago
Facultad de Ingeniera
JGL
11
Nemotcnico
Bytes
Cdigo de op
(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
-
Universidad de Santiago
Facultad de Ingeniera
JGL
12
Nemotcnico
Bytes
Cdigo de op
(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
-
Universidad de Santiago
Facultad de Ingeniera
JGL
13
Nemotcnico
Bytes
Cdigo de op
(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
-
Universidad de Santiago
Facultad de Ingeniera
JGL
14
Nemotcnico
Bytes
Cdigo de op
(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
-
Universidad de Santiago
Facultad de Ingeniera
JGL
15
Nemotcnico
Bytes
Cdigo de op
(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
-
Universidad de Santiago
Facultad de Ingeniera
JGL
16
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.
-
Universidad de Santiago
Facultad de Ingeniera
JGL
17
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.
-
Universidad de Santiago
Facultad de Ingeniera
JGL
18
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
-
Universidad de Santiago
Facultad de Ingeniera
JGL
19
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
-
Universidad de Santiago
Facultad de Ingeniera
JGL
20
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 )
-
Universidad de Santiago
Facultad de Ingeniera
JGL
21
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
(hex)
Contenid
o
(hex)
Etiqueta
Nemotcnico
Comentarios
2020
21
LXI H,2010H
Carga el registro par HL con 2010H
2021
10
2022
20
-
Universidad de Santiago
Facultad de Ingeniera
JGL
22
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
-
Universidad de Santiago
Facultad de Ingeniera
JGL
23
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
-
Universidad de Santiago
Facultad de Ingeniera
JGL
24
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"
-
Universidad de Santiago
Facultad de Ingeniera
JGL
25
BITS DE ESTATUS Y CICLOS DE MAQUINA
B I T S D E S T A T U S
CICLOS DE MAQUINA
MEM
R
D7
INP
D7
M1
D5
OUT
D4
HLTA
D3
STACK
D2
-----
WO
D1
INTA
D0
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
HALT
0
0
1
0
1
0
1
1
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).
-
Universidad de Santiago
Facultad de Ingeniera
JGL
26
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.
-
Universidad de Santiago
Facultad de Ingeniera
JGL
27
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
-
Universidad de Santiago
Facultad de Ingeniera
JGL
28
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.
-
Universidad de Santiago
Facultad de Ingeniera
JGL
29
DISPOSITIVOS DE ENTRADA / SALIDA