arquitectura computador

36
Introducción al lenguaje ensamblador

Upload: jose-alberto-rodriguez-alvarado

Post on 16-Jan-2016

40 views

Category:

Documents


0 download

DESCRIPTION

Que es

TRANSCRIPT

Page 1: Arquitectura Computador

Introducción al lenguaje ensamblador

Page 2: Arquitectura Computador

Perspectiva histórica

• Charles Babagge y su maquina analítica. En su diseño, la máquina constaba de cinco unidades básicas:

• 1) Unidad de entrada, para introducir datos e instrucciones;

• 2) Memoria, donde se almacenaban datos y resultados intermedios;

• 3) Unidad de control, para regular la secuencia de ejecución de las operaciones;

• 4) Unidad Aritmético-Lógica, que efectúa las operaciones;

• 5) Unidad de salida, encargada de comunicar al exterior los resultados.

Page 3: Arquitectura Computador

Perspectiva histórica

• PRIMERA GENERACIÓN (1951 a 1958)

Las computadoras de la primera Generación emplearon bulbos para procesar información.

• SEGUNDA GENERACIÓN (1959-1964)

Transistor Compatibilidad Limitada

• TERCERA GENERACIÓN (1964-1971)

Circuitos Integrados, Compatibilidad con Equipo Mayor, Multiprogramación, Minicomputadora.

• CUARTA GENERACIÓN (1971 a 1981)

Microprocesador , Chips de memoria, Microminiaturización

• QUINTA GENERACIÓN Y LA INTELIGENCIA ARTIFICIAL (1982-?)

Page 4: Arquitectura Computador

Perspectiva histórica

Page 5: Arquitectura Computador

Perspectiva histórica

• Surgen representaciones para las instrucciones de unos y ceros, llamadas instrucciones mnemónicas que eran más fáciles de recordar (MOVE, LDA, ADD, etc.)

• Un traductor es un mediador entre dos entidades: emisoras y receptoras, los mediadores enmascaran la complejidad y heterogeneidad de los lenguajes.

• Los primeros traductores que pasan las instrucciones mnemónicas a Binario recibieron el nombre de ensambladores, y se convirtieron en el primer lenguaje de los ordenadores.

Page 6: Arquitectura Computador

Perspectiva histórica

Page 7: Arquitectura Computador

Perspectiva histórica

Page 8: Arquitectura Computador

Perspectiva histórica

Page 9: Arquitectura Computador

Perspectiva histórica

Page 10: Arquitectura Computador

Clasificación de los lenguajes de programación

Page 11: Arquitectura Computador

Clasificación de los lenguajes de programación

• LENGUAJE MÁQUINA

• LENGUAJES DE BAJO NIVEL

• LENGUAJES DE ALTO NIVEL

Page 12: Arquitectura Computador

Clasificación de los lenguajes de programación

• LENGUAJE MÁQUINA

– La computadora utiliza el alfabeto binario ( 0’s y 1’s, denominados bits).

– Las instrucciones se dividen en dos partes: 1) Comando u operación y 2) Operando.

– Ventajas: posibilidad de cargar sin necesidad de traducción posterior (mayor velocidad).

– Desventajas: dificultad y lentitud en la codificación. Poca fiabilidad. Gran dificultad para verificar y poner a punto los programas. Los programas solo son ejecutables en el mismo procesador (CPU).

Page 13: Arquitectura Computador

Clasificación de los lenguajes de programación

• LENGUAJE MÁQUINA

– Aritméticas / lógicas / desplazamiento.

– Transferencia de datos.

– Comparación / condicional.

– Saltos, llamadas a subrutinas.

– De entrada / salida.

Page 14: Arquitectura Computador

Lenguajes de bajo nivel

• Se encuentran totalmente vinculados a la estructura del computador.

• Están diseñados para sacar el máximo partido de las características físicas del computador.

• Características:

– Dependencia absoluta de la arquitectura del computador.– Imposibilidad de transportar programas entre distintas máquinas, salvo que sean de la

misma familia o compatibles.– Instrucciones poco potentes.– Programas muy largos.– Códigos de operación, datos y referencias en binario.

• Tipos:

– Lenguaje ensamblador.

Page 15: Arquitectura Computador

Clasificación de los lenguajes de programación

• LENGUAJE ENSAMBLADOR

• El lenguaje ensamblador (o lenguaje de ensamble, assembly language) es la representación simbólica de la codificación binaria de un computador.

• Existe una correspondencia biunívoca entre las instrucciones de máquina y las• instrucciones de un lenguaje ensamblador.

– Cada instrucción ensamblador es una codificación simbólica de una instrucción de máquina.

• El lenguaje ensamblador debe ser traducido a lenguaje máquina para poder ser interpretado y ejecutado directamente por el computador.

• Hoy día los lenguajes ensambladores tienen sus aplicaciones mas reducidas en la programación de aplicaciones y se centran en aplicaciones de tiempo real, control de procesos y de dispositivos electrónicos, etc.

Page 16: Arquitectura Computador

Proceso de traducción

MIPS (siglas de Microprocessor without Interlocked Pipeline Stages). Microprocesadores de arquitectura RISC desarrollados por MIPS Technologies.

Ejemplo: Sistemas embebidos; en dispositivos para Windows CE; routers Cisco; y videoconsolas como la Nintendo 64 o las Sony PlayStation, PlayStation 2 y PlayStation Portable.

Page 17: Arquitectura Computador

Proceso de traducción

El Motorola 68000 (MC68000).

Page 18: Arquitectura Computador

Clasificación de los lenguajes de programación

Page 19: Arquitectura Computador

Clasificación de los lenguajes de programación

• LENGUAJE ENSAMBLADOR

• El lenguaje ensamblador (o lenguaje de ensamble, assembly language) es la representación simbólica de la codificación binaria de un computador.

• Existe una correspondencia biunívoca entre las instrucciones de máquina y las• instrucciones de un lenguaje ensamblador.

– Cada instrucción ensamblador es una codificación simbólica de una instrucción de máquina.

• El lenguaje ensamblador debe ser traducido a lenguaje máquina para poder ser interpretado y ejecutado directamente por el computador.

Page 20: Arquitectura Computador

Arquitectura 8086

Universidad Rafael Landivar

Microprogramación

2do. Ciclo 2,012

Page 21: Arquitectura Computador

Arquitectura 8086

Page 22: Arquitectura Computador

Componentes básicos1. Oscilador de reloj: es el encargado de dar un ritmo de funcionamiento al procesador y a

toda la circuitería en general; por lo tanto, determina la cantidad de instrucciones que el procesador puede ejecutar por segundo.

2. CPU: Es el microcircuito al cual entran las instrucciones de código máquina y donde las mismas son procesadas (ejecutadas).

3. Memoria: Está formada por una serie de chips donde se almacena toda la información del sistema, lo cual incluye tanto al código (instrucciones) como los datos de cualquier tipo.

4. Bus de datos: Es el bus por donde se mueve la información digital que circula por todo el sistema (memoria, puertos...), desplazándose principalmente entre la memoria y la CPU, y viceversa. Este bus es de 16 bits en el 8086 (8 bits en el 8088 y 32 bits en 80386 y 80486).

5. Bus de direcciones: Es el bus usado por la CPU para indicar a la memoria la posición en la que está la información a la que se quiere acceder (ya sea para leerla o para escribir en ella). Una vez se haya accedido a esa posición en la memoria, ésta enviará su contenido a través del mencionado bus de datos. El bus de direcciones posee 20 bits de ancho de banda, por lo que se pueden indicar 2^20 = 1.048.576 posiciones de memoria distintas.

6. Bus de control: Este bus es el encargado de indicar al sistema tanto el tipo de información que circula por el bus de datos en cada momento, como de sincronizar las señales que controlan el funcionamiento de la circuitería del sistema.

Page 23: Arquitectura Computador

El microprocesador• El microprocesador (CPU, Central Process Unit) ejecuta los programas lleva a cabo

cálculos, comparaciones numéricas y transferencia de datos como respuesta a las peticiones de los programas almacenados en memoria.

•La unidad de control es la que gobierna todo el funcionamiento del ordenador.

•La unidad de proceso (ALU) es la que ejecuta las operaciones aritméticas y lógicas.

•Los registros son dispositivos de un ordenador para el almacenamiento temporal de datos.

Page 24: Arquitectura Computador

Los registros de la CPU

Se usan para contener los datos con que se está trabajando puesto que el acceso a los registros es mucho más rápido que los accesos a memoria. Se pueden realizar operaciones aritméticas y lógicas, comparaciones, entre otras. Se pueden hacer estas operaciones con todos los registros excepto los de segmento, el IP, y los flags.

Page 25: Arquitectura Computador

Registros de Propósito General• Los registros de propósito general (de 16 bits) son:

• Registro AX: El registro AX es el registro acumulador, es utilizado para operaciones que implican entrada/salida, y multiplicación y división (estas dos últimas en conjunto con el registro DX)

• Registro BX: El registro BX es el registro base, y es el único registro de propósito general que puede ser un índice para direccionamiento indexado

• Registro CX: El registro CX es conocido como el registro contador. Puede contener un valor para controlar el número de veces que un ciclo se repite o un valor para corrimiento de bits

• Registro DX: El registro DX es el registro de datos. En algunas operaciones se indica mediante este registro el número de puerto de entrada/salida, y en las operaciones de multiplicación y división de 16 bits se utiliza junto con el acumulador AX

• Cada uno de ellos se divide en dos registros de 8 bits, llamados AH y AL, BH y BL, CH y CL, y, DH y DL, H significando Hight (alto) y L significando Low (bajo), indicando la parte alta o la parte baja del registro correspondiente de 16 bits (ver esquema). Un programa podía usar tanto los registros de 16 bits como los registros de 8 bits.

Page 26: Arquitectura Computador

Registros índice• Los registros SI y DI están disponibles para direccionamiento indexado y para operaciones

de cadenas de caracteres.

• Registro SI: El registro índice fuente de 16 bits es requerido por algunas operaciones con cadenas de caracteres. El SI está asociado con el segmento DS.

• Registro DI: El registro índice destino también es requerido por algunas operaciones con cadenas de caracteres. El DI está asociado con el segmento ES.

Page 27: Arquitectura Computador

Registros de banderas• Es un registro de 16 bits, de los cuales nueve sirven para indicar el estado actual de la

máquina y el resultado del procesamiento. Muchas instrucciones aritméticas y de comparación cambian el estado de las banderas y apoyándose en ellas se pueden tomar decisiones para determinar la acción subsecuente.

• Los bits de las banderas son las siguientes:

• OF (overflow, desbordamiento): Indica desbordamiento del bit de mayor orden después de una operación aritmética de números con signo (1=existe overflow; 0=no existe overflow). Para operaciones sin signo, no se toma en cuenta esta bandera.

• DF (dirección): Controla la selección de incremento o decremento de los registros SI y DI en las operaciones con cadenas de caracteres (1=decremento automático; 0=incremento). La bandera DF se controla con las instrucciones STD y CLD.

• IF (interrupción): Controla el disparo de las interrupciones (1=habilita las interrupciones; 0=deshabilita las interrupciones). La interrupción no enmascarable es la única que no puede ser bloqueada por esta bandera. El estado de la bandera IF se controla con las instrucciones STI y CLI.

Page 28: Arquitectura Computador

Registros de banderas

• TF (trampa): Permite la operación del procesador en modo de depuración (paso a paso)

• SF (signo): Contiene el signo resultante de una operación aritmética (0=positivo; 1=negativo).

• ZF (cero): Indica el resultado de una operación aritmética o de comparación (0=resultado diferente de cero; 1=resultado igual a cero).

• AF (acarreo auxiliar): Contiene el acarreo del bit 3. Esta bandera se prueba con las instrucciones DAA y DAS para ajustar el valor de AL después de una suma o resta BCD.

• PF (paridad): Indica si el número de bits 1, del byte menos significativos de una operación, es par (0=número de bits 1 es impar; 1=número de bits 1 es par).

• CF (acarreo): Contiene el acarreo del bit de mayor orden después de una operación aritmética; también almacena el contenido del último bit en una operación de desplazamiento o de rotación.

Page 29: Arquitectura Computador

Registros de segmento

• Definen áreas de 64 Kb dentro del espacio de direcciones de 1 Mb del 8086. Estas áreas pueden solaparse total o parcialmente. No es posible acceder a una posición de memoria no definida por algún segmento: si es preciso, habrá de moverse alguno.

• Registro CS: El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, más un valor de desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de una instrucción que es buscada para su ejecución. Para propósitos de programación normal, no se necesita referenciar el registro CS.

• Registro DS: La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. Esta dirección, más un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un byte específico en el segmento de datos.

Page 30: Arquitectura Computador

Registros de segmento• Registro SS: El registro SS permite la colocación en memoria de una pila, para

almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en el registro SS. Esta dirección de segmento, más un valor de desplazamiento en el registro del apuntador de la pila (SP), indica la palabra actual en la pila que está siendo direccionada. Para propósitos de programación normal, no se necesita referenciar el registro SS.

• Los registros SP (apuntador de pila) y BP (apuntador base) están asociados con el registro SS y permiten al sistema acceder a datos en el segmento de la pila.

– Registro BP: El apuntador base de 16 bits facilita la referencia de parámetros dentro de la pila.

– Registro SP: El apuntador de pila de 16 bits está asociado con el segmento SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que está siendo procesada en la pila. El sistema maneja de manera automática este registro, aunque el programa puede hacer ciertas manipulaciones con él.

• Registro ES: Algunas operaciones con cadenas de caracteres utilizan el registro extra de segmento para manejar el direccionamiento de memoria. El registro ES está asociado con el registro DI (Índice). Un programa que requiere el uso del registro ES puede inicializarlo con una dirección de segmento apropiada.

Page 31: Arquitectura Computador

Registros apuntador de instrucciones

• El registro IP de 16 bits contiene el desplazamiento de dirección de la siguiente instrucción que se ejecuta. El IP está asociado con el registro CS en el sentido de que el IP indica la instrucción actual dentro del segmento de código que se está ejecutando actualmente en la memoria.

Page 32: Arquitectura Computador

ALU

• La unidad aritmético-lógica es el segundo principal componente de la unidad central de proceso. Se encarga de realizar las operaciones aritméticas y lógicas con los datos que recibe, siguiendo órdenes de la unidad de control.

• Las operaciones que realiza la ALU se pueden agrupar en las siguientes categorías:

– Operaciones aritméticas, tales como suma, resta, multiplicación y división.

– Operaciones de lógica binaria, tales como and, or, xor, not …

– Operaciones de desplazamientos y rotaciones.

– Operaciones de transformación de operandos, tales como extensión de signo, transformación a otro formato de numeración, etc.

Page 33: Arquitectura Computador

Arquitectura 8086

Page 34: Arquitectura Computador

División de la memoria

Universidad Rafael Landivar

Microprogramación

2do. Ciclo 2,012

Page 35: Arquitectura Computador

La memoria en un 8086/8088• La memoria RAM de un ordenador es utilizada para almacenar programas o datos con los

que el procesador trabaja. Todos los ordenadores necesitan memoria para almacenar programas e información, así como para cargar y ejecutar los programas.

• Direccionamiento de la memoria

• Dado que el 8086/8088 tiene una longitud de palabra de direcciones de 20-bits es posible direccionar hasta 1.048.576 (= 2^20) localidades distintas de memoria, es decir, podemos almacenar hasta 1Mbyte de información.

• Teóricamente sólo se podría acceder hasta el byte número 65.535 (216, el número mayor posible de 16 bits) contando a partir del inicio, que es el byte 0.

Page 36: Arquitectura Computador

La memoria en un 8086/8088• La memoria RAM de un ordenador es utilizada para almacenar programas o datos con los

que el procesador trabaja. Todos los ordenadores necesitan memoria para almacenar programas e información, así como para cargar y ejecutar los programas.

• Direccionamiento de la memoria

• Dado que el 8086/8088 tiene una longitud de palabra de direcciones de 20-bits es posible direccionar hasta 1.048.576 (= 2^20) localidades distintas de memoria, es decir, podemos almacenar hasta 1Mbyte de información.

• Teóricamente sólo se podría acceder hasta el byte número 65.535 (216, el número mayor posible de 16 bits) contando a partir del inicio, que es el byte 0.