CONVOCATORIA Ordinaria Miércoles 13 de Febrero de 2002 1.- ¿Qué método de arbitraje se utiliza en el bus 8086? Descríbalo tanto en el modo máximo como en el modo mínimo (qué otros componentes del sistema pueden disputarle el bus al procesador y cómo se lo concede éste). (1pto) 2.- Qué utilidad tiene la señal BHE en el 8086. (1pto) 3.- Explique qué función realiza un controlador de DMA (1pto) 4.- Diseñe un programa ensamblador que escriba los cuatro bits más significativos de la dirección física de memoria representada por Etiqueta en la dirección de entrada/salida 56h (2ptos) DATA SEGMENT Etiqueta db 345dup(?) ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA ... ENDS 5.- Explique el APIC y descríbalo resaltando aquellos aspectos en que se distingue del 8259 (1pto) 6.- Cuanta memoria se necesita para almacenar una pantalla de caracteres de 80x24, muestre el resultado en Kbytes en un controlador EGA (1pto) 7.- Escriba un algoritmo y a continuación una rutina en ensamblador que, a partir del número de cluster (en DX) obtenga de la FAT la entrada correspondiente. Puede suponer que la FAT se encuentra en memoria a partir de la etiqueta ‘fatlabel’ (3ptos) 1.- ¿Qué método de arbitraje se utiliza en el bus 8086? Descríbalo tanto en el modo máximo como en el modo mínimo (qué otros componentes del sistema pueden disputarle el bus al procesador y cómo se lo concede éste). (1pto) El método de arbitraje que utiliza es centralizado y el árbitro siempre es el procesador. En el modo mínimo, el único otro dispositivo con capacidad de maestro del bus es el controlador de DMA y el procesador dispone de una entrada específica de petición de DMA, HOLD, por medio de la cual el controlador le solicita el bus al procesador. Al final de cada 4º periodo de una transacción (o bien en periodos inactivos del bus), el procesador comprueba si esta línea está activa y si no tiene ninguna transacción que realizar le cede el bus al controlador indicándoselo por medio de una línea de respuesta, HLDA. El bus permanece bajo el dominio del controlador mientras la línea de petición esté activa. En el modo máximo pueden haber otros dos maestros del bus aparte del procesador, en principio un coprocesador matemático y un coprocesador de entrada/salida. Cada uno de éstos tiene asignada una entrada de petición del bus en el procesador, RQ#/GT0#, RQ#/GT1#, y mediante esta línea le solicitan el bus al procesador. Usando esta misma línea el procesador les responde concediéndole el bus y nuevamente usando esta línea el dispositivo le indica al procesador el momento en el que libera el mismo. Si ambas líneas de petición se activaran simultáneamente, la primera en ser atendida sería la RQ#/GT0#. 2.- Qué utilidad tiene la señal BHE en el 8086. (1pto) La línea BHE, activa a nivel bajo, indica que está activo el byte superior del bus de datos en la transacción en curso. Esto va a ocurrir en dos posibles circunstancias: que se esté accediendo a un byte con dirección impar o que se esté accediendo a una palabra. El mismo papel cumple la línea A0 del bus de direcciones con el byte inferior del bus de datos. En esta ocasión A0 se activa cuando se está accediendo a un byte con dirección par o bien a una palabra. 3.- Explique qué función realiza un controlador de DMA (1pto) El controlador DMA cumple la función de trasladar datos entre la memoria y los dispositivos de entrada salida sin la intervención directa del procesador. El procesador se limita a programar el controlador para que realice la tarea y luego es el controlador el que, ante una petición del dispositivo, solicita el bus al procesador y realiza el traslado de los datos. El traslado de datos entre un dispositivo y la memoria generalmente no requiere de la intervención directa del procesador porque no implica una modificación de los datos, sino un mero movimiento de éstos. La ventaja de esta acción es que el procesador queda liberado de una tarea que no tiene repercusión efectiva en la computación de tareas de usuario y puede dedicar mayor parte de su tiempo a éste 4.- Diseñe un programa ensamblador que escriba los cuatro bits más significativos de la dirección física de memoria representada por Etiqueta en la dirección de entrada/salida 56h (2ptos) El formato de una dirección 8086 es Segmento:Desplazamiento para obtener la dirección efectiva hay que desplazar el segmento 4 bits a la izquierda y sumarle el desplazamiento. Con ello obtenemos una dirección de 20 bits. Los cuatro bits más significativos son los bits (19,18,17,16). Esta operación nos permite aislar la parte de la dirección de memoria que debemos enviar al controlador de DMA como dirección de comienzo o destino de una transacción (sólo admite 16 bits), de la parte de dirección que debemos enviar al latch de página de DMA para que la dirección quede completamente especificada. DATA SEGMENT Etiqueta db 345dup(?) ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA MOV AX, DATA MOV DS, AX MOV ES, AX ... MOV AX, DS AND AX, 0F000h ; aíslo cuatro bits más significativos registro de segmento SHR AX,12d ; traslado a parte baja del registro MOV CX, DS SHL CX, 4 ;Desplazo segmento 4 bits izquierda MOV BX, OFFSET Etiqueta ; obtengo desplazamiento ADD CX,BX ADC AX, 0 OUT 56h, AL ... ; Sumo segmento*16+desplazamiento ; Posible acarreo de suma anterior a 4 bits + significativos ; Envío a dirección de puerto ENDS 5.- Explique el APIC y descríbalo resaltando aquellos aspectos en que se distingue del 8259 (1pto) Aspectos en los que se distingue del 8259: Número de interrupciones (mayor) Programación de las interrupciones (independientemente una de otra tanto en lo que respecta al modo de dispara como al vector asignado y el modo en como se hace llegar al procesador) La manera mediante la cual hace llegar las interrupciones al procesador (mediante un bus local conectado al LocalAPIC) 6.- Cuanta memoria se necesita para almacenar una pantalla de caracteres de 80x24, muestre el resultado en Kbytes en un controlador EGA (1pto) El número de caracteres que hay que almacenar es 80*24=1920, pero por cada carácter hay que almacenar el código asccii del mismo más un byte de modo en el que se indican los colores en que aparecerá dibujado el carácter (fondo, dibujo y otros), por lo tanto el número de bytes necesarios es 1920*2=3840. Para representarlo en Kbytes debemos dividir esta cifra entre 1024: 3840/1024=3,75 que redondeando se convierten en 4Kbytes 7.- Escriba un algoritmo y a continuación una rutina en ensamblador que, a partir del número de cluster (en DX) obtenga de la FAT la entrada correspondiente. Puede suponer que la FAT se encuentra en memoria a partir de la etiqueta ‘fatlabel’ (3ptos) Algoritmo: 1.- Para obtener el desplazamiento con respecto al comienzo de la fat a.- multiplico el índice de la entrada por 12 b.- divido el resultado anterior entre 8 (sea el cociente: C, y el resto R) 2.- Si R es distinto de cero, (si no ir a 3 a.- Obtener el byte C b.- Desplazar 4 bits a la derecha, sea X c.- obtener el byte C+1 d.- Desplazar 4 bits a la izquierda, sea Y e.- Sumar Y+X Devolver el resultado 3.- Si R es igual a cero, si no salir a.- Obtener el byte C b.- Desplazar 4 bits a la izquierda, sea Y c.- Obtener el byte C+1 d.- Anular los cuatro bit más significativos, sea X e.- Sumar Y+X Devolver el resultado. Proc sig_ent ; entrada FAT en DX PUSH AX PUSH BX PUSH CX (Tengo que hacer la operación (dx*12)/8 que es equivalente a (dx*3)/2. dx*3=dx*(2+1)=dx*2+dx. Multiplicar por dos es un desplazamiento a la izquierda y dividir por dos es un desplazamiento a la derecha.)* MOV AX, DX SHL DX,1 ADD DX,AX ; en dx=dx*3 (Antes de hacer la división hay que comprobar que sea exacta o no. Si el bit menos significativo está a uno, el numero es impar y la división no será exacta. El caso contrario indica que el numero es par y la división será exacta.) MOV AX,1d AND AX, DX JZ Par Impar: SHR DX,1 MOV BX, DX MOV DX, fatlabel[BX]; traigo dos bytes consecutivos de memoria SHR DX, 4 ; los 4 bits – significativos son de la entrada ant. JMP Devolver Par SHR DX,1 MOV BX,DX MOV DX,fatlabel[BX] AND DX,0FFFh ; los 4 bits + significativos son de la entrada post. Devolver: POP CX POP BX POP AX RET ENDP