(1o INGENIERÍA INFORMÁTICA) ESTRUCTURA DE COMPUTADORES BOLETÍN EC3 (07/08) MICROPROCESADOR MC68000 Problema 1.- Considere la siguiente situación inicial, donde se indica en hexadecimal el contenido de ciertos registros y direcciones de memoria: Dirección Contenido Registro Contenido 800 08 A0 0000 0802 801 03 A1 0000 0804 802 01 D0 0000 0002 803 00 D1 FFFF FFFF Indique el valor que tendrá el registro D1 después de ejecutar la instrucción MOVE de forma independiente en cada uno de los casos siguientes: a) MOVE.B D0,D1 b) MOVE.W (A0)+,D1 c) MOVE.L -(A1),D1 d) MOVE.B -3(A1,D0.W),D1 e) MOVE.L -2(A0),D1 Problema 2.- Un ordenador tiene las siguientes características: - Memoria de 64 Kpalabras de 8 bits - 8 registros internos de 16 bits - Instrucciones de longitud fija de 32 bits con código de operación de 10 ó 13 bits. El C.O. indica el modo de direccionamiento de los operandos. - Las constantes se especifican con 8 bits. Se quiere diseñar una instrucción de tipo MOVE Fuente,Destino utilizando distintos modos de direccionamiento para especificar sus operandos. Indique, explicando las causas, para cuáles de los siguientes casos no es posible diseñar la instrucción: a) Fuente: directo a memoria Destino: inmediato b) Fuente: indirecto a registro con postincremento Destino: directo a memoria c) Fuente: directo a memoria Destino: directo a memoria d) Fuente: inmediato Destino: directo a registro Problema 3.- Para cada una de las siguientes instrucciones, obtenga el código máquina y describa la operación que realiza. Indique también los registros internos y palabras de memoria que intervienen, proponga para ellos unos valores iniciales concretos y determine qué valores alcanzarán finalmente. (Si lo necesita, en todos los casos suponga que se inicia un ciclo de búsqueda con (PC)=$123456.) a) MOVE.B $5678,$ABCDEF b) MOVE.W $5678,$ABCDEF c) MOVE.L $5678,$ABCDEF d) MOVE.L A1,(A0) e) MOVE.L (A1),(A0)+ f) MOVE.L -(A1),(A0)+ Problema 4.- Para cada una de las siguientes instrucciones, obtenga el código máquina y describa la operación que realiza. Indique también los registros internos y palabras de memoria que intervienen, proponga para ellos unos valores iniciales concretos y determine qué valores alcanzarán finalmente. (Si lo necesita, en todos los casos suponga que se inicia un ciclo de búsqueda con (PC)=$123456.) a) MOVE.B -(A1),D0 b) MOVE.B @43(A1),D0 c) MOVE.B #43,D0 d) MOVE.W @43(A1),D0 e) MOVE.B -15(PC),D0 f) MOVE.W -15(PC),D0 Problema 5.- Para cada una de las siguientes instrucciones, obtenga el código máquina y describa la operación que realiza. Indique también los registros internos y palabras de memoria que intervienen, proponga para ellos unos valores iniciales concretos y determine qué valores alcanzarán finalmente. (Si lo necesita, en todos los casos suponga que se inicia un ciclo de búsqueda con (PC)=$123456.) a) MOVE.W 26(A1),50(A0,D0.W) b) MOVE.W 26(A1),-50(A0,D0.W) c) MOVE.B 26(A1),50(A0,D0.W) d) MOVE.B 26(A1),50(A0,D0.L) e) MOVE.L 26(A1),50(A0,D0.L) f) MOVE.L 26(A1),50(A0,D0.B) Pág. 1 (1o INGENIERÍA INFORMÁTICA) ESTRUCTURA DE COMPUTADORES BOLETÍN EC3 (07/08) MICROPROCESADOR MC68000 Problema 6.- Se desea mover la palabra larga de la dirección $000510 a la dirección $00BBCC. Indique las distintas formas de hacerlo con el MC68000 especificando, en casos concretos, los contenidos que se requieran. Problema 7.- Identifique el formato, especifique el código máquina e indique la operación que realiza cada una de las siguientes instrucciones: a) MOVEQ #5,D2 b) EXG D3,A4 c) ADD.L D3,-30(A4,A0.W) d) ADD.L -30(A4,A0.W),D3 Problema 8.- Repita el problema anterior para: a) CLR.W $89AB¿y CLR.W $89AA? c) BNE -$12 b) SUB.L (A3),D3 d) RTS Problema 9.- Inicialmente, el contenido del registro D0 es 00000003. Indique cuál será su contenido después de ejecutar la siguiente secuencia de instrucciones: MOVE.L #$FFFF,$0F3A MOVE.L D0,D1 MOVE.L #$0F3A,A0 MOVE.L (A0)+,D0 ADD.L D1,D0 Problema 10.-Partiendo de los valores iniciales que se dan a continuación, indique los valores que tendrán las posiciones de memoria después de ejecutar la siguiente secuencia de instrucciones: Registro Valor Dirección Valor D0 0000 0002 0000 0F3A 00 A0 0000 0F3B 0000 0F3B 00 A1 0000 0F3A 0000 0F3C 00 0000 0F3D 00 0000 0F3E 00 0000 0F3F 00 0000 0F40 00 0000 0F41 00 0000 0F42 00 MOVE.L #$0F3F,$0F3A MOVE.B #2,(A1) MOVE.B D0,4(A0) MOVE.W $0F3C,3(A0,D0.W) Problema 11.- Dados los siguientes valores iniciales de registros y memoria, indique los resultados obtenidos tras ejecutar el siguiente fragmento de código: Registro Valor Dirección Valor A0 0000 0004 0000 0008 1D D2 0123 ABCD 0000 0009 1B D3 000C 0002 0000 000A 1C 0000 000B 14 0000 000C 0C 0000 000D 0A 0000 000E 0B 0000 000F 03 MOVE.B #$1A,$B MOVE.W $8,$C MOVE.W D2,8(A0,D3.W) Pág. 2 (1o INGENIERÍA INFORMÁTICA) ESTRUCTURA DE COMPUTADORES BOLETÍN EC3 (07/08) MICROPROCESADOR MC68000 Problema 12.-Con las instrucciones del 68000 escriba el programa que implemente la instrucción de alto nivel: FOR i := ValorInicial TO ValorFinal DO Cálculo1 Siguiente Instrucción NOTA: Cálculo1 es una secuencia de operaciones cualesquiera que no es necesario programar. ValorInicial y ValorFinal son dos variables con los límites del bucle FOR. Problema 13.-La tabla representa un trozo de la memoria de un MC68000. Si actualmente el microprocesador tiene (PC) = $2000 y va a comenzar un ciclo de búsqueda, indique qué operación realiza hasta llegar al punto de BREAK. ¿Qué ocurriría si inicialmente el contenido de M($2018) = $1005? ¿Y si M($201A) = $0064? (PC) → MEM $2000 $2002 $2004 $2006 $2008 $200A $200C 4279 0000 2018 3039 0000 201A D179 MEM $200E $2010 $2012 $2014 $2016 $2018 $201A 0000 2018 5340 66F6 4848 5050 0019 BREAK Problema 14.-Indique los valores que tomarían los pines del MC68000 durante la ejecución de la instrucción MOVE.B $FFFF07,D1. El contenido de la posición de memoria $FFFF07 es $0A. Indique, además, qué pines activa el procesador y cuáles la memoria. Problema 15.-Indique qué líneas activa el MC68000 al ejecutar la instrucción (se supone que la instrucción ya ha sido traída a la CPU) MOVE.W #7,$AF34. Idem para MOVE.B #7,D0. Problema 16.-Cuando se inicializa el MC68000 hace lo siguiente: lee el valor de la entrada 0 de la tabla de excepciones, lo guarda en el registro SSP (puntero de pila del supervisor), lee el valor de la entrada 1 de la tabla de vectores de excepción, lo guarda en el PC y comienza a ejecutar instrucciones. La situación inicial es la siguiente: el contenido del vector 0 es $FFFFFE, y el vector 1 apunta a la dirección $000400, cuyo contenido ($3F3C0005) corresponde al código de la instrucción MOVE.W #5,-(SP). Indique los distintos valores que irán tomando en cada ciclo de acceso a memoria las líneas del bus de direcciones, el bus de datos y la señal R/W del MC68000 desde que se pulsa el botón de RESET hasta que termina de ejecutarse dicha instrucción. Problema 17.-Determinado procesador ejecuta una instrucción cada dos microsegundos. Se dispone, además, de un dispositivo que envía 1000 valores de tamaño byte con una frecuencia determinada. El procesador atiende los datos mediante interrupciones, siendo la rutina de tratamiento de interrupción la siguiente: Rut MOVE.B Reg_Dato,(A2)+ CMPA.L #$40000,A2 BNE Sig MOVE.B #4,Reg_Control*Inhibe int. del disp. Sig RTE Pág. 3 (1o INGENIERÍA INFORMÁTICA) ESTRUCTURA DE COMPUTADORES BOLETÍN EC3 (07/08) MICROPROCESADOR MC68000 Indique cada cuántos microsegundos puede enviar un octeto el dispositivo sin que se pierda ninguno. NOTA: Se supone despreciable el tiempo que el procesador necesita para guardar el contador de programa, el registro de estado y para obtener el vector de interrupción. Problema 18.-A continuación se indican las acciones que realiza un procesador MC68000 cuando recibe y acepta una interrupción vectorizada. Indicar el orden correcto de dichas acciones. a) Lee de memoria la dirección de comienzo de la rutina b) Compara el nivel de interrupción que ha llegado con el nivel de prioridad del proceso actual c) Recibe el número de vector de interrupción enviado por el dispositivo d) Termina la ejecución de la instrucción de lenguaje máquina en curso e) Activa las líneas adecuadas para indicar al dispositivo que se ha aceptado la interrupción Problema 19.-Indique en qué momento de la ejecución de una instrucción de lenguaje máquina el procesador puede atender: a) Una excepción b) Una interrupción c) Una petición de bus Problema 20.- En una posición de memoria $DATO existe un número binario entero postivo, N. Se pretende obtener el valor SUM = N + (N-1) + (N-2) + ... + 2 + 1 y almacenarlo en la palabra de memoria $SUMA. a) Obtenga una subrutina en ensamblador del 68000 si los datos son de tamaño palabra, suponiendo que no existe desbordamiento. Escriba el código máquina para ese programa suponiendo que la primera palabra de instrucción (OW) está en $2000. b) Repita si los datos son de tamaño byte. c) Repita si los datos son de tamaño gran palabra. Problema 21.-Realice un programa que permita trasponer una matriz cuadrada de dimensión 5. Sus componentes son tamaño palabra (W) y la forma de almacenamiento es la mostrada en la figura. a11 a12 a13 a14 a15 a21 a22 a23 a24 a25 a31 a32 a33 a34 a35 a41 a42 a43 a44 a45 a51 a52 a53 a54 a55 a11 = [M($A)] a12 = [M($A + 2)] a13 = [M($A + 4)] a14 = [M($A + 6)] a15 = [M($A + 8)] a21 = [M($A + 1010)] a22 = [M($A + 1210)] . . . Problema 22.-Realice una subrutina para sumar dos vectores de 10 números enteros de 32 bits que se almacenan en posiciones consecutivas de memoria. La dirección de memoria en que se encuentra el primero de ellos es el contenido del registro de direcciones A1 y la del segundo está en A2. Se cumple que (A1) + 10 x 4 < (A2). Almacene el resultado a partir de A3. Problema 23.-Se tiene un ordenador con procesador MC68000 conectado a seis pastillas de memoria RAM (RAM0, RAM1, ...., RAM5) de 8Kx8 con señal de selección activa en bajo y cuyas funciones de selección se dan a continuación: RAM0: A23 + A22 + A21 + A20 + A19 + A18 + A17 + A16 + A15 + A14 + AS + UDS RAM1: A23 + A22 + A21 + A20 + A19 + A18 + A17 + A16 + A15 + A14 + AS + LDS Pág. 4 (1o INGENIERÍA INFORMÁTICA) ESTRUCTURA DE COMPUTADORES BOLETÍN EC3 (07/08) MICROPROCESADOR MC68000 RAM2: A23 + A22 + A21 + A20 + A19 + A18 + A17 + A16 + A15 + A14 + AS + UDS RAM3: A23 + A22 + A21 + A20 + A19 + A18 + A17 + A16 + A15 + A14 + AS + LDS RAM4: A23 + A22 + A21 + A20 + A19 + A18 + A17 + A16 + A15 + A14 + AS + UDS RAM5: A23 + A22 + A21 + A20 + A19 + A18 + A17 + A16 + A15 + A14 + AS + LDS a) Dibuje el mapa de memoria de este ordenador. b) A partir de la dirección de memoria $020354 se tiene cargado el siguiente programa. Indique el contenido de PC y a qué pastillas de memoria se accede al ejecutar cada una de las instrucciones del programa: $020354 MOVE.B #02,D0 MOVE.B $702,D1 ADD.W D0,D1 MOVE.W D1,$102FF0 . . . (siguiente instrucción) c) Si se quiere escribir el dato $ABCD de forma que en todo o en parte ocupe la palabra $1234 de la RAM3 , indique la sintaxis y el código máquina de la instrucción MOVE que debemos utilizar, así como el resultado final de la instrucción Problema 24.-Cierta máquina dispone de un procesador MC68000. Por razones en las que no vamos a entrar, se desea que disponga de 16 Kbytes de memoria a partir de la dirección $F800 situados en direcciones múltiplos de 4. Para ello, se dispone de una pastilla de memoria de 16Kx8 con señal de selección activa en bajo. Indique la función de selección correspondiente a dicha pastilla realizando decodificación total. Problema 25.-Se tiene un procesador con bus de direcciones de 16 bits (A15, A14, A13, ....,A1, A0) y bus de datos de 8 bits (D7, D6, ....., D1, D0) al que se desean conectar dos pastillas de memoria RAM. Una de las pastillas (RAM1) es de 4Kx8 y cubrirá las direcciones $0000...$0FFF; la RAM2 es de 8Kx8 y cubrirá las direcciones $E000...$FFFF. Ambas pastillas de memoria tienen entrada de selección activa en bajo. Escriba la función de selección para las pastillas en los siguientes casos: a) Utilizando lógica de decodificación total b) Utilizando lógica de decodificación parcial Problema 26.-a) Obtenga el siguiente código máquina e indique qué registros se ven afectados y cómo para las siguientes instrucciones: MOVE.B -15(PC),(A6)+ MOVE.L -$1234,-(A6) b) Se desea mover la palabra larga de la dirección $000510 a la dirección $00BBCC. Indique las distintas formas de hacerlo con el MC68000 especificando, en casos concretos, los contenidos que se requieran. c) Indique el orden y los valores que tomarían los pines del MC68000 durante la ejecución de la instrucción MOVE.B $FFFF07,D1. El contenido de la posición de memoria $FFFF07 es $0A. Indique, además, qué pines activa el procesador y cuáles la memoria. d) (Este apartado fue el problema 12 de este boletín). Problema 27.-En el contexto del MC68000 conteste justificadamente las siguientes cuestiones (asuma que inicialmente (A3)=$003366CC y (PC)=$00448800)): 1. Para un direccionamiento indirecto de una palabra destino larga, indique cuál es el operando involucrado y el valor final de A3 si la sintaxis de la instrucción es: a) -44(A3); b) (A3)+; c) (A3); d) -(A3); e) 4(A3). Pág. 5 (1o INGENIERÍA INFORMÁTICA) ESTRUCTURA DE COMPUTADORES BOLETÍN EC3 (07/08) MICROPROCESADOR MC68000 2. Indique el código objeto, explique la operación y ponga un ejemplo con datos concretos para cada una de las siguientes instrucciones: MOVE.L $0042(PC),D3 MOVE.W $0042(PC),D3 MOVE.L -$0042(PC),D3 MOVE.L $10(PC,A3.L),D3 MOVE.W$10(PC,A3.L),D3 MOVE.L -$10(PC,A3.L),D3 3. Proponga, si es posible, una instrucción MOVE.B que sólo ocupe 1 palabra de código máquina. Repita para 2, 3, 4, 5 y 6 palabras de instrucción. Problema 28.-Se dispone de dispositivos RAMs y ROMs con 15 líneas de dirección, 8 bits de datos, una señal de “Chip Enable” activa en baja (CE) y otra de “Output Enable” también activa en baja (OE). Las RAMs también poseen una señal R/W. Se desea montar un sistema de memoria para que un 68000 pueda acceder a posiciones ROM en las direcciones $X00000 a $X0FFFF y a RAM en $X10000 a $X1FFFF. a) Describa formalmente los dispositivos y el mapa de memoria. b) Diseñe el circuito de memoria (especificando adecuadamente las conexiones entre el microprocesador y las memorias). c) Indique qué ocurre y ponga un ejemplo concreto con las siguientes instrucciones MOVE: MOVE.B $0023FA, $0189FA MOVE.L $0023FA, $0189FA MOVE.B $0023FA, $0189FB MOVE.L $0023FA, $0189FB MOVE.W $30ECEC, $F1F1F0 MOVE.W $03ECEC, $1FF1F0. Problema 29.-Se desea construir un sistema basado en el 68000 con el siguiente mapa de memoria: · 32KB de EPROM a partir de la posición $200000 usando pastillas de 16Kx8. · 128KB de RAM a partir de la posición $300000 usando pastillas de 32Kx8. a) Determine una expresión algebráica para las entradas de selección de chip (CS) de cada pastilla. b) Si desea trasvasar los datos almacenados en la mitad primera de la parte EPROM a la mitad última de la parte RAM mediante instrucciones MOVE.L (A1)+,(A2)+, ¿qué valores iniciales pondría en A1 y en A2? c) Si esos mismos datos los quiere trasvasar al mismo sitio pero en el orden contrario (i.e., el dato de la primera posición EPROM a la última posición RAM, el de la segunda posición EPROM a la penúltima posición RAM, etc), ¿que instrucción utilizaría y que valores iniciales tendría que poner? Problema 30.-Se dispone de memorias RAMs de 16Kx8 y 8Kx8 y de ROMs de 8Kx8, todas con un solo bus de datos de 8 bits y selección de chip activa en L. Los dispositivos de memoria generan una señal de reconocimiento de datos que se activa cuando han completado la operación de acceso al dato. a) Para un μP de AB[16] y DB[8], construya una unidad de memoria principal con memoria novolátil de 8KBytes en las direcciones mayores y 40KBytes de memoria de lectura y escritura en las posiciones más bajas. Dibuje las conexiones de todos los buses (AB, DB y CB). Indique, además: 1. Todas las direcciones lógicas que hay que escribir en el AB del μP para acceder a la palabra de dirección física “1 1 1 1 1 0 ... 0”en cada uno de los dispositivos de memoria utilizados 2. Las palabras físicas a las que se accede con las direcciones lógicas AB = $5050, $8765 y $E043. b) Transforme el diseño de la memoria principal anterior para que lo sea de un MC68000. Además, 1. incluya un circuito que genere la señal DTACK 2. otro que informe (activando BERR) cuándo hay un error de acceso al bus por direccionamiento fuera de memoria física o por escritura en ROM. Pág. 6