270 likes | 463 Views
Universidad Nacional de Ingeniería Microprocesadores. Unidad II: Arquitectura y Programación de un Microprocesador (8086). Contenidos. Arquitectura Von Newman Arquitectura Harvard. Microprocesador 8086 Organizacion de la Memoria Registros del 8086 Lenguaje de Programacion: Ensamblador.
E N D
Universidad Nacional de Ingeniería Microprocesadores Unidad II: Arquitectura y Programación 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.
Arquitectura Von Newman – La CPU accede a una única memoria que tiene zonas separadas de código y datos. – Suelen ser CISC – El formato de instrucciones es de longitud variable y el juego de instrucciones 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. Microprocesadores Ing. Carlos Ortega H.
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. Microprocesadores Ing. Carlos Ortega H.
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. Microprocesadores Ing. Carlos Ortega H.
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. Microprocesadores Ing. Carlos Ortega H.
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. 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 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. Microprocesadores Ing. Carlos Ortega H.
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. Microprocesadores Ing. Carlos Ortega H.
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. Microprocesadores Ing. Carlos Ortega H.
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 das Z (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. Microprocesadores Ing. Carlos Ortega H.
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 Microprocesadores Ing. Carlos Ortega H.
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. Microprocesadores Ing. Carlos Ortega H.
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 Microprocesadores Ing. Carlos Ortega H.
[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 Microprocesadores Ing. Carlos Ortega H.
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 Microprocesadores Ing. Carlos Ortega H.
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). 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. Estructura de un Programa en Ensamblador Microprocesadores Ing. Carlos Ortega H.
.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. 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 Microprocesadores Ing. Carlos Ortega H.
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. Microprocesadores Ing. Carlos Ortega H.
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 Microprocesadores Ing. Carlos Ortega H.
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 Microprocesadores Ing. Carlos Ortega H.
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. Microprocesadores Ing. Carlos Ortega H.
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 Microprocesadores Ing. Carlos Ortega H.
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 Microprocesadores Ing. Carlos Ortega H.
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 Microprocesadores Ing. Carlos Ortega H.
Muchas Gracias por su Atención Microprocesadores Ing. Carlos Ortega H.