Está en la página 1de 27

Universidad Nacional de Ingeniera Microprocesadores Unidad II: Arquitectura y Programacin de un

Microprocesador (8086)

Microprocesadores

Ing. Carlos Ortega H.

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
Microprocesadores Ing. Carlos Ortega H. 2

Arquitectura Von Newman

La CPU accede a una nica memoria que tiene zonas separadas de cdigo y datos. Suelen ser CISC El formato de instrucciones es de longitud variable y el juego de instrucciones es ms completo. Hoy se tiende a un ncleo RISC (Reduced Instruction Set Computing), y sobre ste, se implementa las instrucciones complejas (CISC) mediante microinstrucciones.
Microprocesadores Ing. Carlos Ortega H. 3

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 caractersticas propiciando el paralelismo. - El formato de instrucciones es de longitud fija y el juego es reducido.
Microprocesadores Ing. Carlos Ortega H. 4

Arquitectura Harvard
En una arquitectura Harvard la instruccin 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 leda o escrita.

Esta arquitectura de buses separados permiten que una instruccin pueda ser ejecutada mientras la prxima es buscada.

Los procesadores modernos usan la tcnica de tuberas (pipeline) para procesar instrucciones, que consiste en la segmentacin del procesador descomponindolo en etapas, que operan paralelamente para poder procesar varias instrucciones a la vez.

Microprocesadores

Ing. Carlos Ortega H.

Microprocesador 8086 Organizacion 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 direccin llamada direccin 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.
Microprocesadores Ing. Carlos Ortega H. 6

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 ledos de esos dispositivos. A la descripcin del nmero, tamao y uso de los registros de un microprocesador se le conoce como el modelo de programacin del microprocesador.

Microprocesadores

Ing. Carlos Ortega H.

Registros del 8086

Microprocesadores

Ing. Carlos Ortega H.

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 despus de una operacin aritmtica o lgica. BX, BH, BL (Base): Se utiliza para guardar la direccin 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 ms significativa de un producto despus de una multiplicacin; la parte ms significativa del dividendo antes de la divisin.
Microprocesadores Ing. Carlos Ortega H. 9

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 cdigo de la localidad de memoria que contiene la siguiente instruccin que va a ejecutar el microprocesador.

Microprocesadores

Ing. Carlos Ortega H.

10

Registros de Segmentos
CS (Cdigo): Tiene la direccin lgica del segmento en que se encuentra el cdigo de un programa. Si el cdigo ocupa ms de un segmento, contiene la direccin lgica de uno de los segmentos. DS (Datos): Tiene la direccin lgica del segmento en que se encuentran los datos estticos de un programa. Si los datos ocupan ms de un segmento, contiene la direccin lgica de uno de los segmentos. ES (Extra): Este registro tambin tiene la direccin lgica de uno de los segmentos en que se encuentran los datos estticos de un programa. Este registro se utiliza en ciertas operaciones del microprocesador para el manejo de cadenas. SS (Pila): Tiene la direccin lgica del segmento en que se encuentran la pila del sistema. La pila no puede ser mayor a un segmento.
Microprocesadores Ing. Carlos Ortega H. 11

Registro Banderas

C (Acarreo): Indica un acarreo despus de una suma o un prstamo despus de una resta. P (Paridad): 0 = Impar y un 1 = par. A (Acarreo auxiliar): Esta bandera slo se utiliza en las operaciones daa y das Z (Cero): Z = 1 si el resultado de una operacin aritmtica o lgica 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 condicin que ocurre cuando se suman o se restan nmeros con signo.
Microprocesadores Ing. Carlos Ortega H. 12

Registro Banderas
T (Trampa): Activa, si se pone a 1, o desactiva, si se pone a 0, el modo de ejecucin 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 instruccin sobre los registros y la memoria.
I (Interrupcin): 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 (Direccin): Controla la seleccin 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 direccin) y cld (desactivar direccin).
Microprocesadores Ing. Carlos Ortega H. 13

Lenguaje de Programacion
Es un conjunto de smbolos y reglas sintcticas y semnticas que definen su estructura y el significado de sus elementos y expresiones, y utilizado para controlar el comportamiento fsico y lgico de una mquina. Lenguajes de bajo nivel Son lenguajes de programacin que se acercan al funcionamiento de una computadora. El lenguaje de ms bajo nivel es, por excelencia, el cdigo mquina. 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 informticos, y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura de computadoras legible por un programador.
Microprocesadores Ing. Carlos Ortega H. 14

Ventajas y Desventajas del Lenguaje Ensamblador


Ventajas
Velocidad: De 5 a 10 veces mas rapidos Eficiencia de tamao: Ocupa la mitad de tamao Flexibilidad: Se pueden crear segmentos de codigo imposibles en otros lenguajes. Desventajas Tiempo de programacin: Mas dificil de Aprender, entender y depurar Programas fuente grandes Peligro de afectar recursos inesperadamente Falta de portabilidad
Microprocesadores Ing. Carlos Ortega H. 15

Estructura de un Programa en Ensamblador


[etiqueta] [instruccin|directiva [operandos]] [;comentario]

Son los campos de la proposicin.Los campos se separan por caracteres blancos: caracteres de espacio y/o de tabulacin. Todos los campos son opcionales, pero el campo operandos slo pueden estar presente si existe el campo instruccin|directiva.

Microprocesadores

Ing. Carlos Ortega H.

16

Estructura de un Programa en Ensamblador


Las etiquetas asignan un nombre a una instruccin. Esto permite hacer referencia a ellas en el resto del programa. Pueden tener una mximo 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 smbolos, reservar memoria, etc. La mayora de las directivas no generan cdigo objeto.

Microprocesadores

Ing. Carlos Ortega H.

17

Estructura de un Programa en Ensamblador


Las directivas ms 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 cdigo (tipo .COM)
SMALL: para programas con un solo segmento de datos (64K, incluida la pila) y otro de cdigo (64K) LARGE: varios segmentos de datos y cdigo (1Mb para cada uno). MEDIUM: Varios segmentos de cdigo y 1 de datos. COMPACT: 1 segmento de cdigo 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.
Microprocesadores Ing. Carlos Ortega H. 18

Estructura de un Programa en Ensamblador


.STACK nos sirve para fijar un tamao n del segmento de pila, por defecto 1K. .DATA abre el segmento de datos. .CODE abre el segmento de cdigo, al final cdigo debe aparecer END. Justo despus de la directiva .CODE hay que inicializar el segmento de datos (ya que la directiva no genera cdigo): MOV AX, @DATA MOV DS, AX Los comentarios permiten describir las sentencias de un programa, facilitando su comprensin. Comienzan por ;, el ensamblador ignora el resto de la lnea.

Ejemplo:
INI_CONT: MOV CX, DI ; inicia el contador
Microprocesadores Ing. Carlos Ortega H. 19

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 funcin de los operandos de la instruccin.

Microprocesadores

Ing. Carlos Ortega H.

20

Modos de Direccionamientos
La instruccin 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 tamaos. MOV AX,CX ;transfiere el contenido de CX en AX
Microprocesadores Ing. Carlos Ortega H. 21

Modos de Direccionamientos
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.

Microprocesadores

Ing. Carlos Ortega H.

22

Modos de Direccionamiento
Direccionamiento directo Cuando el operando es una direccin de memoria. sta puede ser especificada con su valor entre [ ], o bien mediante una variable definida previamente (Se ver ms adelante).
Ejemplo: MOV AL,[1234H]; almacena en AL el contenido de la direccin de memoria DS:1234.

Microprocesadores

Ing. Carlos Ortega H.

23

Modos de Direccionamiento
Direccionamiento indirecto Cuando el operando esta en memoria en una posicin contenida en un registro (BX, BP, SI o DI). MOV AX,[BX] ; almacena en AX el contenido de la direccin de memoria DS:[BX].

Microprocesadores

Ing. Carlos Ortega H.

24

Modos de Direccionamiento
Direccionamiento Indirecto con Indice o Indexado

El operando se encuentra en una direccin 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] ADD [SI+DESP],BX MOV AX,desp[DI] ADD desp[SI],BX

Microprocesadores

Ing. Carlos Ortega H.

25

Modos de Direccionamiento
Direccionamiento con base e indice o Indexado a base
El operando se encuentra en una direccin 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 CS:[BX+SI+DESP],CX

MOV AX,ES:desp[BX][DI]
MOV CS:desp[BX][SI],CX

Microprocesadores

Ing. Carlos Ortega H.

26

Microprocesadores

Ing. Carlos Ortega H.

27