repertorio de instrucciones y modos de direccionamiento

21
REPERTORIO DE INSTRUCCIONES Y MODOS DE DIRECCIONAMIENTO Introducción. 1. Tipos de instrucciones. 2. Propiedades de las instrucciones. 3. Formatos de instrucción. 4. Modos de direccionamiento. 5.Medidas de evaluación de instrucciones y programas. 6.Clasificación de los computadores según su repertorio de instrucciones.

Upload: richard-tamay

Post on 24-Jul-2015

167 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Repertorio de Instrucciones y Modos de Direccionamiento

REPERTORIO DE INSTRUCCIONES Y MODOS DE DIRECCIONAMIENTO

Introducción.1. Tipos de instrucciones.2. Propiedades de las instrucciones.3. Formatos de instrucción.4. Modos de direccionamiento.5. Medidas de evaluación de instrucciones y programas.6. Clasificación de los computadores según su repertorio de instrucciones.

Page 2: Repertorio de Instrucciones y Modos de Direccionamiento

INTRODUCCIÓN

Funcionamiento de un computador: ejecución continua de instrucciones.

Fases en un ciclo de instrucción:

1. Lectura de la instrucción en memoria.2. Decodificación de la instrucción.3. Ejecución de la instrucción.4. Ciclo de interrupción.

El único lenguaje que un computador es capaz de comprender, interpretar y ejecutar es el lenguaje máquina.

El lenguaje máquina está íntimamente ligado a la arquitectura interna del computador.

REPERTORIOS DE INSTRUCCIONES

Programar en lenguaje máquina requiere:

- Tener en mente una imagen física de los registros y la memoria de la máquina.- Conocer las operaciones realizadas por las instrucciones y su sintaxis.- Conocer las formas de referenciar a los datos utilizados (modos de

direccionamiento).- Conocer los tamaños de las instrucciones y de los datos.

Repertorio o juego de instrucciones de un computador: conjunto de instrucciones de máquina que es capaz de ejecutar.

El repertorio de instrucciones de un computador debe ser:

- Completo: debe permitir resolver cualquier problema.- Eficaz: los programas deben ser ejecutados en un tiempo razonable.

Page 3: Repertorio de Instrucciones y Modos de Direccionamiento

1. TIPOS DE INSTRUCCIONES

2.1. TRANSFERENCIA DE DATOS: (Move, Load, Store)

- Dos Operandos: Fuente y Destino.

2.2. ARITMÉTICAS: (ADD, SUB, MUL, DIV, EXT, NEG)

- Dos Operandos: Fuente y uno Destino (que puede ser uno de los Fuentes).

2.3. LÓGICAS: (AND, OR, NOT, XOR)

- Dos Operandos Fuente y uno Destino (que puede ser uno de los Fuentes).

2.4. COMPARACIÓN: (CMP)

- Comparan Operandos y actualizan el Registro de Estado.- Se utilizan normalmente antes de las Bifurcaciones.

2.5. MODIFICACIÓN DE LA SECUENCIA DE EJECUCIÓN DEL PROGRAMA:

- Ramificaciones incondicionales: BRA desp.- Saltos incondicionales: JMP dirección.- Ramificaciones condicionales: Bcc desp - bifurcar si se cumple la condición cc.- Saltos condicionales: Jcc desp – saltar si se cumple la condición cc.- Ramificaciones con retorno: BSR desp.- Saltos con retorno: JSR dirección.- Retorno de subrutina: RTS, RTE, RTR.

Page 4: Repertorio de Instrucciones y Modos de Direccionamiento

2.6. DESPLAZAMIENTOS: (SHIFT)

- Hay que indicar el dato y la longitud del desplazamiento.- Aritméticos: ASL, ASR.- Lógicos: LSL, ASR.- Circulares (rotaciones): ROL, ROR, ROXL, ROXR.

2.7. INSTRUCCIONES DE BIT:

- Hay que indicar el dato y la posición del bit.- Testear: BTST.- Poner a 0: BCLR.- Poner a 1: BSET.- Invertir: BCHG.

2.8. INSTRUCCIONES DE ENTRADA/SALIDA: (INPUT, OUTPUT)

- Transferencias entre puertos de E/S y registros o memoria.

2.9. MISCELÁNEAS:

- WAIT, STOP: parar la ejecución hasta la llegada de una interrupción.- HALT: parar el procesador.- NOP: no operación, permite temporizar esperas.

Page 5: Repertorio de Instrucciones y Modos de Direccionamiento

2. PROPIEDADES DE LAS INSTRUCCIONES

Las instrucciones realizan una función única y sencilla. Las instrucciones emplean un número fijo de operandos en una representación

determinada.

Un repertorio de instrucciones requiere especificar:

- Operaciones que se realizan- Representación de los datos- Modos de direccionamiento- Formato de instrucciones: codificación de las instrucciones en binario.

Page 6: Repertorio de Instrucciones y Modos de Direccionamiento

3. FORMATOS DE INSTRUCCIÓN

A. Formato de instrucción: representación en binario de la misma.

- El formato de instrucción especifica el significado de cada uno de los bits que constituyen la instrucción.

- Longitud del formato de instrucción: número de bits que lo componen.

B. La información contenida en el formato de la instrucción es:

- Código de operación.

- Dirección de los operandos.

- Dirección del resultado.

- Dirección de la siguiente instrucción (casi siempre implícita).

- Tipos de representación de los operandos (casi siempre implícitos en el código de operación).

C. Para simplificar su codificación y decodificación, el formato se divide en campos:

CO MD OP1 OP2 RES

Donde:

- Código de operación (CO).

- Modificador (MD): suele completar al CO, y sirve para especificar ciertas particularidades de la instrucción:

- Tamaño y tipo de los operandos.

- A veces se usa para distinguir entre operaciones similares.

- Operandos (OPi) y resultado (RES).

Page 7: Repertorio de Instrucciones y Modos de Direccionamiento

3.1 CARACTERISTICAS:

- Un computador contendrá instrucciones con diferentes formatos (= no todas las instrucciones del repertorio de un computador tienen el mismo formato).

Un computador dispone de pocos formatos de instrucción diferentes para simplificar su decodificación.

Los formatos son sistemáticos: campos del mismo tipo suelen ocupar la misma longitud y la misma posición.

- El código de operación:

Permite distinguir entre los distintos formatos de instrucción de un computador.

Indica la longitud y formato de los operandos (a veces en campos modificadores asociados al mismo).

- Las longitudes de los formatos son fracción o múltiplo del tamaño de la palabra del computador.

Para acortar la longitud de los formatos se utiliza direccionamiento implícito: ninguna instrucción, salvo las de salto o bifurcación, contiene la dirección de la siguiente instrucción que se va a ejecutar.

Page 8: Repertorio de Instrucciones y Modos de Direccionamiento

4. MODOS DE DIRECCIONAMIENTO

A. Los operandos no suelen estar contenidos en la instrucción de forma directa por:

- Ahorro de espacio.

- Empleo de código reubicable y reentrante.

- Hay datos formando estructuras más o menos complejas.

B. Los operandos pueden ubicarse en los siguientes lugares:

- Dentro de la propia instrucción (operandos inmediatos):

En el registro de instrucción.

En palabras de extensión o ampliación.

- En registros visibles para el programador.

- En variables ubicadas en posiciones de memoria.

C. Dirección efectiva de un operando: ubicación exacta del mismo.

D. Los operandos pueden ser referenciados desde la instrucción de múltiples formas, dando lugar a los modos de direccionamiento.

E. Modo de direccionamiento: mecanismo que permite conocer la ubicación de un objeto (dato o instrucción).

F. Un computador debe disponer de varios modos de direccionamiento.

Page 9: Repertorio de Instrucciones y Modos de Direccionamiento

G. No todos los modos de direccionamiento están implementados en todos los computadores.

H. Los modos de direccionamiento disponibles están determinados por la arquitectura interna de la máquina y por el repertorio de instrucciones.

I. Dentro de una misma máquina, pueden existir limitaciones en la utilización de los modos de direccionamiento en las distintas instrucciones. Ejemplo: Un dato inmediato no puede ser operando destino.

J. Repertorio de instrucciones ortogonal: permite utilizar prácticamente todos los modos de direccionamiento como operandos en la mayoría de las situaciones.

K. Cada campo de operando en una instrucción contiene información acerca del modo de direccionamiento empleado para acceder a él.

L. Subcampos del modo de direccionamiento:

Modo Registro CD

Donde:

Modo: especifica el modo de direccionamiento

• Ocupa pocos bits.

Registro: indica el registro involucrado en el direccionamiento

• Ocupa pocos bits.

CD: puede contener un operando inmediato, una dirección o un desplazamiento

• Suele ocupar bastante espacio.

Page 10: Repertorio de Instrucciones y Modos de Direccionamiento

5. MEDIDAS DE EVALUACIÓN DE LAS INSTRUCCIONES Y PROGRAMAS

A. Las Instrucciones se evalúan según varias medidas:

Su longitud

- Medida en número de palabras o de bytes.

El tiempo que tardan en completarse

- Puede medirse en tiempo o en número de ciclos de reloj.

Su frecuencia de utilización.

B. Los Programas se evalúan según muchas medidas, algunas de las cuales son las siguientes:

Su longitud.

- Medida en número de instrucciones, de palabras o de bytes.

El tiempo de ejecución.

- Medido en tiempo o en número de ciclos de reloj.

El número de instrucciones ejecutadas, sus tipos y su frecuencia de utilización.

El número de ciclos de reloj por instrucción (CPI).

El número de accesos a memoria realizados en su ejecución.

- Lecturas de instrucciones

- Accesos de lectura o escritura de datos.

Page 11: Repertorio de Instrucciones y Modos de Direccionamiento

6. CLASIFICACIÓN DE LOS COMPUTADORES SEGÚN SU REPERTORIO DE INSTRUCCIONES

No todos los modos de direccionamiento están disponibles en todos los computadores.

Según el tipo de los operandos utilizados en su repertorio de instrucciones, los computadores pueden ser de diferentes tipos:

1. Máquinas de pila.

2. Máquinas de acumulador.

3. Máquinas de memoria-memoria.

4. Máquinas de registros de propósito general.

5. Máquinas de registro-registro.

6. Máquinas de registro-memoria.

Page 12: Repertorio de Instrucciones y Modos de Direccionamiento

1) MÁQUINAS DE PILA :

La UCP no contiene registros de propósito general, sino una pequeña memoria

implementada como una pila que utiliza para almacenar datos temporales y evaluar expresiones.

Para utilizar un dato (variable o constante) en una expresión, es preciso insertarlo previamente en la pila.

- PUSH variable

Para almacenar una variable en memoria, habrá que extraerla de la cima de la pila.

- POP variable

Operandos en instrucciones aritméticas y lógicas:

2 operandos origen, que se toman siempre de la cima de la pila (son extraídos de ella).

1 operando destino, que se inserta en la cima de la pila.

Los tres operandos son implícitos.

EJEMPLO

Escribir un fragmento de programa para evaluar la expresión A=B/C+D*E

A, B, C, D y E son variables en memoria.

- PUSH B Insertar el contenido de la variable B en la pila.

- PUSH C Insertar el contenido de la variable C en la pila.

- DIV Dividir B entre C y guardar resultado en la pila.

- PUSH D Insertar el contenido de la variable D en la pila.

- PUSH E Insertar el contenido de la variable E en la pila.

- MUL Multiplicar D*E y guardar resultado en la pila.

- ADD Sumar B/C con D*E.

- POP A Almacenar el resultado en la variable A.

Page 13: Repertorio de Instrucciones y Modos de Direccionamiento

2) MÁQUINAS DE ACUMULADOR :

La UCP no contiene registros de propósito general, sino un acumulador que almacena el resultado de la última operación aritmética realizada.

Operandos en instrucciones aritméticas y lógicas:

2 operandos origen, uno está en el acumulador y el otro está en memoria.

1 operando destino, que siempre es el acumulador.

El acumulador es un operando implícito.

EJEMPLO

Escribir un fragmento de programa para evaluar la expresión A=B/C+D*E

A, B, C, D y E son variables en memoria.

- LOAD B Cargar el contenido de la variable B en el acumulador.

- DIV C Dividir B/C (resultado en el acumulador).

- STORE TEMP Guardar el cociente en una variable temporal.

- LOAD D Cargar el contenido de la variable B en el acumulador.

- MUL E Multiplicar D*E (resultado en el acumulador).

- ADD TEMP Sumar B/C con D*E (resultado en el acumulador).

- STORE A Almacenar el contenido del acumulador en la variable A.

3) MÁQUINAS DE MEMORIA-MEMORIA :

Page 14: Repertorio de Instrucciones y Modos de Direccionamiento

No tienen registros de propósito general.

Usan tres operandos explícitos, todos ellos variables residentes en memoria.

EJEMPLO:

Escribir un fragmento de programa para evaluar la expresión A=B/C+D*E

A, B, C, D y E son variables en memoria.

Supondremos que los dos primeros operandos son los fuentes y el tercero es el destino.

- DIV B, C, TMP1 Dividir B/C (resultado en variable temporal).

- MUL D, E, TMP2 Multiplicar D*E (resultado en variable temporal).

- ADD TMP1, TMP2, A Sumar B/C con D*E (resultado en variable A).

4) MÁQUINAS DE REGISTROS DE PROPÓSITO GENERAL :

Tienen un número variable de registros de propósito general para almacenar datos temporales y resultados de cálculos intermedios.

A este tipo pertenecen la mayoría de las máquinas modernas.

Tipos de máquinas de registros de propósito general:

- Máquinas de registro-memoria.

- Máquinas de registro-registro (máquinas de carga-almacenamiento).

5) MÁQUINAS DE REGISTRO-MEMORIA :

Page 15: Repertorio de Instrucciones y Modos de Direccionamiento

Las instrucciones aritméticas y lógicas normalmente tienen dos operandos explícitos, uno en registro y el otro en un registro o en memoria

Uno de los operandos actúa a la vez como fuente y destino (casi siempre un registro).

Estas máquinas no suelen contar con demasiados registros de propósito general (8 ó 16).

EJEMPLO

Escribir un fragmento de programa para evaluar la expresión A=B/C+D*E

A, B, C, D y E son variables en memoria.

Supondremos que el segundo operando debe ser un registro y es a la vez fuente y destino, salvo en instrucciones de transferencia.

- MOVE B, R1 Cargar el contenido de la variable B en un registro.

- DIV C, R1 Dividir B/C.

- MOVE D, R2 Cargar el contenido de la variable D en un registro.

- MUL E, R2 Multiplicar D*E.

- ADD R1, R2 Sumar B/C con D*E.

- MOVE R2, A Almacenar el resultado en la variable A.

6) MÁQUINAS DE REGISTRO-REGISTRO :

Page 16: Repertorio de Instrucciones y Modos de Direccionamiento

Las instrucciones aritméticas y lógicas tienen tres operandos explícitos, los tres residentes en registros.

- En estas instrucciones el segundo operando fuente puede ser un dato inmediato.

Para usar una variable residente en memoria, siempre hay que cargarla previamente en un registro.

- LOAD variable, registro.

Para guardar un resultado en una variable, siempre hay que realizar un almacenamiento.

- STORE registro, variable.

Estas máquinas cuentan con no menos de 32 registros de propósito general.

EJEMPLO

Escribir un fragmento de programa para evaluar la expresión A=B/C+D*E

A, B, C, D y E son variables en memoria.

Supondremos que el primer operando es el destino, y los dos siguientes son los fuentes.

- LOAD B, R1 Cargar el contenido de la variable B en un registro.

- LOAD C, R2 Cargar el contenido de la variable C en un registro.

- DIV R3, R1, R2 Dividir B/C.

- LOAD D, R4 Cargar el contenido de la variable D en un registro.

- LOAD E, R5 Cargar el contenido de la variable E en un registro.

- MUL R6, R4, R5 Multiplicar D*E.

- ADD R7, R3, R6 Sumar B/C con D*E.

- STORE R7, A Almacenar resultado en la variable A.