Modos de Direccionamiento

Documentos relacionados
El Diseño de un Lenguaje Máquina

Definición de Memoria

Construyendo Programas más Complejos

Modos de Direccionamiento+ Diseño de ISA. Organización del Computador 1 Verano 2016

Memoria Estática Punteros, Vectores y Matrices

Memoria Estática Punteros, Vectores y Matrices

MODOS DE DIRECCIONAMIENTO

Ejercicios sobre instrucciones y direccionamiento

Soluciones de los ejercicios sobre instrucciones y direccionamiento

Práctica 4. Organización del Computador 1 12 de septiembre de Algunas consideraciones preliminares:

EXAMEN ORDINARIO DE ORGANIZACIÓN DE COMPUTADORES

El nivel ISA (II)! Conjunto de Instrucciones

Tema 2. Diseño del repertorio de instrucciones

Estructura y Tecnología de Computadores. Módulo C. Arquitectura del procesador. Tema 4. Modos de direccionamiento y tipos de datos

Unidad Nº II Capacidad de la unidad central. de procesamiento. Instituto Universitario Politécnico. Santiago Mariño

Fecha de Introducción. Velocidad de reloj. Anchura del bus. Número de transistores. (microns) Memoria direccionable.

PRÁCTICA # 2. 0 Direcciones 1 Dirección 2 Direcciones 3 Direcciones

Estructura de Computadores. Problemas de Instrucciones y Direccionamientos

Guía práctica lenguaje ensamblador

Práctica 2: Introducción a los modos de direccionamiento

Organización de computadoras. Clase 6. Universidad Nacional de Quilmes. Lic. Martínez Federico

Estructura de Computadores: Tema 1. Introducción. Índice. Arquitectura del i8086

2.4. Modos de direccionamiento Distintas formas que tiene la arquitectura para especificar la ubicación de los operandos.

INSTRUCCIONES. LA ENERGIA DE LA MAQUINA Fundamentos de Computadores Capítulo segundo

Instrucciones de máquina y tipos de software

Los números naturales y enteros en el 80X86 y en LAN

Entorno de Ejecución del Procesador Intel Pentium

Estructura de Computadores. Problemas de Instrucciones y Direccionamientos

Arquitectura de Computadoras Arquitectura del Computador Basadas en las Notas de Teórico Versión 5.1 del Dpto. de Arquitectura-InCo-FIng

Programación en ensamblador de la arquitectura IA-32 Universidad Carlos III de Madrid

Tema: Lenguaje ensamblador embebido

Tema 2: Lenguaje máquina. La interfaz entre el hardware y el software

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

Lectura y escritura de un caracter

TEMA VI DISEÑO DEL PROCESADOR

Objetivo. Introducción. Tema: GENERACION DE CODIGO. Compiladores, Guía 11 1

Soluciones de los ejercicios sobre Algorítmez

Práctica 6. El procesador

Arquitectura del CPU. Organización del Computador 1 Verano 2016

Ensamblador martes, 9 de septiembre de :11

Arquitectura de Computadores II Clase #3

ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES 1º I.T.I.G. I.T.I.S.

Repaso concepto de programa

Universidad Nacional de Ingeniería Arquitectura de Maquinas I. Unidad I: Arquitectura y Programación de un Microprocesador (8086)

ORGANIZACIÓN DE LA MEMORIA

INTRUCCIONES: LENGUAJE MAQUINA

Arquitectura Interna del 8088

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

Clasificación del procesador según el número de referencias a memoria.

ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES II BOLETÍN 4 MICROPROCESADOR MC 68000

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

Arquitectura de Computadores

GUIA 24: REPERTORIO DE INSTRUCCIONES

Tema 3 (III) Fundamentos de la programación en ensamblador

5 - Lenguaje Ensamblador

Organización de Computadoras. Clase 8

TEMA 5 JUEGO DE INSTRUCCIONES DE UN COMPUTADOR

Introducción al simulador

Registros Arquitectura x86. M. en C. Erika Vilches

ARQUITECTURA DE COMPUTADORES. 2º INGENIERIA INFORMATICA. Soluciones del BOLETIN 2: Tecnología de los sistemas de memoria. Curso 06/07.

PUNTEROS (Apuntadores)

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Ensamblador. Introducción. Dpto. Física y Arquitectura de Computadores. Universidad Miguel Hernandez

Práctica 1. Introducción a la programación en ensamblador

Ejercicios del tema 4. El procesador

Arquitectura (Procesador familia 80 x 86 )

ARQUITECTURA DEL REPERTORIO DE INSTRUCCIONES

Práctica 3: Programación en ASM Orga 1

Grado en Ingeniería Informática - Ingeniería del Software Estructura de Computadores - Prueba 2 - Junio de 2011

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA

Un. VIII. Generación de Código Objeto

Organización de computadoras. Clase 4. Universidad Nacional de Quilmes. Lic. Martínez Federico

Introducción a la arquitectura de computadores con QtARMSim y Arduino

A veces queremos almacenar algún elemento que es Verdadero o Falso. Este tipo de dato se llama Booleano y su representación es sencilla, para cada

Organización del Computador 1. CPU (ISA) Conjunto de Instrucciones de la Arquitectura 2017

Repaso Registros internos Z80 1/37

Transcripción:

Arquitectura de Ordenadores Modos de Direccionamiento del Intel Pentium Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Modos de Direccionamiento ADM-1 Las operaciones deben de obtener sus operados, ya sea de los registros o de la memoria. Para acceder a estos operandos se precisa especificar un modo de obtenerlos. Los procesadores permiten especificar la posición de un operando de múltiples maneras. Modo de Direccionamiento: Dado uno o varios campos de la instrucción, calcular la dirección efectiva (d e ) de un operando. La Dirección Efectiva no tiene por qué ser una dirección en memoria.

Cuántos modos de direccionamiento existen? ADM-2 Hay infinidad de formas de calcular la dirección de un operando. Cada procesador implementa un subconjunto de formas posibles. Tanto los operandos involucrados en el cálculo como las diferentes formas de calcular esta dirección están todos codificados en la instrucción. Cuanto más compleja sea la tarea de cálculo de la dirección efectiva, o más operandos incluya, más compleja será la decodificación y ejecución de la instrucción. Terminología ADM-3 Existen dos espacios posibles de direcciónes de operandos: 1. Dirección de Registro: Para aquellos operandos que están almacenados en registro. 2. Dirección de Memoria: Para aquellos operandos que están almacenados en memoria. Nos referiremos a los diferentes campos de la instrucción como ci 1, ci 2, etc. La expresión (ci 1 ) significa el contenido del campo ci 1 de la instrucción, o lo que es lo mismo, el número codificado en dicho campo. La expresión (R i ), donde R i es el nombre de un registro, significa el contenido del registro. La expresión dato R significa que se carga en el registro R el dato dato.

Modo Registro ADM-4 Los registros pueden almacenar operandos. La dirección de registro es diferente a la dirección de memoria. d e = (ci) Modo Registro: Ejemplo ADM-5 Ejemplo: ADD %ebx, %edx Los campos que especifican los registros están en el byte ModR/M.

Modo Registro Indirecto ADM-6 La dirección efectiva está contenida en un registro codificado en la instrucción. Útil para acceder a un array de elementos. d e = ((ci)) Modo Registro Indirecto: Ejemplo ADM-7 Ejemplo: ADD %ebx, ( %edx) Los campos que especifican los registros están en el byte ModR/M y en el código de operación.

Modo Autoincremento ADM-8 El registro involucrado en el cálculo de la dirección efectiva se incrementa después de ser utilizado. El tamaño del incremento (1, 2, 4, etc) está relacionado con el tamaño del operando (8, 16, 32 bits, etc) d e = ((ci)); (R i ) + {1, 2, 4} R i, donde R i es el registro codificado en el campo ci. Modo Autoincremento: Ejemplo ADM-9 Ejemplo: POP %eax Como el tamaño del operando es 4 bytes el incremento es de 4.

Modo Autodecremento ADM-10 El registro involucrado en el cálculo de la dirección efectiva se decrementa antes de ser utilizado. El tamaño del decremento (1, 2, 4, etc) está relacionado con el tamaño del operando (8, 16, 32 bits, etc) d e = ((ci)) {1, 2, 4}; (R i ) {1, 2, 4} R i, donde R i es el registro codificado en el campo ci. Modo Autodecremento: Ejemplo ADM-11 Ejemplo: PUSH %eax Como el tamaño del operando es 4 bytes el decremento es de 4.

Modo Absoluto ADM-12 La dirección efectiva se encuentra en el campo de la propia instrucción. Útil para acceder a constantes de un programa. d e = (ci) Modo Absoluto: Ejemplo ADM-13 Ejemplo: MOV mistring, %ebx Instrucción que carga el contenido en memoria con etiqueta mistring en el registro %ebx. El lenguaje ensamblador nos permite definir y utilizar estas etiquetas.

Modo Base + Desplazamiento ADM-14 La dirección se obtiene sumando el contenido de un registro y un valor codificado en la instrucción. Útil para acceder a un campo de un record de datos. d e = (ci 1 ) + ((ci 2 )) Modo Base + Desplazamiento: Ejemplo ADM-15 Supongamos un record almacenado en una dirección contenida en %ebx y con campos: boolean a; /* 4 bytes */ int b; /* 4 bytes */ int c; /* 4 bytes */ Cómo cargamos el valor del campo c en el registro %eax?

Modo Base + Índice ADM-16 La dirección se obtiene sumando el contenido de dos registros. Útil para acceder a los elementos de un array secuencialmente, pues se conserva la dirección de inicio de los datos y el índice. d e = ((ci 1 )) + ((ci 2 )) Modo Base + Índice: Ejemplo ADM-17 Supongamos el array de enteros almacenado en la posición contenida en el registro %ebx. Cómo podemos iterar sobre todos los elementos del array?

Modo Índice Escalado + Desplazamiento ADM-18 La dirección se obtiene sumando el registro índice escalado al valor codificado en la instrucción. Útil para acceder a arrays que están en posiciones fijas y que contienen elementos de tamaños 1, 2, 4 u 8 bytes. d e = (ci 1 ) + ((ci 2 )) (ci 3 ); tal que (ci 3 ) {1, 2, 4, 8} Modo Índice Escalado + Desplazamiento: Ejemplo ADM-19 Supongamos un array de enteros como variable global del programa con la siguiente estructura: tabla 100 200 300... Para iterar sobre los elementos de la tabla no necesitamos almacenar la dirección base en un registro.

Modo Base + Índice Escalado + Desplazamiento ADM-20 Combinación de los modos base + índice e índice escalado + desplazamiento. La dirección se obtiene sumando el desplazamiento, el registro base y el registro índice multiplicado por el factor de escala pertinente. d e = (ci 1 ) + ((ci 2 )) + ((ci 3 )) (ci 4 ); tal que (ci 4 ) {1, 2, 4, 8} Modo Base + Índice escalado + Desplazamiento: Ejemplo ADM-21 Supongamos un array de dos dimensiones (una matriz) con elementos de 4 bytes. Para acceder a un elemento se precisan índices de fila y columna. La dirección del elemento en la posición (i, j) es: base + (i tamañofila) + (j tamañoelemento).

Circuito de cálculo de la dirección efectiva ADM-22 Resumen de Modos de Direccionamiento ADM-23 Registro: Operando en regisro. d e = (ci). Registro Indirecto: Operando en dirección de memoria en registro. d e = ((ci)). Autoincremento: Como el Registro indirecto, pero el registro se incrementa después de ser usado. d e = ((ci)); (R i )+ {1, 2, 4} R i, donde R i es el registro codificado en el campo ci. Autodecremento: Como el Registro indirecto, pero el registro se decrementa antes de ser usado. d e = (R i ) {1, 2, 4}; ((ci)) {1, 2, 4} R i, donde R i es el registro codificado en el campo ci. Absoluto: La dirección está codificada en la propia instrucción. d e = (ci). Modo Base + Índice escalado + Desplamiento: La dirección se puede codificar hasta con cuatro operandos, permitiendose todas las combinaciones (índice y escala se tratan como un parámetro). d e = (Registro Base) + [(Registro Índice) Escala] + Desplazamiento