Descarga en PDF

Download Report

Transcript Descarga en PDF

Universidad Nacional de Ingeniería
Microprocesadores
Unidad II: Arquitectura y Programación de un
Microprocesador (8086)
Microprocesadores
Ing. Carlos Ortega H.
1
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 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.
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 características 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 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 (pipeline) 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.
5
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 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.
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 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.
7
Registros del 8086
Microprocesadores
Ing. Carlos Ortega H.
8
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.
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 código de la localidad de memoria que
contiene la siguiente instrucción que va a ejecutar el microprocesador.
Microprocesadores
Ing. Carlos Ortega H.
10
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.
11
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.
12
Registro Banderas
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).
Microprocesadores
Ing. Carlos Ortega H.
13
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.
14
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.
15
Estructura de un Programa en Ensamblador
[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.
Microprocesadores
Ing. Carlos Ortega H.
16
Estructura de un Programa en Ensamblador
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.
Microprocesadores
Ing. Carlos Ortega H.
17
Estructura de un Programa en Ensamblador
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.
Microprocesadores
Ing. Carlos Ortega H.
18
Estructura de un Programa en Ensamblador
.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
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 función de los
operandos de la instrucción.
Microprocesadores
Ing. Carlos Ortega H.
20
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.
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 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.
23
Modos de Direccionamiento
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].
Microprocesadores
Ing. Carlos Ortega H.
24
Modos de Direccionamiento
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
Microprocesadores
Ing. Carlos Ortega H.
25
Modos de Direccionamiento
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
Microprocesadores
Ing. Carlos Ortega H.
26
Microprocesadores
Ing. Carlos Ortega H.
27