300 likes | 600 Views
El microprocesador Z80. características. Esquema general Z80. A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 D0 D1 D2 D3 D4 D5 D6 D7.
E N D
El microprocesador Z80 características
Esquema general Z80 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 D0 D1 D2 D3 D4 D5 D6 D7 30 31 32 33 34 35 36 37 38 39 40 1 2 3 4 5 14 15 12 8 7 9 10 13 Bus de datos Bus de direcciones 27 19 20 21 22 28 18 24 18 17 26 25 23 6 12 29 M1 MEQ IORQ RD WR RFSH HALT WAIT INT NMI RESET BUSRQ BUSAK RELOJ +5V TIERRA
GND AD14 AD13 AD12 AD11 AD10 AD9 AD8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 Vcc AD15 A16/S3 A17/S4 A18/S5 A19/S6 BHE/S7 MN/MX RD TEST READY RESET Esquema del 8088 MN/ MX=1 MN/MX= 0 31 HOLD RQ/GT0 30HLDA RQ/GTI 29 WR LOCK 28 M/IO S2 27DT/R S1 26DEN S0 25ALE QS0 24 INTA QS1
Características • Bus de datos de 8 bits • Bus de direcciones de 16 bits • En total 18 registros de 8 bits y 4 de 16 bits • Cuenta con 12 registros de 8 bits que se pueden usar en pares para formar 6 de 16 bits • Reloj de 4 MHz • Compatible en software con el 8080A
Origenes • El Z80 es una versión apreciablemente mejorada del INTEL 8080. • Es un microprocesador más rápido y sencillo en el desarrollo de sistemas. • Solo usa una fuente de alimentación de +5 Volts • Contiene íntegramente todo el conjunto de instrucciones del 8080. • El Z80 una expansión adicional de 80 instrucciones de ahí se deriva su nombre, su repertorio suma un total de 156 instrucciones
E/S en el Z80 • El sistema cuenta con tres localidades de E/S de uso general: • localidad C016 dispositvo E/S número 0 • localidad C116 dispositvo E/S número 1 • localidad C316 control dispositivos C016 yC11
Direccionamiento • La memoria esta organizada en palabras de 8 bits (1 byte). • Cada palabra puede ser referenciada por una dirección binaria de 16 bits • La capacidad de direccionamiento directo total es de 65,536 bytes (64 K) de memoria. • La memoria puede ser cualquier combinación de ROM, EPROM o PROM
Funciones Z80 1. Recibir datos desde la memoria. 2. Enviar datos hacia la memoria. 3. Incrementar o decrementar en uno su contenido. 4. Formar una dirección con el contenido de un par de registros. 5. Transferir datos entre los registros. 6. Obtener un operando durante las funciones de la ALU
Instrucciones de uno y dos bytes • Instrucciones de un byte • Instrucciones de dos bytes byte 1 i7 i6 i5 i4 i3 i2 i1 i0 código operación byte 1 i7 i6 i5 i4 i3 i2 i1 i0 código operación d7 d6 d5 d4 d3 d2 d1 d0 datos o direcciones byte 2
Instrucciones de tres y cuatro bytes • Instrucciones de tres bytes • Instrucciones de cuatro bytes byte 1 i7 i6 i5 i4 i3 i2 i1 i0 código operación byte 2 d7 d6 d5 d4 d3 d2 d1 d0 datos o direcciones byte 3 d7 d6 d5 d4 d3 d2 d1 d0 byte 1 i7 i6 i5 i4 i3 i2 i1 i0 código operación byte 2 i7 i6 i5 i4 i3 i2 i1 i0 byte 3 d7 d6 d5 d4 d3 d2 d1 d0 datos o direcciones byte 4 d7 d6 d5 d4 d3 d2 d1 d0
Ejemplo: variantes instrucciones LD y OUT • LD A, n • el entero de 8 bits n se carga en el registro del acumulador A • OUT (n), A • el byte contenido en el acumulador se coloca en el bus de datos y se escribe en el dispositivo periférico seleccionado en el operando n 0 0 1 1 1 1 1 0 ( 0011 11102 = 3E16 ) n n n n n n n n ( 1101 00112 =D316 ) 1 1 0 1 0 0 1 1 n n n n n n n n
Ejemplo programalenguaje ensamblador LD A, #8016 Almacena en el registro Acumulador el valor 8016 OUT #C316, A Envía el valor del Acumulador al Dispositio C316 LD A, #dato16 Almacena en el Acumulador el valor dato16 OUT #C016, A Envía el valor del Acumulador al Dispositio C016 OUT #C116, A Envía el valor del Acumulador al Dispositio C116
Otras instrucciones • LD B, n • el entero de 8 bits n se carga en el registro del acumulador A • ADD A, B • el contenido del registro B se añade al contenido del acumulador y el resultado se alamcena en el acumulador 0 0 0 0 0 1 1 0 ( 0000 01102 = 0616 ) n n n n n n n n ( 1000 00002 = 8016 ) 1 0 0 0 0 0 0 0
Otras instrucciones ... • LD (nn), A • el contenido del acumulador se carga en la posición de memoria especificada por los operandos nn • el primer operando n es el byte de irden bajo de una dirección de memoria de 2 bytes 0 0 1 1 0 0 1 0 ( 0011 10102 = 3216 ) dirección en little endian n n n n n n n n n n n n n n n n
Otras instrucciones ... • LD A, (nn) • el contenido de la posición de memoria especificada por los operandos nn se cargan en el acumulador • el primer operando n es el byte de irden bajo de una dirección de memoria de 2 bytes 0 0 1 1 1 0 1 0 ( 0011 10102 = 3A16 ) dirección en little endian n n n n n n n n n n n n n n n n
Programa que suma dos números LD A, #dato116Almacena en el registro Acumulador el valor dato116 LD B, #dato216Almacena en el registro B el valor dato216 ADD A, B Suma dato116 (A) mas dato216 (B) y lo deja en A LD #mem16, A Almacena el valor del acumulador en la celda mem16 LD A, #8016Almacena el valor 8016 en el Acumulador OUT #C316, A Envía el valor del Acumulador al dispositivo C316 LD A, #mem16Almacena en el Acumulador el valor de la celda mem16 OUT #C016, A Envía el valor del Acumulador al dispositivo C016