CONVOCATORIA Ordinaria

advertisement
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
Descargar