1ª Semana-2PP–JUN03 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA

Document Sample
1ª Semana-2PP–JUN03 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Powered By Docstoc
					                                                                            1ª Semana-2PP–JUN03

UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA
E.T.S. INGENIEROS INDUSTRIALES                       CODIGO CARRERA: 10
COMPUTADORES I                                   CODIGO ASIGNATURA: 514
Material auxiliar: Calculadora no programable
Segunda PRUEBA PERSONAL                                    CURSO: 2002/03
Fecha: Viernes 30-Mayo-2003               Hora: 16            Duración: 2h

PROBLEMA ( 4 puntos)


Realice un programa en lenguaje ensamblador MC68000 o IEEE 694, que compare dos números A
y B, y que almacene el de mayor valor absoluto de los dos en otra variable C, en el supuesto que A
y B ( y por lo tanto C) sean números reales representados en formato de coma flotante del estándar
IEEE754 de simple precisión (32 bit). Se recuerda que en este formato el número se representa en el
orden signo-exponente-mantisa, que el exponente tiene ocho bits y se representa en exceso a 127 y la
mantisa es fraccionaria normalizada, sin almacenar el primer bit que es implícito e igual a 1. Realice
primero un flujograma y comente tanto las instrucciones como las pseudoinstrucciones que utilice.




CUESTIONES (1,2 puntos cada una)


1. Fundamentos del acceso directo a memoria. (Capítulo 8)

2. Características más importantes de los buses de tipo 1, 2 y 3.(Capítulo 10)

3. Clasificación de computadores con paralelismo explícito.(Capítulo 11)

4. Organización de la Tabla de Asignación de Ficheros (FAT) en el sistema operativo MS-
DOS.(Capítulo 12)

5. Criterios de asignación de tiempos de UCP en un sistema operativo multiusuario.( Capítulo 15)
                                                                          2ª Semana-2PP–JUN03

UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA
E.T.S. INGENIEROS INDUSTRIALES                       CODIGO CARRERA: 10
COMPUTADORES I                                   CODIGO ASIGNATURA: 514
Material auxiliar: Calculadora no programable
Segunda PRUEBA PERSONAL                                     CURSO: 2002/03
Fecha: Viernes 13-Junio-2003              Hora: 16            Duración: 2h


PROBLEMA ( 4 puntos)


Realizar una función que recibe como parámetros la dirección inicial (con tamaño de 16 bits) de un
vector de octetos y un valor de 8 bits que denominaremos VALOR. Ambos parámetros los recibe
en dos registros de la CPU. Esta función busca dentro del vector de octetos un elemento del mismo
que tenga el valor especificado por el octeto VALOR. En el caso de no encontrar ningún octeto
cuyo contenido sea VALOR , la búsqueda finalizará cuando se hayan inspeccionado 256 octetos
del vector. La función devuelve en un registro de la CPU distinto de los que contienen los
parámetros, el índice (posición dentro del vector, la primera posición tiene índice 0), del primer
elemento del vector que sea igual a VALOR ó el valor FFFF en hexadecimal si no se ha
encontrado ninguno. Realice primero un flujograma. Codifique el programa en lenguaje
ensamblador MC68000 o IEEE 694.



CUESTIONES (1,2 puntos cada una)


1. Concepto de interrupción. Secuencia de la interrupción. (Capítulo 8)

2. Buses. Grado de paralelismo y temporización de los buses. (Capítulo 10)

3. Memoria Virtual. Concepto. Traducción de direcciones virtuales a físicas. Paginación. (Capítulo
11)

4. Programa montador. (Capítulo 14)

5. Diferenciar los diferentes estados en que un sistema operativo multiusuario puede mantener a un
proceso.( Capítulo 15)
PRIMERA SEMANA
Al tener el formato IEEE754 32 bits, cada número A, B y C, se almacena en 4 bytes consecutivos
y suponiendo que el bit más significativo del primer byte es el signo, el almacenamiento en
memoria de los números A, B, y C sería:

s             e7           e6             e5         e4            e3           e2            e1
e0            m-1          m-2            m-3        m-4           m-5          m-6           m-7
m-8           m-9          m-10           m-11       m-12          m-13         m-14          m-15
m-16          m-17         m-18           m-19       m-20          m-21         m-22          m-23

Además si suponemos que el primer byte ocupa la posición de memoria más baja podemos
referirnos por ejemplo con respecto al número A, al signo y los 7 primeros bits del exponente en la
dirección de memoria A, el bit menos significativo del exponente y los 7 bits más significativos de
la mantisa en la dirección A+1 y el resto de bits de la mantisa en las direcciones de memoria A+2 y
A+3. Por otro lado la relación entre un número X y su representación en coma flotante es:

               X = (-1) S•⋅1,M•2E−127

Al comparar el valor absoluto no hay que tener en cuenta el bit de signo, por lo que A > B si
(EA > EB) ó (EA = EB y MA > MB). Al disponer el MC68000 registros de datos de 32 bits, podemos
almacenar cada uno de los números a comparar en dos registros de datos por ejemplo D0 y D1. En
el byte más significativo de estos registros quedará almacenado s y e7 ..e1 , en el siguiente byte ..e0 y
los 7 primeros bits de la mantisa, es decir en el mismo orden que el representado anteriormente. Si
se ponemos el signo en ambos registros a 0 , en los dos registros tendremos el valor absoluto de
ambos números, si comparamos ambos registros mediante la instrucción CMP que realiza la resta
D0 - D1, si D0 > D1 entonces la resta es positiva y no hay acarreo en la operación. En caso
contrario D0 <= D1.

; COMPARA DOS NÚMEROS NA Y NB EN FORMATO IEEE 754 Y ALMACENA EL DE MAYOR
; VALOR ABSOLUTO EN NC
; D0 ALMACENA VALOR ABSOLUTO DE NA Y D1 EL VALOR ABSOLUTO DE NB
; RUTINA ESCRITA EN ENSAMBLADOR DEL MC68000

;   .L ->   SE UTILIZA LOS REGISTROS COMPLETOS 32 BITS
;   .W ->   SE UTILIZA LOS 2 BYTES MENOS SIGNIFICATIVOS
;   .B ->   SE UTILIZAN LOS 8 BITS MENOS SIGNIFICATIVOS DE LOS REGISTROS
;   (BYTE   MENOS SIGNIFICATIVO) DE LOS 32 QUE TIENE LOS REGISTROS DE MC68000

                     ORG          $1000     ; ZONA DE CODIGO

                     ; INICIALIZACIONES

                     MOVE.L NA,D0         ; CARGA NA EN D0
                     MOVE.L NB,D1         ; CARGA NB EN D1

                     ANDI.L #7FFFFFFF,D0         ; PRESCINDE DEL SIGNO
                     ANDI.L #7FFFFFFF,D1         ; PRESCINDE DEL SIGNO


COMPARA:
                     CMP.L D1,D0; REALIZA D0-D1 Y DEFINE BIESTABLES ESTADO
                     BNC AMAYOR    ; SI NO HAY ACARREO D0 MAYOR
                     MOVE.L NB,D0 ; VALOR ABSOLUTO DE NB ES IGUAL O MAYOR
               BRA ALMAC

AMAYOR:       MOVE.L NA,D0

ALMAC:         MOVE.L D0,NC    ; ALMACENA RESULTADO EN NC

              RTS


;*************** ZONA DE DATOS ******************
DATOS           ORG    $1500
NA         DS.B     $4       ; RESERVA 4 BYTES PARA NÚMERO A
NB         DS.B     $4       ; RESERVA 4 BYTES PARA NÚMERO B
NC         DS.B     $4       ; RESERVA 4 BYTES PARA NÚMERO C



                END




                                              Almacenar A y B en
                                                  registros
                                                   A -> D0
                                                   B -> D1




                                          Prescindir de signo en
                                                DO y D1




                           B -> C    No           D0 > D1 ?




                                                     Sí


                                                   A -> C




                                    Retorna
SEGUNDA SEMANA
;   SE SUPONE QUE EN EL REGISTRO DE DIRECCIONES A0.W SE RECIBE LA DIRECCIÓN
;   INICIAL DEL VECTOR DONDE HAY QUE BUSCAR VALOR QUE SE SUPONE SE RECIBE EN
;   EL REGISTRO D0.B
;   D1 EN FORMATO PALABRA SE UTILIZA
;   PARA DEVOLVER RESULTADO DE LA FUNCION, ES DECIR DEVUELVE EL INDICE DEL
;   PRIMER ELEMENTO QUE ES IGUAL A VALOR 0 FFFF SI NO SE ENCUENTRA VALOR DESPUÉS
;   DE 256 COMPARACIONES
;   RUTINA ESCRITA EN ENSAMBLADOR DEL MC68000

;   .L ->   SE UTILIZA LOS REGISTROS COMPLETOS 32 BITS
;   .W ->   SE UTILIZA LOS 2 BYTES MENOS SIGNIFICATIVOS
;   .B ->   SE UTILIZAN LOS 8 BITS MENOS SIGNIFICATIVOS DE LOS REGISTROS
;   (BYTE   MENOS SIGNIFICATIVO) DE LOS 32 QUE TIENE LOS REGISTROS DE MC68000

                    ORG     $1000     ; ZONA DE CODIGO

                    ; INICIALIZACIONES


                    MOVE.L #0,D1    ; EN D1.W SE DEVUELVE RESULTADO DE LA FUNCION



                    ; BUCLE PRINCIPAL

COMPARA:            MOVE.B (A0)+,D2 ; CARGA ELEMENTO VECTOR EN D2.B
                                    ; E INCREMENTA PUNTERO A0 A SIGUIENTE BYTE
                    CMP.B D2,D0     ; COMPARA CON VALOR QUE ESTÁ EN D0.B
                    BEQ IGUAL       ; SON IGUALES, SAL BUCLE (Z = 1)

                    ; CONTROL BUCLE
                    ADD.W #1,D1     ; INCREMENTA INDICE
                    CMP.W #256,D1 ; COMPARADOS 256 BYTES ?
                    BNE COMPARA     ; NO, SIGUE COMPARANDO

                    ; FIN FUNCION CON VALOR NO ENCONTRADO
                    MOVE.W #$FFFF,D1
                    RTS              ; VUELVE CON D1 = $FFFF

                    ; FIN FUNCION CON VALOR ENCONTRADO
IGUAL:              RTS             ; VUELVE CON EL VALOR DEL INDICE QUE TENGA D1


                    END




FLUJOGRAMA 2ª SEMANA
          Inicializar
     Contador octetos D1




        Comparar byte
      apuntado por A0 y
       DO.B (VALOR)




        Bytes iguales?       SI

NO



              Sí



                                  Devuelve contador
     Incrementar contador             bytes, D1
     bytes D1 y puntero A0




          D1 = 256?




              Sí




       Devuelve $FFFF

				
DOCUMENT INFO
Shared By:
Categories:
Stats:
views:12
posted:3/4/2010
language:Spanish
pages:6