You are on page 1of 45

El microprocesador

Microprocesador

Es un circuito integrado que contiene todos los elementos de una "unidad central de procesamiento.

Registros

Unidad Aritmticolgica

Micro

Unidad de control

Unidad en coma flotante

Unidad aritmtico lgica

Es un circuito digital que calcula operaciones aritmticas y operaciones lgicas entre dos nmeros

Es la encargada de activar o desactivar los diversos componentes del microprocesador en funcin de la instruccin que el microprocesador est Unidad de ejecutando y en funcin tambin de la etapa de dicha instruccin que se est ejecutando. control

Es una parte de la CPU que realiza las operaciones y clculos llamados Unidad de por los programas.
ejecucin

Cach

Es un conjunto de datos duplicados de otros originales, con la propiedad de que los datos originales son costosos de acceder, normalmente en tiempo, respecto a la copia en el cach.

Buses

Transferencias internas de datos que se dan en un sistema computacional en funcionamiento.

Funcionamiento
PreFetch:

El microprocesador ejecuta instrucciones almacenadas como nmeros binarios organizados secuencialmente en la memoria principal.

Pre lectura de la instruccin desde la memoria principal.

Fetch: envo de la instruccin al decodificador.

Decodificacin de la instruccin:
Determinar qu instruccin es y por tanto qu se debe hacer.

Lectura de operandos : (si los hay).

Ejecucin: Lanzamiento de las Mquinas de estado


que llevan a cabo el procesamiento.

Escritura de los resultados en la memoria


principal o en los registros

Buses
Todos los procesadores poseen un bus principal o de sistema por el cual se envan y reciben todos los datos, instrucciones y direcciones desde los integrados del chipset o desde el resto de dispositivos. Como puente de conexin entre el procesador y el resto del sistema, define mucho del rendimiento del sistema, su velocidad se mide en bits por segundo.

Uso general

Apuntadores e ndices

Registros

Segmentos

Banderas

Uso general
AX
(Acumulador)

Se utilizan en la forma en que desee el programador.

Conserva el resultado temporal despus de una operacin aritmtica o lgica.

BX (Base) CX (Contador) DX (Datos)

Conserva la direccin base de los datos que hay en la memoria.

Contiene el conteo de ciertas instrucciones para corrimientos (CL) y rotaciones del nmero de bytes(CX) Contiene la parte ms significativa de un producto; la parte ms significativa del dividendo antes de la divisin y el nmero de puerto de E/S para una instruccin variable E/S.

Apuntadores e ndices

Se utilizan para apuntar a la localidad de la memoria que contiene los datos del operando de muchas instrucciones.

BP (Apuntador
de base)

Se usan para direccionar a una matriz de datos en una pila de memoria.


Se emplea para direccionar datos fuente en forma indirecta para utilizarlos con las instrucciones de cadenas o arreglos. Se usan para direccionar datos destino de forma indirecta para utilizarlos con las instrucciones de cadenas o arreglos.

SI (ndice de
fuente)

DI (ndice de
destino)

IP (Apuntador de
instrucciones)

Se usan para direccionar a la siguiente instruccin que va a ejecutar el microprocesador.

Segmentos

Generan direcciones en la memoria junto con otros registros en el microprocesador.

CS (Cdigo)

Define la direccin inicial de la seccin de memoria que tiene el cdigo. Contiene la mayor parte de los datos utilizados por un programa. Lo utilizan algunas instrucciones para cadenas. Define la superficie de la memoria utilizada para la pila.

DS (Datos) ES (Extra o
adicional)

SS (Pila)

Banderas

Las banderas indican la condicin del microprocesador a la vez que controlan su funcionamiento.

C (Acarreo)

P (Paridad)

A (Acarreo Auxiliar)

Z (Cero)

S (signo)

T (Trampa)

I (Interrupcin)

D (Direccin)

O (Sobreflujo)

IOPL (Nivel de privilegio de E/S)

NT (Tarea anidada)

RF (Reanudar)

VM (Modo virtual)

AC (Comprobacin de alineacin)

Inmediato Relativo de base indexado

Registro

Relativo de base

Modos de direccionamient o

Directo

Indirecto indexado

Indirecto de registro

MOV Operando destino, Operando fuente


Inmediato
Es el modo de direccionamiento ms sencillo y rpido.

MOV AX, 15H


Esta instruccin pone el nmero hexadecimal 15H en el espacio AX

MOV Operando destino, Operando fuente


Registro
El contenido de un registro es pasado a otro registro.

MOV AX, BX
En esta instruccin el contenido de BX se pasa al espacio AX.

MOV Operando destino, Operando fuente


Directo
En este modo el operando se encuentra contenido en una localidad de memoria.

MOV AX, [0100]

MOV Operando destino, Operando fuente


Indirecto de registro
La direccin se encuentra contenido en un registro.

MOV AX, [BX]


En esta instruccin el contenido de BX es una direccin de memoria y el contenido en esa direccin se pasa al espacio AX.

MOV Operando destino, Operando fuente


Indirecto indexado

MOV [BX + SI], CX


La direccin de la localidad de memoria es igual a los valores de BX + SI

MOV Operando destino, Operando fuente


Relativo de base

MOV [BX + 5], CX


Ya no se usa un ndice sino que se especifica a que direccin guardarla.

MOV Operando destino, Operando fuente


Relativo de base indexado

MOV [BX + SI + 5], CX


Indica que va a iniciar desde el ndice 5.

Una interrupcin se genera cuando se quiere que la CPU deje de ejecutar el proceso en curso y ejecute una funcin especfica de quien produce la interrupcin. Cuando se ejecuta esta funcin especfica decimos que la CPU est atendiendo la interrupcin.

Se utilizan las interrupciones generalmente para dos motivos: Para permitir una comunicacin no bloqueada con los perifricos externos. Para conmutar las tareas dentro de un planificador.

INTERRUPCIONE S

HARDWARE TRAMPAS O EXCEPCIONES

SOFTWARE

Se pueden producir en cualquier momento independientemente de lo que est haciendo la CPU en ese momento. Las causas que lo producen son externas al procesador y a menudo suelen estar ligadas con distintos dispositivos de E/S. No son producidas por ninguna instruccin sino que son seales que producen los dispositivos para indicarle al procesador que necesitan ser 'atendidos'.

La placa base del computador utiliza un controlador para decodificar las interrupciones que no son mas que seales elctricas producidas por los dispositivos, coloca en el bus de datos informacin de que dispositivo interrumpi y activa la entrada INT de interrupcin de la CPU. Este chip controlador protege a la CPU y la asla de los dispositivos que interrumpen, adems de proporcionar flexibilidad al diseo del sistema. El controlador de interrupciones tiene un registro de estado para permitir o inhibir las interrupciones en el sistema.

Son aquellas que se producen de forma sncrona a la ejecucin del procesador y por tanto podran predecirse si se analiza con detenimiento la traza del programa que en ese momento estaba siendo ejecutado en la CPU. Son provocadas por el programador. Normalmente las causas de estas interrupciones suelen ser realizaciones de operaciones no permitidas tales como: la divisin por 0, el desbordamiento, el acceso a una posicin de memoria no permitida, fallo de pgina, etc.

Las excepciones se producen al realizar una operacin no permitida por lo que de algn modo podemos decir que no es controlada directamente por el programador sino que se producen por un fallo al programar. Una Interrupcin software se produce cuando un usuario solicita un recurso del ncleo, mediante una llamada al sistema, open, write, read, mount,..

Todas las interrupciones tiene tres funciones principales:

Un programa en lenguaje ensamblador estar formado por una secuencia de sentencias. Cada sentencia ocupa una sola lnea y tiene la siguiente estructura: [etiqueta] [operacin] [operandos] [;comentarios] Los cuatro campos de una sentencia son opcionales, si no aparece ninguno de ellos (una lnea en blanco) tendramos una sentencia vaca. Las sentencias se dividen en dos tipos: * Instrucciones: Estas sentencias representan rdenes al procesador y tras el proceso de compilacin generan cdigo ejecutable. * Directivas: Estas sentencias dirigen el proceso de compilacin o construccin del programa ejecutable. No generan cdigo ejecutable. Normalmente se utilizan para aumentar la legibilidad del cdigo fuente.

El Data Segment es una porcin de una direccin virtual de un programa, el cual contiene las variables globales y las variables estticas que son inicializadas por el programador. Esta porcin tiene un tamao definido para que cada programa dependiendo de la cantidad de contenidos , ya que todos los aqu son colocados por el programador antes de que el programa se cargue.

El segmento de cdigo (CS) contiene las instrucciones de maquina que son ejecutadas por lo comn la primera instruccin ejecutable esta en el inicio del segmento, y el sistema operativo enlaza a esa localidad para iniciar la ejecucin del programa. Como su nombre indica, el registro del CS direcciona el segmento de cdigo

En trminos sencillos, la pila contiene los datos y direcciones que se necesitan guardar temporalmente o para uso de sus llamadas subrutinas. El registro de segmento de la pila (SS) direcciona el segmento de la pila.

STACK SEGMENT STACK ; Segmento de pila DW 64 DUP (?) ; Define espacio en la pila STACK ENDS DATA SEGMENT ; Segmento de datos SALUDO DB Hola mundo!!,13,10,$ ; Cadena DATA ENDS CODE SEGMENT ; Segmento de Codigo ASSUME CS:CODE, DS:DATA, SS:STACK INICIO: ; Punto de entrada al programa MOV AX,DATA ; Pone direccion en AX MOV DS,AX ; Pone la direccion en los registros MOV DX,OFFSET SALUDO ; Obtiene direccion del mensaje MOV AH,09H ; Funcion: Visualizar cadena INT 21H ; Servicio: Funciones alto nivel DOS MOV AH,4CH ; Funcion: Terminar INT 21H CODE ENDS END INICIO ; Marca fin y define INICIO

La descripcin del programa es como sigue: 1.- Las declaraciones SEGMENT y ENDS definen los segmentos a usar. 2.- La variable SALUDO en el segmento DATA, define la cadena a ser desplegada. El signo de dlares al final de la cadena (denominado centinela) es requerido por la funcin de visualizacin de la cadena de MS-DOS. La cadena incluye los cdigos para carriage-return y line-feed. 3.- La etiqueta START en el segmento de cdigo marca el inicio de las instrucciones del programa. 4.- La declaracin DW en el segmento de pila define el espacio para ser usado por el stack del programa. 5.- La declaracin ASSUME indica que registros de segmento se asociarn con las etiquetas declaradas en las definiciones de segmentos.

6.- Las primeras dos instrucciones cargan la direccin del segmento de datos en el registro DS. Estas instrucciones no son necesarias para los segmentos de cdigo y stack puesto que la direccin del segmento de cdigo siempre es cargado en el registro CS y la direccin de la declaracin del stack segment es automticamente cargada en el registro SS. 7.- Las ltimas dos instrucciones del segmento CODE usa la funcin 4CH de MS-DOS para regresar el control al sistema operativo. Existen muchas otras formas de hacer esto, pero sta es la ms recomendada. 8.- La directiva END indica el final del cdigo fuente y especifica a START como punto de arranque.

Un ensamblador es el programa que convierte un listado de cdigo fuente en cdigo objeto, es decir, lenguaje mquina (el que finalmente interpretar el procesador) en el que slo le faltan las referencias a rutinas externas. El cdigo fuente es un fichero que contiene la secuencia de instrucciones .El cdigo objeto consta del cdigo en lenguaje mquina y de la informacin necesaria para enlazarlo con otros mdulos objeto.

Al construir un programa algunos de sus mdulos pueden colocarse en el mismo mdulo fuente y ensamblarse juntos, otros pueden estar en mdulos diferentes y ser ensamblados separadamente. Si se ensamblan por separado, el mdulo principal, que contiene la primera instruccin que se va a ejecutar, debe acabar con una sentencia END que indique el punto de entrada al programa, y cada uno de los otros mdulos deben terminar con una sentencia END sin ningn operando.

a combinacin linker/cargador debe crear todos los segmentos y asignaciones de direccin necesarios para permitirle al programa funcionar correctamente. En concreto, esta combinacin debe: Encontrar los mdulos que van a ser enlazados Construir el mdulo de carga asignando las posiciones de todos los segmentos de todos los mdulos objeto que se estn enlazando. Rellenar todos los desplazamientos de segmento que no pudieron ser determinados por el ensamblador. Rellenar todas las direcciones de los segmentos. Cargar el programa para su ejecucin.

A partir de los fuentes obtenidos de un editor, los fuentes se envan al Ensamblador el cual, traduce los nemotcnicos del lenguaje ensamblador al cdigo objeto de la maquina. Y crea un fichero especial de listado de variables y procedimientos. Por ltimo el Linker toma todos los ficheros objeto y con la informacin sobre las direcciones de memoria para las variables y procedimientos que contiene el fichero Listado, crea el fichero ejecutable final.

A partir de los fuentes obtenidos de un editor, los fuentes se envan al Ensamblador el cual, traduce los nemotcnicos del lenguaje ensamblador al cdigo objeto de la maquina. Y crea un fichero especial de listado de variables y procedimientos. Por ltimo el Linker toma todos los ficheros objeto y con la informacin sobre las direcciones de memoria para las variables y procedimientos que contiene el fichero Listado, crea el fichero ejecutable final. Normalmente en el proceso de ensamblado bastan con 2 pasos para determinar todas las direcciones, por ejemplo: Jmp etiq etiq:

En este caso, cuando el ensamblador no puede determinar la direccin de etiq, ya que sta est definida ms adelante, con lo que debe dejar un espacio y dar una segunda pasada para determinar exactamente el direccin de memoria a la que debe saltar. Por lo tanto, en el 1er paso se utiliza una variable denominada contador de posicin ($). A medida que se analiz el programa, se va incrementando dicha variable en funcin de los bytes que necesita cada sentencia. Por ejemplo: $ .CODE comi: mov ax, @data mov ds, ax mov cx, cont (3 bytes) (2 bytes) (5 bytes) 0 3 5 fuente 3 Editor fuente 2 fuente 1 Ensamblador obj 3 obj 2 obj 1 Linker Listado

Prctica 1: Introduccin a la programacin en ensamblador 2 repetir: dec cx (1 byte) 9 10 Para cada segmento se inicializa el contador de posicin. Ejemplo $ .DATA NUM db -29 VECTOR db 100 DUP ? CONT dw 5 01 101 103

Para cada smbolo (variable, constante, etiqueta), se determina su $, su tipo, su nombre de segmento. Con esta informacin, ensamblador construye la TABLA DE SIMBOLOS en esta primera pasada. Luego slo hay que buscar en esa tabla para determinar la direccin de cada etiqueta, constante o variable. El 2 paso comienza cuando se detecta END. Ayudado por las directivas y por los nemotcnicos de las instrucciones se comienza a general el cdigo mquina. Ejemplo: MOV CX, CONT 1 comprobar si el tipo de fuente y destino coinciden 2 comprobar si

You might also like