Académique Documents
Professionnel Documents
Culture Documents
-1-
HLDA. Seal de salida generada por el microprocesador como respuesta a la entrada HOLD para indicar que los buses y dems terminales estn en estado de alta impedancia. INTR. Interruptor Request (peticin de interrupcin). Esta seal de entrada es utilizada por los dispositivos externos, cuando necesitan ser atendidos sin demora por el microprocesador, interrumpiendo la secuencia del programa. Puede ocurrir que la interrupcin no sea aceptada. La aceptacin o no-aceptacin de la interrupcin se controla por el programa principal. INTA. Activa a nivel bajo. Interrupt Acknowledge (reconocimiento de la interrupcin). Es una seal de salida. Se utiliza para activar ( en lugar de RD) el dispositivo que genera la interrupcin una vez que ha sido aceptada. TRAP. Es una entrada de interrupcin. Tiene prioridad. RESET IN. Activa a nivel bajo. Es una entrada que pone a cero un registro del microprocesador denominado Contador de Programa, los biestables que validan las interrupciones y la seal HLDA. Se utiliza para indicar el programa. RESET OUT. Es una salida que indica el estado de RESET del microprocesador. Se puede utilizar para poner a cero los dems componentes del sistema. IO/M. M es activa a nivel bajo. Es una salida que indica si la lectura o escritura se realiza sobre la memoria o sobre dispositivos de E/S. X1 X2. Estos terminales de entrada se utilizan para conectar un cristal de cuarzo o una red LC o RC para estabilizar el generador de reloj interno. Tambin es posible conectar un reloj externo. SID y SOD. Entrada y salida respectivamente, de datos en serie. CLK OUT. Salida de la seal de reloj del microprocesador para utilizarla como reloj del sistema.
EJERCICIO. Conectar al 8085 un registro de 8 bits para demultiplexar el bus de datos y la parte baja del bus de direcciones. Utilizar el dispositivo 74LS373. El 74LS373 es un registro de 8 bits con biestables tipo D activos por niveles y con salidas triestado.
OE
LE
HABILIACIN DE CARGA ACTIVA A NIVEL ALTO
OE
AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 0Q 0D 1D 1Q 2D 2Q 3D 3Q 74LS373 4Q 4D 5D 5Q 6D 6Q 7D 7Q A0 A1 A2 A3 A4 A5 A6 A7 D0 - D7
8085
ALE
LE
-2-
-3-
ELECTRNICA / TECNOLOGA / 2 FP 2 / TEMA 8 de 16 bits) hasta que se ejecuta dicha subrutina. Una vez ejecutada, el CP vuelve a cargarse con el valor almacenado en la pila de memoria para proseguir con el programa principal. El motivo por el cual es necesario una pila y no exclusivamente un registro es la posibilidad de que existan subrutinas anidadas, es decir, que desde el programa principal se llame a una subrutina y desde esta a una segunda, y as sucesivamente. En este caso es necesario ir almacenando todas las direcciones de comienzo para posteriormente retornar. c) Unidad aritmtico-lgica. La unidad de proceso completa del 8085 est formada por una ALU (Unidad aritmtico-lgica), que es un circuito combinacional capaz de realizar operaciones de suma y resta, as como operaciones lgicas, un registro de 8 bits llamado Acumulador (A) y un conjunto de cinco biestables o flags denominados registros de estado, que ofrecen informacin relativa al resultado de las operaciones aritmticas o lgicas que se realizan.
Acumulador
Cuando se realiza una operacin, el acumulador contiene un operando y uno de los registros temporales W-Z el otro. El resultado de la operacin se coloca en el acumulador reemplazando al dato u operando que contena anteriormente. La denominacin y situacin de cada flag se muestra en el siguiente dibujo. CY es el sealizador de arrastre, y su contenido pasa a ser 1 cuando se produce acarreo al realizar una suma. AC es el sealizador de arrastre auxiliar. Se utiliza cuando se realizan operaciones en BCD. Su valor ser 1 cuando se produzca arrastre al efectuar la suma de los bits de los operandos que ocupan el cuarto lugar por la derecha. S es el flag de signo y su valor ser 1 si el bit ms significativo del resultado es 1. En caso contrario, ser cero. Z es el sealizador de cero y se pone a 1 cuando el resultado de una operacin ha sido cero. Por ltimo, P es el flag de paridad y su valor ser 1 cuando el nmero de bits de una palabra depositada en acumulador sea par. S Z AC P CY
-4-
ELECTRNICA / TECNOLOGA / 2 FP 2 / TEMA 8 Lgicamente este sistema ofrece tambin grandes inconvenientes, tanto en la fase de definicin como en la de depuracin, cuando el programa es complejo. Con el fin de aproximar la escritura y lectura de programas al lenguaje habitual, se decidi expresar las instrucciones de los microprocesadores utilizando la abreviatura o las siglas de la palabra que define la operacin que realiza. Dado el origen de las compaas fabricantes de este tipo de dispositivos, estas palabras estn expresadas en ingls. As, por ejemplo, la abreviatura MOV, que procede de MOVE y significa MOVER o TRASLADAR, se utiliza para transferencia de datos entre registros internos o externos. Estas expresiones se denominan nemnicos, que significa recordatorio. Por tanto, las expresiones del microprocesador 8085 son un conjunto de 74 nemnicos compatibles con las de otros dispositivos de INTEL, pero, desgraciadamente, distintas, aunque realicen la misma operacin, a las de otros fabricantes. Existen equipos de programacin que admiten directamente las instrucciones en forma de nemnicos. Estos equipos disponen de un programa denominado assembler, que traduce el programa escrito en leguaje ensamblador el sistema binario, que es el nico cdigo capaz de ser interpretado por la mquina. Los equipos ms complejos, denominados genricamente sistemas de desarrollo, son capaces de traducir a cdigo mquina cualquier programa escrito en lenguajes de alto nivel, tales como Pascal, BASIC, etc. Estos equipos facilitan enormemente el desarrollo del software de un sistema digital.
5. Tipos de instrucciones:
El nmero de instrucciones que cada microprocesador puede interpretar y ejecutar es distinto en cada caso. As el 8085 est diseado para admitir 74 instrucciones bsicas, de tal forma que, si contemplamos las variantes de algunas de ellas, este dispositivo est preparado par realizar 246 operaciones distintas. Las instrucciones del 8085 se pueden clasificar en cinco grupos: 1. Transferencia de datos entre registros o entre posiciones de memoria y registros. 2. Operaciones aritmticas. 3. Operaciones lgicas. 4. Bifurcaciones (salto). 5. Instrucciones de stack, E/S y control de mquina.
6. Formato de instrucciones:
Las instrucciones del 8085 y de otros microprocesadores semejantes estn constituidas por 1, 2 3 bytes. As pues existen instrucciones de 1, 2 y 3 bytes. En el siguiente dibujo se muestran los tres bytes, que, como mximo, pueden constituir una instruccin y el contenido de cada uno de ellos.
Cdigo de operacin Instrucciones de 2 bytes Instruciones de 1 byte bit Instrucciones de 3 bytes
7 6 5 43 2 10
Dato u 8 bits de una direccin de memoria
El primer byte siempre se utiliza para representar el CO de todas las instrucciones. Las instrucciones de 2 bytes estn formadas por el CO y dos bytes ms. El primero contiene los 8 bits menos significativos de una direccin de memoria y el otro los 8 bits ms significativos.
-5-
Para los siguientes ejercicios emplearemos las siguientes tablas: Registro A B C D E H L Condicin (XX) CCC NZ no cero (Z=0) 000 Z cero (Z=1) 001 NC no acarreo (CY =0) 010 C acarreo (CY=1) 011 PO paridad impar (P=0) 100 PE paridad par (P=1) 101 P positivo (S=0) 110 M negativo (S=1) 111
RP 00 01 10 11
Par de registros BC DE HL SP
1.
EJERCICIOS: Sumar 2 nmeros que se encuentran en las posiciones de memoria 006A y 006B y guardar el resultado en la posicin 0010. Escribir el programa en nemnico, hexacecimal y binario. Datos:
- LDA [DIRECCIN]. Carga el acumulador (A) con el contenido de la posicin de memoria de la cual se da su direccin. - MOV B, A. El contenido de A pasa al registro B - ADD B. Suma al acumulador el contenido del registro B. El resultado queda en el acumulador (A). - STA [DIRECCIN]. Guarda, almacena el contenido del acumulador en la posicin de memoria de la cual se da su direccin. NEMNICO: LDA 006A MOV B, A LDA 006B ADD B STA 0010 NEMNICO LDA 6A 00 MOV B, A LDA 6B 00 ADD B STA 10 00 BINARIO 0011 1010 0110 1010 0000 0000 0100 0111 0011 1011 0110 1011 0000 0000 1000 0000 0011 0010 0001 0000 0000 0000 HEXADECIMAL 3A 6A 00 47 3A 6B 00 80 32 10 00
2.
Escribir un programa que cargue el registro B con el dato 04, y cargue el registro C con el dato 05. El programa ha de decrementar 4 veces el contenido del registro B y cuando haya hecho esto decrementar 1 vez el registro C. Datos:
- MVI r, DATO. El contenido de la posicin de memoria apuntada por los registros HL pasa al registro r. El dato pasa al registro r. - DCR r. El contenido del registro r se decrementa en una unidad. NEMNICO: MVI B, 04 MVI C, 05 DCR B DCR B DCR B DCR B DCR C
-6-
BINARIO 0000 0110 0000 0100 0000 1110 0000 0101 0000 0101 0000 0101 0000 0101 0000 0101 0000 1101
HEXADECIMAL 06 04 0E 05 05 05 05 05 0D
Hacer una tabla con el programa anterior en hexadecimal y la direccin de memoria donde se encuentra cada instruccin suponiendo que el programa se carga a partir de la direccin 0000. DIRECCIN 0000 0001 0002 0003 0004 0005 0006 0007 0008 BYTE 06 04 0E 05 05 05 05 05 0D
4.
En este ejercicio introduciremos el concepto de salto condicional: Escribir un programa que cargue el registro C con el dato FF, cargue el registro B con FF, decremente el registro B hasta que su contenido valga 0 y cada vez que esto suceda decremente el registro C. Adems cada vez que se decremente el registro C se ha de cargar el registro B con FF y decrementarlo hasta 0. El programa se acaba cuando el registro C llegue a 0. Datos:
- JNZ [DIRECCIN]. Si el resultado de la ltima operacin aritmtico-lgica no es 0, saltar a la direccin de memoria indicada.
BUCLE 1 BUCLE 2
NEMNICO BUCLE 1: CARGAR B CON FF BUCLE 2: DCR B MVI C, FF BUCLE 1:MVI B, FF BUCLE 2 DCR B JNZ BUCLE 2 DCR C JNZ BUCLE 1 NEMNICO MVI C FF MVI B FF DCR B JNZ DCR C JNZ BINARIO 0000 1110 1111 1111 0000 0110 1111 1111 0000 0101 1100 0010 0000 1101 1100 0010 DIRECCIN 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B HEXADECIMAL 0E FF 06 FF 05 C2 04 00 0D C2 02 00
EJERCICIO. Cunto tiempo tarda en ejecutarse una instruccin MOV r1, r2 si el microprocesador trabaja a 4 MHz?
f = 4 M z = 4.10 6 Hz H 1 1 T = = = 0'25 .10 6 S = 0'25 S f 4.10 6 4 ciclos de reloj t = 4 0'25 =1 S
8. Modos de direccionamiento:
Las instrucciones del microprocesador 8085 hacen referencia a los datos, que explcita o implcitamente contienen, de diferentes maneras. Existen cuatro maneras de referenciar datos, denominados modos de direccionamiento: inmediato, directo, por registros y por registro indirecto. En el direccionamiento inmediato la instruccin contiene los datos en el byte o los bytes siguientes al cdigo de operacin, por ejemplo ADI 04. El hexadecimal 04 (segundo byte de la instruccin) se suma al acumulador. La forma ms sencilla de direccionamiento es la directa. En este caso los bytes segundo y tercero de la instruccin contienen la direccin de la posicin de memoria donde se encuentra el dato, por ejemplo LDA 003F. El contenido de la posicin 003F pasa al acumulador. En el direccionamiento por registro la instruccin especifica el registro o doble registro donde est el dato, por ejemplo ADD B. El contenido del registro B se suma al acumulador. Por ltimo, el modo de direccionamiento por registro indirecto el doble registro especificado en la instruccin contiene la direccin de memoria donde est el dato, por ejemplo, LDAX B. El
-8-
ELECTRNICA / TECNOLOGA / 2 FP 2 / TEMA 8 contenido de la direccin de memoria, cuya direccin est en el par de registros B y C, se mueve al acumulador.
EJERCICIOS. Escribir un programa que lea el puerto de entrada cuya direccin es 0A, verifique si el bit 3 del dato ledo es 1 y el resto todo 0 y en este caso saque por el puerto de salida cuya direccin es 0B el dato F1. La secuencia se repite (cclicamente). - Las direcciones de los puertos de E/S son de 8 bits. Esto quiere decir que el 8085 puede direccionar 256 puertas de E y 256 puertas de salida. - IN [DIRECCIN]. Lee el contenido del puerto direccionado. - OUT [DIRECCIN]. Escribe en el puerto direccionado. - CPI DATO. Compara el contenido del acumulador con el dato. - JNZ. Salto condicional. - JMP. Salto incondicional.
7 6
2 1
0 0 0 0 1 0 0 0
A NO
[0A]
A=08? A A SI F1 [0B]
INICIO: IN 0A; el contenido del puerto 0A pasa al acumulador. CPI 08; compara el acumulador con el dato 08. JNZ INICIO; salta si el bit de 0 no est activado. MVI A, F1; carga el acumulador con F1. OUT 0B; saca por el puerto 0B el dato del acumulador. JMP INICIO; salto incondicional a la direccin INICIO.
-9-
EJERCICIO. Escribir un programa que el bit 3 del puerto de entrada 0A est a 1 saque por el puerto de salida 0B el dato FF y lo mantenga un cierto tiempo en esta situacin, transcurrido el cual la situacin del puerto 0B debe volver a 00.
INICIA LIZA R A 00 [A ] 0B B FF
[0A ]
NO
B 3 [A =1 ? IT ] S I A FF
[0B ]
RE RDO TA DET M O IE P
INICIO: MVI A, 00; carga el acumulador con 00 OUT 0B ; sacar el contenido del acumulador por el puerto de salida 0B MVI B, FF ; carga el registro B con FF BUCLE 1: IN 0A ; carga el acumulador con el dato que hay en el puerto 0A ANI 08 ; compruebo si el bit 3 del acumulador est a 1. JZ BUCLE 1 ; saltar si el resultado es 0 MVI A , FF ; cargo el acumulador con FF OUT 0B ; saca el dato del acumulador por 0B TIEMPO: DCR B ; decremento B JNZ TIEMPO ; saltar a tiempo si el resultado no es 0 JMP INICIO ; regresa al estado inicial Cunto tiempo se mantiene el puerto 0B en FF? Siendo la frecuencia de 4 MHz. TIEMPO: DCR B (4) JNZ TIEMPO (7/10) JMP INICIO (10) INICIO: MVI A , 00 (7) OUT 0B (10) N de estados = (4 + 10) 254 + (4 + 7)+ 10 + 7 + 10 = 3594 estados T=025 S t = 8985 S
NOTA: son 254 porque la ltima vez no vuelve a subir para DCR B y entonces en ese momento slo se producen 7 pulsos de reloj. Por eso hemos de sumar 4 + 7.
- 10 -
EJERCICIO. Cmo puede aumentarse de una forma sencilla este tiempo? Siempre que no buscsemos diferencias de tiempos muy grandes insertaramos la instruccin NOP Como ejemplo veremos el efecto de incluir 2 NOP en cada bucle. NOP 5 estados Aadimos (5 + 5) 255 = 2550 t aadido = 6375 S
- 11 -