universidad nacional de ingeniería arquitectura de maquinas i · pdf filearq. de...

28
Arq. de Computadora I Ing. Carlos Ortega H. 1 Universidad Nacional de Ingeniería Arquitectura de Maquinas I Unidad I: Arquitectura y Programación de un Microprocesador (8086)

Upload: hakhuong

Post on 27-Feb-2018

231 views

Category:

Documents


1 download

TRANSCRIPT

Arq. de Computadora I Ing. Carlos Ortega H. 1

Universidad Nacional de Ingeniería

Arquitectura de Maquinas I

Unidad I: Arquitectura y Programación de un Microprocesador (8086)

Arq. de Computadora I Ing. Carlos Ortega H. 2

Contenidos

➢Arquitectura Von Newman➢Arquitectura Harvard.

➢Microprocesador 8086➢Organizacion de la Memoria➢Registros del 8086

➢Lenguaje de Programacion: Ensamblador.➢Ventajas y Desventajas.➢Estructura de ub Programa en Ensamblador

➢Modos de Direccionamiento

Arq. de Computadora I Ing. Carlos Ortega H. 3

Arquitectura Von Newman

– La CPU accede a una única memoria que tiene zonas separadas decódigo y datos.– Suelen ser CISC– El formato de instrucciones es de longitud variable y el juego deinstrucciones es más completo. Hoy se tiende a un núcleo RISC (Reduced Instruction Set Computing), y sobre éste, se implementa las instrucciones complejas (CISC) mediante microinstrucciones.

Arq. de Computadora I Ing. Carlos Ortega H. 4

Arquitectura Harvard

- Son independientes la memoria de instrucciones y la memoria de datos y cada una dispone de su propio sistema de buses para el acceso, lo que permite optimizar sus características propiciando el paralelismo.

- El formato de instrucciones es de longitud fija y el juego es reducido.

Arq. de Computadora I Ing. Carlos Ortega H. 5

Arquitectura Harvard

●En una arquitectura Harvard la instrucción es buscada de la memoria de programa en un solo ciclo.

●Mientras la memoria de programa está siendo accesada, la memoria de datos puede ser leída o escrita.

●Esta arquitectura de buses separados permiten que una instrucción pueda ser ejecutada mientras la próxima es buscada.

●Los procesadores modernos usan la técnica de tuberías (pipe-line) para procesar instrucciones, que consiste en la segmentación del procesador descomponiéndolo en etapas, que operan paralelamente para poder procesar varias instrucciones a la vez.

Arq. de Computadora I Ing. Carlos Ortega H. 6

Microprocesador 8086Organizacion de la Memoria

Memoria Lineal

El microprocesador ve a la memoria como un arreglo lineal de localidades de memoria de un byte y en el que las direcciones de las localidades de memoria son los índices de los elementos del arreglo.

El esquema de memoria lineal es usado por lo general en microprocesadores con capacidad de direccionamiento reducido, por lo general aquellos en los que la memoria no excede a los 64 KB.

Memoria Segmentada

Se visualiza a la memoria como dividida en segmentos de memoria y a cada segmento lo visualiza como un arreglo lineal de localidades de memoria de un byte. Cada segmento tiene una dirección llamada dirección de segmento.

Este esquema de memoria es usado por lo general en microprocesadores con capacidad de direccionamiento que excede a los 64 KB. Uno de estos procesadores es el procesador 8086 de Intel.

Arq. de Computadora I Ing. Carlos Ortega H. 7

Registros del 8086

Son componentes dentro del microprocesador que nos permiten almacenar datos. Estos datos pueden representar valores sobre los cuales se van a realizar operaciones, resultados de las operaciones, direcciones de localidades de memoria donde se encuentran datos e instrucciones, direcciones de los dispositivos de entrada/salida sobre los que deseamos escribir o leer, o los datos a escribir o leídos de esos dispositivos.

A la descripción del número, tamaño y uso de los registros de un microprocesador se le conoce como el modelo de programación del microprocesador.

Arq. de Computadora I Ing. Carlos Ortega H. 8

Registros del 8086

Arq. de Computadora I Ing. Carlos Ortega H. 9

Registros de Proposito General

Se utilizan en la forma en que lo desee el programador.

AX, AH, AL (Acumulador): a menudo conserva el resultado temporal después de una operación aritmética o lógica.

BX, BH, BL (Base): Se utiliza para guardar la dirección base de listas de datos en la memoria.

CX, CH, CL (Contador): Contiene el conteo para ciertas instrucciones de corrimientos y rotaciones, de iteraciones en el ciclo loop y operaciones repetidas de cadenas.

DX, DH, DL (Datos): Contiene la parte más significativa de un producto después de una multiplicación; la parte más significativa del dividendo antes de la división.

Arq. de Computadora I Ing. Carlos Ortega H. 10

Registros Apuntadores e Indices

SP (Apuntador de pila): Contiene el desplazamiento con respecto al segmento de pila del tope de la pila del programa.

BP (Apuntador de base): Contiene el desplazamiento con respecto al segmento de pila de datos almacenados en la pila de un programa.

SI (Índice fuente): Contiene el desplazamiento con respecto al segmento de datos de un elemento de un arreglo o cadena.

DI (Índice destino): Contiene el desplazamiento con respecto al segmento extra de un elemento de una cadena o arreglo.

IP (Apuntador de instrucciones): Contiene siempre el desplazamiento con respecto al segmento de código de la localidad de memoria que contiene la siguiente instrucción que va a ejecutar el microprocesador.

Arq. de Computadora I Ing. Carlos Ortega H. 11

Registros de Segmentos CS (Código): Tiene la dirección lógica del segmento en que se

encuentra el código de un programa. Si el código ocupa más de un segmento, contiene la dirección lógica de uno de los segmentos.

DS (Datos): Tiene la dirección lógica del segmento en que se encuentran los datos estáticos de un programa. Si los datos ocupan más de un segmento, contiene la dirección lógica de uno de los segmentos.

ES (Extra): Este registro también tiene la dirección lógica de uno de los segmentos en que se encuentran los datos estáticos de un programa. Este registro se utiliza en ciertas operaciones del microprocesador para el manejo de cadenas.

SS (Pila): Tiene la dirección lógica del segmento en que se encuentran la pila del sistema. La pila no puede ser mayor a un segmento.

Arq. de Computadora I Ing. Carlos Ortega H. 12

Registro Banderas

C (Acarreo): Indica un acarreo después de una suma o un préstamo después de una resta. P (Paridad): 0 = Impar y un 1 = par.A (Acarreo auxiliar): Esta bandera sólo se utiliza en las operaciones daa y dasZ (Cero): Z = 1 si el resultado de una operación aritmética o lógica es cero y si Z = 0, el resultado no es cero.S (Signo): Si S = 1, el resultado es negativo. Si S = 0, el resultado es positivo. O (Sobreflujo): Es una condición que ocurre cuando se suman o se restan números con signo.

Arq. de Computadora I Ing. Carlos Ortega H. 13

T (Trampa): Activa, si se pone a 1, o desactiva, si se pone a 0, el modo de ejecución paso a paso. Este modo es utilizado por los depuradores para ejecutar las instrucciones una a la vez y permitir observar el efecto de la instrucción sobre los registros y la memoria.

I (Interrupción): Habilita, si se pone a 1, o deshabilita, si se pone a 0, las interrupciones al microprocesador. El estado de esta bandera se controla con las instrucciones sti (habilitar interrupciones) y cli (desactivar las interrupciones).

D (Dirección): Controla la selección de autoincremento o autodecremento de los registros DI o SI durante las instrucciones de cadenas y arreglos. Si D = 1 hay autodecremento en los registros y si D = 0 hay autoincremento. El estado de esta bandera se controla con las instrucciones std (habilitar dirección) y cld (desactivar dirección).

Registro Banderas

Arq. de Computadora I Ing. Carlos Ortega H. 14

Lenguaje de Programacion

Es un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones, y utilizado para controlar el comportamiento físico y lógico de una máquina.

Lenguajes de bajo nivel

Son lenguajes de programación que se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel es, por excelencia, el código máquina. A éste le sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los registros y memoria de la computadora de forma directa.

Lenguaje ensamblador

El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador.

Arq. de Computadora I Ing. Carlos Ortega H. 15

Ventajas y Desventajas del Lenguaje Ensamblador

Ventajas

Velocidad: De 5 a 10 veces mas rapidos

Eficiencia de tamaño: Ocupa la mitad de tamaño

Flexibilidad: Se pueden crear segmentos de codigo imposibles en otros lenguajes.

Desventajas

Tiempo de programación: Mas dificil de Aprender, entender y depurar

Programas fuente grandes

Peligro de afectar recursos inesperadamente

Falta de portabilidad

Arq. de Computadora I Ing. Carlos Ortega H. 16

[etiqueta] [instrucción|directiva [operandos]] [;comentario]

Son los campos de la proposición.Los campos se separan por caracteres blancos: caracteres de espacio y/o de tabulación. Todos los campos son opcionales, pero el campo operandos sólo pueden estar presente si existe el campo instrucción|directiva.

Estructura de un Programa en Ensamblador

Arq. de Computadora I Ing. Carlos Ortega H. 17

Las etiquetas asignan un nombre a una instrucción. Esto permite hacer referencia a ellas en el resto del programa. Pueden tener una máximo de 31 caracteres y deben terminar en “:”.

Las directivas son comandos que afectan al ensamblador, no al procesador. Se puede usar para preparar segmentos y procedimientos, definir símbolos, reservar memoria, etc. La mayoría de las directivas no generan código objeto.

Estructura de un Programa en Ensamblador

Arq. de Computadora I Ing. Carlos Ortega H. 18

Las directivas más comunes son:

.MODEL para usar las directivas simplificadas es necesario incluir esta directiva que define el modelo de memoria que debe usarse. Algunos de los argumentos que puede tomar son: TINY: para programa con un solo segmento para datos

y código (tipo .COM) SMALL: para programas con un solo segmento de

datos (64K, incluida la pila) y otro de código (64K) LARGE: varios segmentos de datos y código (1Mb

para cada uno).

Estructura de un Programa en Ensamblador

Arq. de Computadora I Ing. Carlos Ortega H. 19

MEDIUM: Varios segmentos de código y 1 de datos. COMPACT: 1 segmento de código y varios de datos.

Con esta directiva se preparan todos los segmentos y el ensamblador reconoce, a partir de este momento, las directivas .DATA, .STACK y .CODE.

.STACK nos sirve para fijar un tamaño n del segmento de pila, por defecto 1K.

.DATA abre el segmento de datos.

.CODE abre el segmento de código, al final código debe aparecer END.

Estructura de un Programa en Ensamblador

Arq. de Computadora I Ing. Carlos Ortega H. 20

Justo después de la directiva .CODE hay que inicializar el segmento de datos (ya que la directiva no genera código):

MOV AX, @DATA

MOV DS, AX

Los comentarios permiten describir las sentencias de un programa, facilitando su comprensión. Comienzan por “;”, el ensamblador ignora el resto de la línea.

Ejemplo:

INI_CONT: MOV CX, DI ; inicia el contador

Estructura de un Programa en Ensamblador

Arq. de Computadora I Ing. Carlos Ortega H. 21

Modos de Direccionamientos

Los modos de direccionamiento indican la manera de obtener los operandos y son: Direccionamiento de Registro Direccionamiento Inmediato Direccionamiento Directo Direccionamiento Indirecto. Direccionamiento Indirecto con Indice o Indexado Direccionamiento con base e indice o Indexado a

base El tipo de direccionamiento se determina en función

de los operandos de la instrucción.

Arq. de Computadora I Ing. Carlos Ortega H. 22

Modos de Direccionamientos

La instrucción MOV realiza transferencia de datos desde un operando origen a un operando destino. Su formato es el siguiente:

MOV destino, origen

Direccionamiento de registro

Transfiere un byte o palabra desde un registro fuente hasta un registro destino.

NOTA! No se permite el acceso entre registros de segmentos ni de distintos tamaños.

MOV AX,CX ;transfiere el contenido de CX en AX

Arq. de Computadora I Ing. Carlos Ortega H. 23

Direccionamiento inmediato

Transfiere un byte o palabra de datos inmediatos hacia el operando destino. Este modo es usado para inicializar registros o localidades de memoria y para operar sobre ellos con valores constantes de datos.

MOV AX,0ABCDh ;carga en AX el valor 0ABCDh.

Modos de Direccionamientos

Arq. de Computadora I Ing. Carlos Ortega H. 24

Modos de Direccionamiento

Direccionamiento directo

Cuando el operando es una dirección de memoria. Ésta puede ser especificada con su valor entre [ ], o bien mediante una variable definida previamente (Se verá más adelante).

Ejemplo:MOV AL,[1234H]; almacena en AL el contenido de la dirección de memoria DS:1234.

Arq. de Computadora I Ing. Carlos Ortega H. 25

Direccionamiento indirecto

Cuando el operando esta en memoria en una posición contenida en un registro (BX, BP, SI o DI).

MOV AX,[BX] ; almacena en AX el contenido de la dirección de memoria DS:[BX].

Modos de Direccionamiento

Arq. de Computadora I Ing. Carlos Ortega H. 26

Direccionamiento Indirecto con Indice o Indexado

El operando se encuentra en una dirección determinada por la suma de un registro de segmento*16, un registro de índice, SI o DI y un desplazamiento de 8 ó 16 bits.

Ejemplos:

MOV AX,[DI+DESP] ó MOV AX,desp[DI]

ADD [SI+DESP],BX ó ADD desp[SI],BX

Modos de Direccionamiento

Arq. de Computadora I Ing. Carlos Ortega H. 27

Direccionamiento con base e indice o Indexado a base

El operando se encuentra en una dirección especificada por la suma de un registro de segmento*16, uno de base, uno de índice y opcionalmente un desplazamiento de 8 ó 16 bits:

MOV AX,ES:[BX+DI+DESP] ó MOV AX,ES:desp[BX][DI]

MOV CS:[BX+SI+DESP],CX ó MOV CS:desp[BX][SI],CX

Modos de Direccionamiento

Arq. de Computadora I Ing. Carlos Ortega H. 28