Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad...

52
1 1 Unidad N Unidad N ° ° 5 5 Control de Transferencia Control de Transferencia 5 .1. .1. - - Introducci Introducci ó ó n n Las dos unidades anteriores se han dedicado a las instrucciones de transferencia de datos y de manejo de grupos de datos. La flexibilidad y versatilidad del concepto del programa almacenado, concepto básico de los procesadores, procede sin embargo principalmente de la aptitud de controlar la transferencia, o salto (ramificación), a una instrucción que no está en el orden secuencial. Esto se logra con instrucciones procedentes del grupo de control de transferencia. Todas estas instrucciones actúan sobre el contador de programa; como se demostrará, es posible ejecutar un bloque de instrucciones muchas veces, con dicho número de veces determinado o por medio de los datos del programa o algún flags.

Transcript of Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad...

Page 1: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

11

Unidad NUnidad N°°55Control de TransferenciaControl de Transferencia

5.1..1.-- IntroducciIntroduccióónnLas dos unidades anteriores se han dedicado a las instrucciones de transferencia de datos y de manejo de grupos de datos. La flexibilidad y versatilidad del concepto del programa almacenado, concepto básico de los procesadores, procede sin embargo principalmente de la aptitud de controlar la transferencia, o salto (ramificación), a una instrucción que no está en el orden secuencial. Esto se logra con instrucciones procedentes del grupo de control de transferencia. Todas estas instrucciones actúan sobre el contador de programa; como se demostrará, es posible ejecutar un bloque de instrucciones muchas veces, con dicho número de veces determinado o por medio de los datos del programa o algún flags.

Page 2: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

22

5.2.5.2.-- Instrucciones de SaltoInstrucciones de SaltoUna instrucción salto es usada para romper la ejecución secuencial normal de un programa y ramificarlo hacia una parte diferente del mismo. Esto se realiza cargando la dirección de la próxima instrucción en le registro del Contador de Programa, forzando así el procesador a coger el contenido de la nueva dirección para que sea la próxima instrucción. Por ejemplo:

JMP 20B3la cual en el código de máquina del 8085 se asemeja a la representación que se da en la figura.

Page 3: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

33

La ejecución de esta instrucción provoca un salto incondicional a la celda de la memoria 20B3 para la próxima instrucción. Así, si esta instrucción estaba almacenada en la memoria comenzando en la dirección 2000, por ejemplo, después de la ejecución del contador de programa, en vez de contener la dirección 2003 (la de arranque de la instrucción secuencial inmediata siguiente), contendría la 20B3.Cuando se escribe un programa en lenguaje simbólico ensamblador no se conoce a menudo la dirección absoluta del destino de la instrucción hasta que el programa ha sido completamente desarrollado. Es por esta razón por la que la designación de la etiqueta se realiza por medio de una instrucción en lenguaje ensamblador. Se emplea un “label”, designación, rótulo, etiqueta, para indicar la dirección del destino de un instrucción salto y éste se traduce únicamente en su forma hexadecimal durante el proceso de traducción. Por ello, la instrucción anterior tomaría la forma:

JMP LAB1donde LAB1 es una etiqueta asociada con la instrucción almacenada en la celda de la memoria 20B3. Esto se detalla en la siguiente figura:

Page 4: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

44

5.2.1.5.2.1.-- Salto condicionalSalto condicionalLa instrucción anterior es conocida como un salto incondicional, puesto que cuando se la desarrolla, se producirá siempre una bifurcación a la dirección contenida en la instrucción. La flexibilidad real de las instrucciones salto, sin embargo, se deriva de las instrucciones de bifurcación condicional, puesto que estas solamente se ramifican, saltan, a la próxima instrucción si se cumple una condición determinada, de otra manera, se ejecuta la próxima instrucción secuencial.

Page 5: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

55

Las condiciones que se pueden especificar quedan determinadas por el estado de los distintos indicadores del registro de señalización del procesador. Las que se pueden especificar para el Intel 8085, por ejemplo, se muestran en la siguiente figura:

Una instrucción de bifurcación condicional típica es: JNZ LAB1

que se lee como: salte a LAB1 si el indicador de cero no está activado; y haría que la instrucción próxima se ejecutase a partir de la dirección asociada con el “label” LAB1, solamente si la señalización cero en el registro de señalización del procesador no fuese “set”, puesta, (Z=0), de otra manera se ejecutara la próxima instrucción secuencial.

Page 6: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

66

5.3.5.3.-- Diagramas de FlujoDiagramas de FlujoAntes de que se escriba cualquier programa que presuponga ramificación, es necesario planificar la secuencia lógica de los sucesos que han de ser realizados para lograr el objetivo deseado. Se puede usar un cierto número de técnicas, pero la mas útil para los programas ensamblador es la construcción de un diagrama de flujo. Ese es, sencillamente, un diagrama que indica la secuencia y las acciones necesarias en un programa y en los puntos del mismo donde la ramificación sea necesaria.Los símbolos usados en un diagrama de flujo se ilustran mejor por medio de algunos ejemplos.A continuación se presentan dos ejemplos1.- Suma de los números del 1 al 10.2.- Calculo del tiempo de retardo.

Page 7: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

77

1.- Ejemplo de Programa Diagrama de FlujoConsidere un programa sencillo para sumar o totalizar los diez primeros números 1 al 10. Un diagrama de flujo para este programa se muestra a continuación.

Admitamos que el registro C contiene el número que debe ser añadido al total acumulado y B el registro que contiene el total acumulado citado.

Page 8: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

88

Las instrucciones dadas en lenguaje ensamblador para el programa de la figura que se detalla a continuación han siso desarrolladas usando el diagrama de flujo anterior. Las instrucciones CPI (comparar inmediato) y JNZ (salte si cero) se usan para determinar cuando la cuenta ha alcanzado 1110. Esta combinación se emplea frecuentemente para proporcionar una transferencia condicional del control.

Page 9: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

99

Otra manera de ver si este diagrama de flujo funciona es efectuar una tabla en excel y ver sus valores. La suma de los valores del 1 al 10 da como resultado 5510 = 3716

donde tenemos que:MOV A, B = Mover el contenido del Reg. B al Reg. A.ADD C = Sumar al Reg. A el Reg. C.MOV B, A = Mover el contenido del Reg. A al Reg. B.INR C = Incrementar en 1 el Reg. C.MOV A, C = Mover el contenido del Reg. C al Reg. A.CPI 0B = Comparar el Reg. C con 0B16 o 1110, si llego se termina.

Reg. A Reg. B Reg. C MOV A,B ADD C MOV B,A Reg. B INC C Reg. C MOV A,C Reg. A CPI 0B0 0 1 0 1 1 1 2 2 2 2 22 1 2 1 3 3 3 3 3 3 3 33 3 3 3 6 6 6 4 4 4 4 44 6 4 6 10 10 10 5 5 5 5 55 10 5 10 15 15 15 6 6 6 6 66 15 6 15 21 21 21 7 7 7 7 77 21 7 21 28 28 28 8 8 8 8 88 28 8 28 36 36 36 9 9 9 9 99 36 9 36 45 45 45 10 10 10 10 1010 45 10 45 55 55 55 11 11 11 11 11

Page 10: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

1010

2.- Una exigencia común cuando un microprocesador se une a otro equipo consiste en calcular un tiempo de retardo en el programa. Un controlador con microprocesador de las luces de tráfico de una carretera, por ejemplo, necesitaría calcular el tiempo de retardo para realizar adecuadamente la secuencia de los cambios de luz.Puesto que cada instrucción de máquina necesita una cantidad de tiempo especificada para ser ejecutada (típicamente unos pocos microsegundos) , es posible calcular el tiempo de retardo ejecutando un grupo de instrucciones un número preestablecido de veces. El tiempo de retardo obtenido es entonces proporcional al número de veces que se ejecute este grupo de instrucciones, o lazo. Admitamos que el retardo que se desea determinar y por lo tanto el lazo del contador quedaráalmacenado en el registro C. Un diagrama de flujo para este programa se da a continuación. Este diagrama se puede ahora traducir al lenguaje ensamblador.El tiempo de retardo básico queda determinado por medio de seis instrucciones de no-operación (NOP). Estas instrucciones no afectan a ninguno de los registros o memoria del procesador y el retardo se puede extender, aumentar, fácilmente mediante una sustitución por un cierto

Page 11: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

1111

número de instrucciones diferentes. Tenga en cuenta que las instrucciones “compare” y “salto condicional” son usadas de nuevo para determinar el control de transferencia.

Page 12: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

1212

5.4.5.4.-- SubrutinasSubrutinasEs frecuente que en un programa se necesite desarrollar muchas veces una tarea secundaria. Es muy conveniente no tener que repetir lasección del código de máquina cada vez que se requiera usar los resultados de esta tarea secundaria. Es necesario, según esto, ser capaz de transferir el control de un programa a una sección de código usada a menudo o subrutina diseñada para desarrollar la tarea secundaria y después devolver el control a la secuencia principal de instrucciones.Las subrutinas no ahorran solamente memoria de programa por no ser necesario repetir una sección del programa cada vez que se necesita una sub-tarea, tarea secundaria, sino, que además proporcionan la oportunidad de estructurar un programa en secciones adecuadas para que puedan ser escritas y comprobadas independientemente y después, colectivamente, desarrollar la tarea completa.

Page 13: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

1313

Las dos instrucciones básicas previstas para “llamar”, call, a una su-rutina y regresar desde ella, son:

CALL nnnnnny

RET

en donde nnnn es la representación convencional de los dos bytes en cuatro caracteres hex de los que parten las direcciones que hay en la subrutina. La instrucción de retorno o regreso, RETurn, es la última instrucción que ha de ser desarrollada en la subrutina y ésta devuelve el control al programa principal en la instrucción siguiente a la CALL. Esto se ilustra en el diagrama del programa de la memoria de la figura.

Page 14: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

1414

En lenguaje ensamblador es usual el indicar la dirección de comienzo de una subrutina por medio de una etiqueta (nombre simbólico) y ésta se traduce en el correspondiente valor absoluto de dirección en cuatro dígitos hex durante el proceso ensamblador.Cuando el microprocesador desarrolla una instrucción, CALL, a la subrutina, además de transferir control a la dirección de partida de la subrutina, debe “recordar” también la dirección ordinaria que tiene en el programa principal lo que permite que el control pueda volver desde el punto en que se encuentra cuando se ejecute la instrucción RET. Esto se realiza salvaguardando el contenido actual del registro del contador del programa (PC) en una pila, “stack”.Una pila es sencillamente una cola del tipo “última entrada, primera salida”, que se realiza como si fuese un grupo de celdillas sucesivas en el propio procesador o, más frecuentemente, en el sistema de la memoria. El puntero de pila es un registro, “stack pointer”, designado abreviadamente por (SP), que en el procesador siempre indica, puntualiza, la dirección de la localización, celda, etc, la cual se guarda ordinariamente en la entrada, en la parte superior de la pila y en consecuencia que cambia su contenido a cada llamada y retorno desubrutina.

Page 15: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

1515

Si la pila esta realizada en la memoria del sistema como en el caso del Intel 8085, el contenido inicial del puntero de pila es arbitrario y se suele inicializar para que apunte a un lugar no usado en el área de la memoria.La secuencia de las operaciones y los contenidos adecuados del puntero de pila y del contador del programa durante una llamada a una subrutina se ilustran a continuación. Se asume que el puntero de pila (SP), contiene actualmente 20C2 y como ya se ha demostrado su contenido se disminuye en dos cuando el contenido del contador del programa (PC), dos bytes, se guarda una vez que se ejecute la llamada de subrutina.

Page 16: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

1616

Cuando se ha ejecutado una instrucción RET, retorno, el proceso que se ha ilustrado es invertido. El contador de programa queda cargado (por el menos significativo de los bytes, el primero) con el contenido de la parte superior de la pila, el puntero de pila es incrementado dos veces y el control vuelve a la instrucción que seguía a llamada de la subrutina en el programa principal. También se dispone de instrucciones de llamada y retorno de las subrutinas condicionales, exactamente en la misma forma y con el mismo rango de condiciones que las instrucciones de salto condicional.

Page 17: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

1717

Ejemplo de programa con SubrutinaEl ejemplo Nº2 de diagrama de flujo fuéun programa corto para calcular un retardo de tiempo. Esto se puede hacer adecuadamente en una subrutina situando una instrucción RET con el label o etiqueta TIME, tiempo, al final del programa. Con el objeto de hacer que sea útil esta instrucción en otras partes del programa en una aplicación imaginaria, es deseable situar el tiempo de retardo en el programa principal y no en la misma subrutina. De esta manera, la misma subrutina puede realizar una cierta variedad de tiempos de retardo. Para realizar esto se usa el registro C para pasar el parámetro necesario de tiempo de retardo a la subrutina (TIMDLY), “time delay”. Esto se representa en la siguiente figura.

Page 18: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

1818

5.5.5.5.-- Operaciones con la pilaOperaciones con la pilaLa pila puede ser utilizada como un deposito temporal para los contenidos de los registros del procesador:Ejemplo: PUSH PSW (Push processor status word)

- Guardar en la pila la PSWEsta almacena los 16 bits combinados que contienen el registro A y el de señalización en la parte superior de la pila. Existe una instrucción similar para cada par de registros BC, DE y HL. Un par de registros puede ser cargado con los contenidos de la parte superior de la pila por medio de una instrucción POP:Ejemplo:

POP saque BCtransfiere el contenido de la dirección dada por SP al registro C y el contenido de la dirección dada por SP + 1 al registro B. Las instrucciones PUSH, meta o empuje, son muy útiles, especialmente cuando se escriben subrutinas, puesto que si una subrutina utiliza, por ejemplo, los registros A, B y C para realizar su subtarea particular, los contenidos de estos registros serán muy diferentes una vez que la subrutina se haya ejecutado. Por ello es usual, cuando se escribe una

Page 19: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

1919

subrutina, salvaguardar primero los contenidos actuales de aquellos registros de los procesadores que son usados por la subrutina en la pila y entonces restaurar los contenidos salvaguardados antes de que se déla instrucción de retorno. El programador puede por ello continuar utilizando los contenidos de todos los registros del procesador después de que haya sido realizada una subrutina, puesto que sabe que los contenidos previos no han sido modificados.

5.6.5.6.-- Paso de parPaso de paráámetrosmetrosLa cuenta del lazo que se utiliza en la subrutina de retardo en el programa de ejemplo con subrutina es conocido con el nombre de parámetro (o argumento) de la subrutina. En general, se puede necesitar los parámetros para pasar datos, tanto a la subrutina para su procesamiento como para hacerla retroceder desde la subrutina alprograma, después del procesamiento. El mecanismo usado en el ejemplo lo fue por medio de uno de los registros del procesador (el registro C) pero una solución más flexible para pasar los parámetros hacia y desde una subrutina se realiza por medio de un puntero del comienzo de la dirección de la memoria en el sistema donde se encuentra almacenados los parámetros. Con el Intel 8085, esto se complementa usualmente utilizando el par de registros HL.

Page 20: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

2020

Ejemplo de Paso de ParámetrosEl ejemplo de programa con subrutina visto anteriormente ha sido reescrito en la siguiente figura para ilustrar el uso del par de registros HL para pasar el parámetro de retardo y el uso de la pila en la salvaguardia de los contenidos de aquellos registros del procesador que son usados por la subrutina durante su ejecución. La celda de la memoria usada para almacenar el parámetro de retardo es la 2080.

Page 21: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

2121

5.7.5.7.-- Subrutinas anidadasSubrutinas anidadasEs completamente legal dentro de una subrutina el poder llamar a otra subrutina y también el que ésta pueda llamar a otra. El mecanismo de última entrada, primera, salida de la pila asegura siempre que la dirección del retorno se encuentre en la parte superior de la pila cuando las instrucciones de RET, retorno, sean ejecutadas. De esta manera las subrutinas pueden ser anidadas hasta una profundidad que estásolamente determinada por la disponibilidad que se tenga de la memoria de lectura/escritura para la pila, lo que se ilustra en la siguiente figura.

Page 22: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

2222

Ejemplo de programa con Subrutinas AnidadasEl tiempo máximo de retardo producido por la subrutina en el ejemplo previo puede quedar muy ampliado haciendo que la instrucción de retardo básico necesite más tiempo para su ejecución. Una manera adecuada para hacerlo es remplazar las instrucciones NOP con una llamada a otra rutina similar de retardo. Esto se ilustra en la siguiente figura.

Page 23: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

2323

5.8.5.8.-- EjerciciosEjercicios1.- Determine el contenido final del Registro A después de que se haya realizado el siguiente programa en lenguaje ensamblador.

MVI A, FFLAB1: DCR A

JNZ LAB1 ( valor = 0 ; termina )HALT

El registro A se carga con FF y se decrementa su valor en uno (1) y luego se compara el valor del registro A con 0 y si no es igual sigue funcionando el programa hasta que el valor llegue a cero (0).

2.- Determine el número de instrucciones que se ha realizado por medio del siguiente programa en lenguaje ensamblador.

MVI A, 00LAB2: INR A

JNC LAB2 ( valor rebosa ; termina )HALT

El registro A se carga con 00 y se incrementa su valor en uno (1) hasta que la valor llegue hasta FF y entonces rebose hacia 00. El programa ejecutará el lazo 256 veces.

Page 24: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

2424

33.- Diseñe un diagrama de flujo y escriba en lenguaje ensamblador para sumar los números impares del 1 al 20.

B = 00C = 01

B → AC = C + A

A → BC → A

A = A + 02A → C

No Compararcon 2110

Si ↓

FIN

Page 25: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

2525

El programa en lenguaje ensamblador se detalla a continuaciEl programa en lenguaje ensamblador se detalla a continuacióón:n:

1)1) MVIMVI B, 00B, 00 6)6) MOV MOV A, CA, C2)2) MVIMVI C, 01C, 01 7) 7) ADIADI 02023) 3) LAB1:LAB1: MOVMOV A, BA, B 8)8) MOVMOV C, AC, A4)4) ADDADD CC 9)9) CPICPI 15155)5) MOVMOV B, A B, A 10)10) JNZJNZ LAB1LAB1

Una forma de comprobar bien el programa es ejecutarlo y ver si eUna forma de comprobar bien el programa es ejecutarlo y ver si el resultado l resultado final se ajusta a lo solicitado en el problema. final se ajusta a lo solicitado en el problema.

Reg. A Reg. B Reg. C MOV A,B ADD C MOV B,A MOV A,C Reg. B ADI 02 Reg. A MOV C,A Reg. A CPI 220 0 1 0 1 1 1 1 3 3 3 3 33 1 3 1 4 4 3 4 5 5 5 5 55 4 5 4 9 9 5 9 7 7 7 7 77 9 7 9 16 16 7 16 9 9 9 9 99 16 9 16 25 25 9 25 11 11 11 11 11

11 25 11 25 36 36 11 36 13 13 13 13 1313 36 13 36 49 49 13 49 15 15 15 15 1515 49 15 49 64 64 15 64 17 17 17 17 1717 64 17 64 81 81 17 81 19 19 19 19 1919 81 19 81 100 100 19 100 21 21 21 21 21

Page 26: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

2626

44.- Modifique el programa N°1 para formar una subrutina. Transfiera la cuenta numérica a la subrutina como un parámetro.

La cuenta numérica terminal para la subrutina es transferida al registro C y el total resultante al registro B. Los números son sumados en la subrutina siguiente de orden inverso.

Page 27: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

2727

55.- Diseñe un diagrama de flujo y escriba un programa en lenguaje ensamblador para calcular por medio de una subrutina un tiempo de retardo, incrementando los contenidos del registro A en una unidad hasta que se alcance un límite que es pasado hacia la subrutina como un parámetro.

A contiene CUENTA B contiene LIMITE

Page 28: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

2828

Unidad NUnidad N°°66Entrada y Salida DigitalEntrada y Salida Digital

6.1..1.-- IntroducciIntroduccióónnUn microcomputador es, básicamente, un componente digital que puede examinar las señales digitales de entrada y realizar funciones, como consecuencia de estas entradas con el fin de proporcionar señales digitales de salida. Puesto que los dispositivos externos de la periferia del microcomputador producen o aceptan señales que no son de naturaleza digital necesariamente, se requiere a menudo , la circuitería de interface, acoplamiento y adaptación, para transformar estas señales externas de forma que sean adecuadas para el microcomputador. Esta unidad está relacionada con los mecanismos básicos usados en un sistema microprocesador para leer entradas digitales y producir salidas digitales. Las dos unidades siguientes describen algunos tipos de la circuitería adicional y los mecanismos de control que se necesitan para interfasar el microcomputador a las señales específicas externas de entrada y salida.

Page 29: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

2929

6.2..-- Entrada y Salidas DigitalesEntrada y Salidas DigitalesUna entrada digital simple para un microprocesador puede ser producida por un conmutador monopolar. La figura que se detalla a continuación muestra cómo un 0 lógico o nivel del voltaje puede ser representado por un microcomputador, dependiendo de la posición del conmutador.

Voltaje del nivel 1 lógico

Entrada Lógica 1 o 0 lógicoal microcomputador

Voltaje del nivel 0 lógico

De la misma forma puede representarse, una salida lógica simple desde un microcomputador usando un diodo emisor de luz (led) light emiting diode, como se ilustra en la siguiente figura.

led On para 1 lógico1 o 0 lógico desde el microcomputador

led Off para 0 lógico

Page 30: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

3030

Un indicador LED o un conmutador no pueden ser conectados directamente al bus del microcomputador, puesto que el microcomputador usa el bus para comunicarse con todos los dispositivos del sistema. Por ello la información que hay en el bus estácambiando continuamente cuando las instrucciones son preparadas desde la memoria y ejecutadas a continuación. La información que se obtiene para un indicador de salida debe, de esta forma, ser bloqueada (latched) por medio de un circuito adecuado. El procesador puedeenviar entonces datos hacia la salida del dispositivo, determinado por las señales de control del bus y proporciona entonces una salida continua hasta que reciba nuevos datos. Igualmente, una entrada desde un conmutador debe quedar aislada de los datos que proceden del bus hasta que el microprocesador esté dispuesto para poder leer sus valores lógicos.Se dispone de una flexibilidad considerable si un sistema incorpora un dispositivo programable de entrada/salida (PI/O) que proporcione los puertos y aislamientos necesarios. Estos dispositivos son organizados usualmente en puertas o grupos de entradas y salidas, a menudo de 8 bits. Normalmente cada puerta puede ser programada para ser una

Page 31: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

3131

puerta de entrada o salida y a veces, un tipo mixto de entradas y salidas. En la Figura que se muestra a continuación se representa un diagrama esquemático de un microcomputador básico que incorpora un PI/O.

6.3..-- Entrada/Salida por zona de memoriaEntrada/Salida por zona de memoriaUn sistema microcomputador típico puede contener un cierto número de dispositivos de entrada/salida conectados todos al mismo bus. Para ello, es necesario que el microprocesador seleccione cada dispositivo separadamente.Hay básicamente, dos aproximaciones para la organización del direccionamiento asociado con la transferencia de datos de entrada/salida entre el bus de un microprocesador y un dispositivo de

Page 32: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

3232

entrada/salida. Con la entrada/salida por zona de memoria el espacio disponible de direcciones en la memoria del microprocesador queda dividido en dos áreas. Un área es un rango de direcciones asociado con el sistema de memoria (ROM y RAM) y la otra queda reservada paralos dispositivos de entrada/salida. En la figura se muestra una disposición típica que ilustra esta aproximación.

Entrada/salida por zona de memoria

Con éste método cada operación de entrada o salida es similar a la de un acceso normal a la memoria y permite que se usen las mismas instrucciones para ambas transferencias; la de datos y la de entrada/salida. La dirección adecuada sale por el bus de direcciones y es reconocida bien por un dispositivo de memoria (ROM y RAM) o por

Page 33: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

3333

un dispositivo de E/S (PI/O) y los datos adecuados son transferidos por el bus de datos. Este enfoque tiene por ello la ventaja de que puede tener todos los modos de direccionamiento utilizados para el acceso a la memoria, disponibles también para las transferencias de datos de entrada/salida. La mayor desventaja es que se reduce el rango disponible de las direcciones de la memoria.

6.4..-- Entrada/Salida programadaEntrada/Salida programadaEl enfoque alternativo es la entrada/salida programada. Con este método, las transferencias de datos de entrada/salida son ejecutadas por medio de unas instrucciones especiales desarrolladas por el procesador, IN, OUT, para el Intel 8085. El microprocesador genera una señal de entrada/salida para informar a los dispositivos de entrada/salida (y la memoria) que la dirección en el bus de direcciones está destinada a un dispositivo determinado de entrada/salida. Esta forma significa que no ha reservado ningún espacio para los dispositivos de entrada/salida en la memoria del sistema.

Page 34: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

3434

Se ilustra un esquema típico en la figura:

Tenga en cuenta que aunque el Intel 8085 tiene en común con la mayoría de los microprocesadores, instrucciones de entrada/salida programadas, es posible también diseñar una entrada/salida por zona de memoria, basándose en el bus del microprocesador.

6.5.6.5.-- Dispositivos programables de entrada/salidaDispositivos programables de entrada/salidaLa entrada y salida digital se controla en la mayoría de los microprocesadores por medio de dispositivos programables de entrada/salida y normalmente se usan entradas/salidas programadas. Un dispositivo PI/O puede controlar un cierto número de líneas individuales de entrada y salida. Estas son agrupadas generalmente en

Page 35: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

3535

un número de puertas, comprendiendo cada una ocho líneas que pueden ser programadas para operar, bien sea como entradas o como salidas.Antes de que los datos puedan ser leídos desde o escritos hacia una puerta, es necesario primero programar el dispositivo en el tipo de configuración previsto en su aplicación. Esto se ejecuta escribiendo la adecuada información de mando en un(os) registro(s) especifico(s) direccionable(s) del dispositivo cuando el sistema está siendo inicializado. Después de recibir esta información, el dispositivo responderá de la manera especificada a más mandos, bien sea desde la circuitería externa o desde, el microprocesador.

6.5.1.6.5.1.-- Control del apretControl del apretóón de manos (handshake)n de manos (handshake)Para algunas aplicaciones es necesario sincronizar la transferencia de datos entre el PI/O y un dispositivo externo: en consecuencia, la mayoría de los PI/Os proporcionan líneas de control para esta función. La sincronización es usualmente efectuada por medio de un apretón de manos. En la Figura se ilustra una transferencia típica de secuencia.

Page 36: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

3636

Los datos son situados primero sobre las líneas de datos por el dispositivo de envío y la línea de “datos disponibles” (DAV), “data available”, se energiza. El dispositivo receptor detecta la energización de la línea DAV, acepta los datos y entonces responde con la energización de la línea de “datos aceptados” (DACC), “data accepted”. El dispositivo de envío interpreta la energización de la línea DACC como un reconocimiento de recepción de los datos por el receptor y por ello “repone” la línea DAV. Finalmente, el receptor detecta que la línea DAV ha sido borrada y a su vez energiza la línea DACC para permitir que se transmitan más datos. Este aspecto se muestra en el diagrama esquemático de un PI/O que se detalla a continuación.

Page 37: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

3737

En todos los dispositivos que están conectados al bus del microprocesador, RAMs, ROMs, PI/Os, hay una entrada energizadorade la entrada de la pastilla que es usada (en unión del plano de direcciones del sistema) para conseguir que solamente el dispositivo responda a cada transferencia de datos en el bus. Así, cuando estápresente una dirección en el bus de direcciones del microprocesador, proporcionada por el PI/O, usualmente determinada por la presencia de un 1 lógico en una posición característica en los bits que forman la dirección, ésta es detectada y usada para gobernar la línea energizadora

Page 38: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

3838

de la entrada a la pastilla. Para seleccionar el registro adecuado en el mismo PI/O de puerta A o puerta B, se usan entonces dos bits adicionales a la dirección, usualmente el par menos significativo. La operación adecuada de entrada o salida es determinada por las líneas de lectura y escritura, respectivamente.

6.5.2.6.5.2.-- InicializaciInicializacióón de puertan de puertaEn algunos sistemas microprocesadores cada dispositivo programable de entrada/salida es un circuito integrado separado, pero en otros estáincorporado en otro componente del sistema , procesador o memoria. En un sistema típico Intel 8085, por ejemplo, se incorporan tres puertas de entrada/salida en cada circuito RAM de memoria, en unión de un dispositivo de temporización (Intel 8155). Conceptualmente, sin embargo, las puertas de entrada/salida y el temporizador están completamente separados de la memoria RAM y se pueden por esto considerar independientes.La puerta adicional del Intel 8155 (puerta C) es de sólo 6 bits y puede ser usada bien como una tercera puerta de entrada/salida o para proporcionar señales de control para las puertas A y B, por ejemplo:

Page 39: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

3939

controles del apretón de manos o de interrupción. La información del comando necesaria para inicializar las puertas en el Intel 8155 es de un solo byte (8 bits) y en este byte cada bit tiene asignado algún significado especial como se representa en la siguiente figura. Este byte de comando indica que el temporizador y las puertas de entrada/salida han sido programadas conjuntamente. El byte de mando se transfiere al Intel 8155 usando un dirección específica y la instrucción de salida programada, OUT. Es decir, que la instrucción transfiere los contenidos del registro del procesador A, al dispositivo direccionado de entrada/salida.Por ejemplo, si después de decidir el mapa de direcciones PI/O ha de responder a direcciones 02(hex) en las ocho líneas menos significativas del bus de direcciones, la secuencia de instrucción:

MVI A, 02OUT 20

transfiere los datos de comando 02(hex) al registro de mando en el 8155 seleccionado, la significación de este comando se muestra en la figura que se detalla a continuación.

Page 40: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

4040

Esto configuraría que la puerta A fuese de 8 entradas, la puerta B de 8 salidas y la puerta C fuese una segunda puerta de entrada. El temporizador no quedaría afectado.Los datos son transferidos entre el procesador y estas puertas por medio del uso de una instrucción IN o OUT con su dirección especificada para cada puerta. Es decir, la instrucción:

IN dirección

Page 41: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

4141

transfiere los datos desde la puerta direccionada al registro A. La puerta o registro especificada queda determinada por los 8 bits menos significativos del bus de direcciones.La figura que se detalla a continuación representa un rango campo de direcciones típico.

Page 42: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

4242

Ejemplo NEjemplo Nºº1 de programa Entrada y Salida Digital1 de programa Entrada y Salida DigitalEn el ejemplo de la figura se han asumido las mismas direcciones que las anteriores. La puerta A ha sido configurada como una puerta de entrada y la B como una puerta de salida. Los datos entran desde la puerta A y los mismos datos san por la puerta B. Este proceso se repite continuamente. De aquí que sí, por ejemplo, se conectará a la puerta A un grupo de ocho conmutadores y un grupo de 8 LEDs a la puerta B, los LEDs representarían continuamente los estados de los correspondientes ocho conmutadores.

Page 43: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

4343

Ejercicio NEjercicio Nºº2 de programa Salida Digital2 de programa Salida DigitalComo un ejemplo adicional el programa de la figura inicializa las puertas A, B y C como puertas de salida y sale el número 24937 en forma BCD. Las tres puertas son usadas como se indica a continuación:

Page 44: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

4444

Ejercicio NEjercicio Nºº3 de programa Control del apret3 de programa Control del apretóón de manos (Handshake)n de manos (Handshake)Este ejemplo de programa se describe para ilustrar cómo las salidas digitales (y las entradas) pueden ser controladas por medio de un apretón de manos (handshake). Esto es particularmente útil, por ejemplo, cuando el dispositivo receptor no puede aceptar datos a la misma velocidad que puede producirlos el microcomputador o inversamente, si un dispositivo produce nuevos datos a una velocidad inferior de la que puede absorberlos el microprocesador. El programa usa las líneas de control de la puerta C en el apretón de manos, para que salgan 16 valores de una tabla de memoria, arrancando en la dirección 2000(hex), hacia un dispositivo externo conectado con la puerta A. La figura es un diagrama esquemático de su disposición.

Page 45: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

4545

Admitiendo que la puerta C ha sido inicializada para operar en el modo 3 (modo handshake), después de que los datos hayan salido hacia la puerta A, el bit 1 de la puerta C se dirigirá automáticamente al 1 lógico, indicando al dispositivo externo que hay disponibles nuevos datos (DAV). El dispositivo responderá entonces por la puesta a punto del bit 2 de la puerta C en 0 lógico (DACC), indicando que han sido leídos los datos que salen ordinariamente por la puerta A. Tenga en cuenta que para el Intel 8155 esta señal DACC es activa en el nivel bajo (es decir, en 0 lógico indica dato aceptado).Puesto que hacia la puerta A no debe salir un nuevo valor del microprocesador hasta que los valores previos hayan sido leídos, el programa debe ejecutar un lazo de espera hasta que se reciba la señal DACC. El 8155, por ello, contiene un registro separado de “status” que incluye un cierto número de bits de “status” asociados con las transferencias de datos a las puertas A y B. Como ejemplo el bit 1 de este registro es energizado cuando salen datos hacia la puerta A “buffer” de salida lleno y éste es borrado únicamente cuando la señal del DACC hacia la entrada para la puerta A toma el nivel bajo.

Page 46: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

4646

Diagrama de flujo del control del handshake

Page 47: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

4747

Así, después de que haya salido un valor de datos del microprocesador hacia la puerta A, el programa debe hacer un lazo hasta que el bit 1 del registro “status” alcance de nuevo el valor 0 antes de que salga un nuevo valor. El “status” que se necesita para el PI/O (dirección 20(hex)), es

Debería destacarse que los contenidos del registro de “status” son examinados también usando la dirección 20(hex).

Page 48: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

4848

Programa de control del “handshake”

Page 49: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

4949

6.6.6.6.-- EjerciciosEjercicios1.- Escriba un programa en lenguaje ensamblador para inicializar las puertas A, B y C como puertas de entrada y lea un byte de datos desde cada una de las puertas.

Page 50: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

5050

22.- Escriba un programa en lenguaje ensamblador para inicializar primero la puerta A como una puerta de entrada y la B como una de salida y después para introducir datos desde la puerta A, complemente los datos y hágalos salir (los resultados) por la puerta B.

Page 51: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

5151

3.- Escriba un programa en lenguaje ensamblador para inicializar las puertas A y C como entradas y a B como de salida. El programa introduciría los datos en las puertas A y C, se sumaría los valores y los haría salir por la B.

Page 52: Unidad N°5 Control de Transferencia - udec.clgspano/Lab de Microprocesadores IPVG 2008/Unidad 5… · Unidad N°5 Control de Transferencia ... 333 3 6 6 6 4 4 4 4 4 464 6 10 10 10

5252

FINFIN