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