Download Conv. jun. - ¡Bienvenido a paloalto.unileon.es!

Document related concepts
no text concepts found
Transcript
UNIVERSIDAD DE LEON
DEPT IEE
EXAMEN 4 DE MÁQUINAS ELECTRONICAS
21 de Junio de 2003
Jose
Maria
Nombre:______________
Firma
Apellidos:_____________
no
verificad
DNI:__________________
a
Firma:
NO SE PUBLICA LA SOLUCION DE LAS
PREGUNTAS DE TIPO TEST
1.
Tomando como base el siguiente código, realizad un programa que guarde en
edx la suma acumulada de todos sus elementos cambiados de signo. El último
elemento es el 0 que aparece al final.
[1]
.model small
.386
.data
array sword 23, 45, 67, 89, 90, 0
.code
BYTESDATO equ sizeof sword
N
equ 32
.code
.startup
xor edx, edx
xor si, si
sig :
mov ax, array[si]
cmp ax, 0
jz fin
add edx, ax
add si, BYTESDATO
j sig
fin:
end
1
Firmado
digitalmente
por Jose Maria
Nombre de
reconocimient
o (DN):
cn=Jose
Maria,
o=Foces
Moran,
ou=self, c=ES
Fecha:
2003.07.16
12:11:38 +
02'00'
2.
El siguiente código intenta encontrar el mínimo de los elementos del array,
pero, contiene errores. Tu tarea consiste en encontrar los posibles errores que
aparezcan en las instrucciones en cursiva y escribir la instrucción correcta al
lado. No se pueden corregir mas que las líneas en cursiva que tengan algún error.
Pista: A pesar de que estamos suponiendo que este código se ejecuta en modo
real, te recuerdo que en este modo es legítimo emplear registros de 32 bits.
[1]
.model small
.386
.data
array dword ffff0000h, 9687caah, 10, -3
n equ 4
fuera_del_array equ n * 2
.code
.startup
Corrección propuesta
xor si, si
mov ax, [array+si]
busqueda:cmp ax, [array+si]
jl sig
mov ax, [array+si]
sig: add si, 2
cmp si, fuera_del_array
jb busqueda
.exit 0
end
3.
mov eax, [array+si]
cmp eax, [array+si]
mov eax, [array+si]
add si, 4
Realizad un programa que configure el controlador de interrupciones (ICU)
de un microprocesador i386ex para que acepte las interrupciones procedentes de
los canales 0 y 7 además de aquellas que ya pudiera tener habilitadas. Para
indicarle al ICU que acepte interrupciones de un determinado canal es necesario
escribir un cero en la posición de bit de ese canal. Recuerda que un ICU tiene 8
canales de interrupción. La dirección de puerto donde está expuesto el registro
de habilitación de interrupciones del ICU es la dirección 21h.
[1]
in al, 21h
and al, 01111110b
out 21h, al
4.
Una rutina de servicio de interrupción no contiene la instrucción sti que se
emplea para permitir al microprocesador poder dar servicio a otras
interrupciones de mayor prioridad que la actual, a pesar de ello, se ha
comprobado que el sistema sigue funcionando correctamente del sistema. Dad
una explicación plausible de este hecho.
[1]
2
Cuando el procesador acepta la interrupción intr, salva el contexto dinámico en la
pila (FLAGS, CS e IP) y, el bit IE de FLAGS en ese instante está puesto a 1 ya que
el procesador ha aceptado la interrupción. A continuación, el procesador
deshabilita las interrupciones y se ejecuta la ISR.
En el enunciado se menciona que el sistema sigue estable a pesar de no re-habilitar
las interrupciones (sti), por tanto, podemos concluir que la ISR se ejecuta en un
tiempo que es corto en comparación con el intervalo mínimo de ocurrencia de
eventos significativos en el sistema y, como la última instrucción ejecutada en la
ISR es una instrucción iret, se restaura el contexto dinámico original el cual sí tenía
activado el bit IE de FLAGS.
5.
El gráfico que acompaña a esta pregunta, representa un componente de
memoria estática. Responded a las siguientes cuestiones:
[1]
51C69 SRAM
Modelo funcional
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
l/O1
l/O2
l/O3
l/O4
WE CS
Este chip de memoria contiene:
1 4096 bytes
1 4096 nibbles (Objetos de 4 bits de ancho)
1 Otra cantidad de nibbles
1 Otra cantidad de bytes
Este chip de memoria es de sólo lectura:
1 Cierto
1 Falso
¿Sería razonable conectar la línea A1 del bus de
direcciones del 386Ex al pin A1 de este chip de memoria?
1 Cierto
1 Falso
En un sistema de memoria de 4096 words realizado a base
de chips como el de la figura, el pin I/O1 podría
conectarse a una cualquiera de las 4 lineas del ex
siguientes: (Sólo una es cierta)
1 Data Bus[0/4/8/12]
1 Data bus[1/5/9/13]
1 Data Bus[2/6/10/14]
1 Data Bus[3/7/11/15]
3
6.
En total ¿Cuántos ciclos de bus se derivan de la ejecución de la instrucción
siguiente? Señala la respuesta correcta:
[1]
inc dword ptr [bp]
6
4
2
1
Con la información provista no se puede decidir el número de
ciclos.
1 No se lleva a cabo ningún ciclo de bus puesto que tanto el
operando fuente y destino es el registro bp.
1
1
1
1
1
7.
Empleando un analizador lógico para verificar el funcionamiento de un
sistema microprocesador hemos comprobado una secuencia de ciclos de bus que
presenta las siguientes características:
[2]
Ciclo de bus nº 1
m/#io
d/#c
w/#r
#lock
Ciclo de bus nº 2, 3, 4 , 5
#ads no se ha asertado al comienzo ni
#ready al final
Ciclo de bus nº 6
m/#io
d/#c
w/#r
#lock
Bus de datos
0
0
0
0
0
0
0
0
12
Señala aquellas afirmaciones que consideras que son ciertas:
1 Los ciclos 1 y 6 son ilegales
1 Se trata de una secuencia de ciclos iack-idle-iack
1 El ciclo nº 2 en su bus de datos contiene un número del vector
de interrupción.
1 Es una secuencia de ciclos de bus de shutdown
1 Con la información provista no se puede decidir acerca del uso
de estos seis ciclos de bus.
1 No es posible que en los ciclos 2,3,4 y 5, no se indique su inicio a
través de la aserción de #ads
1 Cada uno de los ciclos 2,3,4 y 5 sólo dura 1 estado de bus
1 En la configuración del ICU estudiada en el laboratorio, el canal
de interrupción que ha provocado estos 3 ciclos es el nº 4.
1 (CONTINÚA EN LA PÁGINA SIGUIENTE)
4
1 En estos tres ciclos, el procesador está guardando el contexto
dinámico en la pila
1 El 12 que aparece en el bus de datos en el segundo ciclo, es un
código de status que escribe el procesador en el bus para que lo
acepte el ICU.
1 El 12 que aparece en el bus de datos en el segundo ciclo es
aceptado por el i386ex al final del ciclo de bus nº 6.
8.
[ 2 ] La siguiente tabla contiene los estados de ciertas líneas del bus del i386ex en
el momento en el que se activa la línea #ads indicando el inicio de un ciclo de
bus. Señalad cuales de las cuestiones listadas después de la tabla son ciertas.
Línea/s del bus del EX
m/#io
d/#c
w/#r
#lock
Bus de datos
Bus de direcciones
#ble
#bhe
Estado/s
1
1
1
0
0xff10
10
0
1
1 Sí se puede asegurar que este ciclo de bus forma parte de una
secuencia de ciclos back-to-back(Seguidos).
1 En este ciclo de bus se transfiere la palabra completa 0xff10 a
través del bus de datos.
1 En este ciclo de bus se transfiere el byte 0x10 a través de la
ruta baja del bus de datos y, el contenido de la ruta alta es
inválido.
1 En este ciclo de bus se está accediendo al espacio de
entradas/salidas del EX.
1 En este ciclo de bus se está leyendo una instrucción.
1 A partir de la información provista, ¿Se puede determinar cuál
es el registro fuente del dato que se transfiere a través del bus
en este ciclo?
5