TEMA 1: CONCEPTOS GENERALES PREVIOS 1.- Representa los primeros 16 números decimales (del 0 al 15) usando codificación binaria y hexadecimal. 00000 00100 01000 01100
/ / / /
00000 00004 00008 0000C
00001 00101 01001 01101
/ / / /
00001 00005 00009 0000D
00010 00110 01010 01110
/ / / /
00002 00006 0000A 0000E
00011 00111 01011 01111
/ / / /
00003 00007 0000B 0000F
2.- Representa en hexadecimal los siguientes números binarios: a) 1110 0001 1100 1010 0000 0011 0001 = 0E1CA031 b) 11 1111 0000 1100 1000 = 0003F0C8 3.- Representa en binario los siguientes números hexadecimales a) $212F04 = 10 0001 0010 1111 0000 0100 b) $CAFE = 1100 1010 1111 1110 4.- Calcula el Ca1 (Complemento a 1) y el Ca2 (complemento a 2) de los siguientes números: a) $3FA CA1= 00 0000 0101 CA2=00 0000 0110 b) 1101112 CA1= 00 1000 CA2=00 1001 5.- La notación más utilizada por los computadores modernos para la representación de números enteros con signo es la notación Ca2. Represente las siguientes cantidades usando dicha notación y usando 8 bits. a) +5 0000 0101 b)-48 1101 0000 c)-128 1000 0000 d) 0 0000 0000 6.- Complete cada una de las tablas siguientes XY 00 01 10 11
AND 0 0 0 1
XY 00 01 10 11
OR 0 1 1 1
XY 00 01 10 11
EXOR 0 1 1 0
XY 00 01 10 11
NOT 1 0 0 0
7.- Si X= 1001 1111 e Y= 1010 0011, obtenga la operación OR,AND, EXOR de ambas palabras y la NOT de X. OR 1011 1111 322
AND 1000 0011 25’917
EXOR 0011 1100 60
NOT 0110 0000 -160
8.- Obtenga la suma aritmética de X e Y del apartado anterior e intérprete el resultado suponiendo: a) X e Y son números con signo en Ca2. b) X e Y son números sin signo. Resolución A. 0001 0100 0100 B. 0001 0100 0010
9.-¿ Cómo se detecta el overflow? El overflow se produce siempre que el resultado que genere la unidad aritmética no pueda almacenarse con el número de bits de salida de la unidad o del registro destino. Si se están operando con números sin signo, el overflow se detecta si el acarreo, C, toma el valor 1. Si se están operando con números con signo, un overflow se detecta cuando al sumar dos números del mismo signo, se obtiene un resultado de distinto signo o cuando al restas dos números A y B se signo opuesto (A-B), el signo del resultado es diferente al del operando A. Las ALUs integradas en los microprocesadores disponen de una salida V que se activa cuando inciden estas condiciones. 10.- Los microprocesadores disponen de un registro de estado que contiene “flags” o banderines que informan del resultado de ciertas operaciones lógicas y aritméticas. Determine el significado de los siguientes bits: a) C Acarreo; Contiene el acarreo de orden mas alto (mas a la izquierda) después de una operación aritmética; también lleva el contenido del ultimo bit en una operación de corrimiento o rotación. b) N Bit de signo; Es igual al bit más significativo del resultado. c) Z Zero; Indica el resultado de una operación aritmética o de comparación (0= resultado diferente de cero y 1=resultado igual a cero). d) V Desbordamiento; Indica el desbordamiento de un bit de orden alto (mas a la izquierda) después de una operación aritmética. 11.- Sea X= 1100 0001 un número binario de 8 bits. Especifique en qué consiste el desplazamiento lógico (derecha o izquierda) el desplazamiento aritmético (derecha/izquierda) y la rotación (derecha/izquierda). Obtenga el resultado de realizar dichas operaciones con el número X e interprete el resultado, cuando sea posible, según X se considere como un número con signo o como un número sin signo. Desplazamiento En un desplazamiento lógico se desplazan a la derecha o a la izquierda los bits contenidos en un registro. En un extremo, el bit saliente se pierde al desplazarse. En el otro extremo se introduce un cero. Estos desplazamientos son útiles para aislar bits dentro de un mismo registro. Rotación En la rotación se preservan todos los bits del registro ya que si se hace hacia la derecha el bit mas a la izquierda se coloca en lugar del bit mas a la derecha corriendo los demás una posición hacia la derecha. Desplazamiento derecha-izquierda: Xder: 0110 0000 Xizq: 1000 0010 Rotación Derecha-izquierda: Xder: 1110 0000
Xizq: 1000 0011
12.- En qué consiste un ciclo de Fetch y un ciclo de Execute. Fetch El microprocesador es un circuito secuencial temporizado. Siempre antes de que empiece una nueva instrucción los tiempos se inicializan precisamente para realizar el ciclo Fetch. Este ciclo es el encargado de tomar un código y llevarlo hacia el IR para ser decodificado y asi activar la lógica correcta del circuito de control y llevar a cabo esta instrucción. Consta de tres tiempos y cinco microoperaciones.
Execute El ciclo de búsqueda (Fetch) consiste un una serie de microoperaciones secuenciales que no cambian nunca. Esto no ocurre en un ciclo de ejecución ya que para cada instrucción de nuestro procesador existe una serie de microoperaciones a realizar de acuerdo con la instrucción deseada, particularmente consiste en realizar las operaciones que fueran traídas de la memoria. 13.- ¿Qué son los modos de direccionamiento?. Describa algunos de ellos. Modo inmediato: El dato se encuentra incorporado en la propia instrucción. Se utiliza este modo cuando se inicializan o cargan valores constantes en registros de datos o memoria. El programador incluye estas constantes junto con la instrucción que la utiliza y, el compilador, las almacena conjuntamente con el código de operación de la instrucción. Modo directo (o absoluto para otros fabricantes): Junto al código de operación de la instrucción se incluye la dirección de la posición de memoria donde se encuentra el dato. Suele ser uno de los más usados. Las variables locales y globales suelen ser ejemplos de usos de modo directo cuando son usadas en diferentes puntos del programa. Modo registro directo. El dato se encuentra en un registro de datos. El código de operación de la instrucción contiene la referencia al registro de datos. Modo indirecto: El código de operación de la instrucción especifica un registro de dirección que contiene la dirección de memoria donde se encuentra el dato. (Variables puntero). Modo indirecto con postincremento: igual que el indirecto, pero incluye el incremento del contenido del registro de dirección. Este modo es muy útil para recorrer el contenido de un vector o matriz. Modo indirecto con predecremento: igual que el indirecto, pero que, antes de acceder al dato, el registro de dirección se decrementa en una unidad. Modo indirecto con desplazamiento (o relativo). El dato se encuentra en la posición de memoria que se obtiene del resultado de sumar el contenido de un registro de direcciones con un desplazamiento. Por tanto, la instrucción, contiene el desplazamiento y la referencia del registro de dirección. Este modo de direccionamiento suele emplearse para acceder a un elemento de una vector o matriz, en el que la dirección del primer elemento de la matriz se encuentra en el registro de dirección y el desplazamiento sumado a la dirección base seleccionan el elemento deseado. Modo indirecto indexado (o simplemente indexado): El dato se encuentra en la posición de memoria que se obtiene del resultado de sumar el contenido de un registro de direcciones con el contenido de otro registro (normalmente de datos ), denominado índice. Este modo es una generalización del anterior y su uso es el mismo, aunque mejorado. Si el registro de dirección contiene la dirección base de la matriz de datos, con el registro índice y con este modo de direccionamiento, se podrá acceder a cualquier elemento i de la matriz siempre que, i, sea el contenido del registro índice. Modo indirecto indexado con desplazamiento ( indexado relativo). El dato se encuentra en una posición de memoria resultado de la suma del contenido de un registro de dirección, el registro índice y un desplazamiento.
14.- ¿Qué funciones tiene el contador de programa, PC, de un microprocesador? El contador de programa es un registro que contiene la dirección de memoria donde se encuentra la siguiente instrucción que el microprocesador debe ejecutar. Automáticamente se incrementa a medida que las instrucciones van siendo ejecutadas. 15.- ¿Qué funciones tiene un registro de datos? Fundamentalmente contener datos que vayan a ser procesados o hayan sido procesados. 16.- ¿Qué funciones tiene un registro de direcciones? Contener direcciones de memoria. Se utilizan en apoyo a los diferentes modos de direccionamiento. 17.- Existe un registro de direcciones especial denominado Stack Pointer (puntero de pila- SP-) que se inicializa con el valor de la dirección de memoria dónde se almacena la PILA. Indique alguna de las funciones principales de la PILA y especifique cuál es el procedimiento seguido para introducir datos en PILA y para extraerlos. Indique también algunas de las instrucciones más destacadas de un microprocesador que permiten el acceso a la PILA. La PILA es una porción de la memoria RAM donde se almacenan datos (argumentos usados por las subrutinas, estado del microprocesador, etc.) y direcciones de retorno de las subrutinas. Las operaciones de lectura y escritura en PILA se realizan mediante el registro SP o Stack Pointer, que se encuentra en el propio microprocesador. El contenido de dicho registro se inicializa con la dirección de la CIMA de la PILA. Una operación de ESCRITURA (PUSH) provoca: a) el decremento del SP y b) escritura en RAM en la dirección indicada por SP. Una operación de LECTURA(POP) provoca: a) la lectura en RAM en la dirección indicada por SP y b) el incremento del SP. Los microprocesadores disponen de instrucciones especiales que permiten la escritura o lectura de datos en la pila (instrucciones PUSH y POP) y de instrucciones de llamada y regreso de subrutina (JSR y RTS) que, automáticamente, provocan el almacenamiento del contenido del registro PC (dirección de la siguiente instrucción a ejecutar) en PILA y la lectura de la PILA para restaurar el registro PC, respectivamente. Las interrupciones (excepciones) también utilizan la PILA (recuérdese que una subrutina de interrupción es un caso particular de subrutina que se invoca mediante algún evento). 18.- ¿Qué funciones tiene el bus de direcciones y datos de un microprocesador? Por el bus de direcciones (AB) el microprocesador muestra la dirección de memoria a la que quiera acceder, bien para realizar un ciclo de Fetch, bien para leer o escribir algún operando como consecuencia de la ejecución de una instrucción. El bus de datos (DB) porta los datos que se transfiere entre la memoria(o periféricos) y el microprocesador. 19.- Si un microprocesador dispone de: a) 16 b) 20 c) 24 d) 32 líneas en su bus de direcciones, ¿cuántas direcciones físicas distintas puede generar? Resolución: A.- 64 K
B.- 1 M
C.- 16 M
D.- 4 G
20.- Representa el esquema de una RAM de 32Kx8 y una ROM de 16Kx8.
21.- Utilizando los dispositivos de memoria del apartado anterior, diseña el sistema de decodificación necesario para ubicar la RAM en las primeras posiciones y la ROM en las últimas posiciones del espacio de direccionamiento de un microprocesador con 16 líneas en el bus de direcciones y 8 en el bus de datos. Repita el ejemplo si el microprocesador tiene 20 líneas en el bus de direcciones y usando decodificación parcial.