Professional Documents
Culture Documents
UNIDAD 1
ENSAMBLADOR
Es un lenguaje de programacin de bajo nivel para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables.
Implementa una representacin simblica de los cdigos de mquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura legible por un programador
Alto nivel
Mediano nivel
C BCPL
Bajo nivel
Ensamblador
Maquina
001110011010100
Por ejemplo, nemotcnicos tpicos de operaciones aritmticas son: en ingls, ADD, SUB, DIV, etc.; en espaol, SUM, RES, DIV,etc. Una instruccin tpica de suma sera: ADD M, N, P
Esta instruccin podra significar sumar el nmero contenido en la posicin de memoria M al nmero almacenado en la posicin de memoria N y situar el resultado en la posicin de memoria P. Evidentemente es mucho ms sencillo recordar la instruccin anterior con un nemotcnico que su equivalente en cdigo mquina.
Un programa escrito en lenguaje ensamblador puede ser ejecutado directamente por computadora en esto se diferencia esencialmente lenguaje mquina, sino que requiere una fase traduccin al lenguaje mquina.
no la del de
El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje mquina se conoce como programa objeto, ya directamente entendible por la computadora.
El traductor de programas fuente a objeto es un programa llamado ensamblador, existente en casi todos los computadores.
El ensamblador permite una optimizacin ideal en los programas tanto en su tamao como en su ejecucin.
ESCALABILIDAD
Es la propiedad deseable de un sistema, una red o un proceso, que indica su habilidad para extender el margen de operaciones sin perder calidad, o bien manejar el crecimiento continuo de trabajo de manera fluida.
MICROPROCESADOR
El microprocesador o simplemente procesador, es el circuito integrado central y ms complejo de una computadora El procesador es un circuito integrado constituido por millones de componentes electrnicos integrados.
Registros
internos
Interrupciones
Secuencia de acciones
1.Se
inicia en una posicin de memoria definida 2.Se lee el dato de esa posicin y se manda al control 3.La unidad de control decodifica la instruccin y la ejecuta en seales adecuadas 4.Se incrementa el contador del programa (registro que indica a que posicin se debe dirigir) 5.Se repite proceso desde el punto 2, hasta recibir unas seal del exterior
ALU
Circuito digital que realiza operaciones aritmticas y lgicas
Unidad de control
Cerebro del microprocesador, genera seales de control interno y externo.
Recibe cdigos los cuales decodifica y ejecuta. Los cdigos pueden ser:
1.Operaciones 2.Cargar
aritmtico lgicas
o leer datos
3.Saltos
o interrupciones
Registros internos
Posiciones de memoria con utilidad general o especifica. Tipos: 1.Registros de datos: operaciones aritmticas lgicas y manipulacin de datos 2.Registros de Direcciones : para acceder a posiciones de memoria - Contador de programa: leer o escribir datos de programa - Puntero de pila: Recuperar y guardar datos de uso interno - ndices: para acceder a posiciones de memoria en forma relativa 3. Registro de estado: para informacin especifica
Interrupciones
Utilizadas para interrumpir la secuencia del programa.
Buses Internos
Caminos de comunicacin que conectan dos o mas dispositivos o acceden a diferentes partes del circuito 1. Bus de direccin: selecciona posicin de memoria para leer o escribir datos 2. Bus de datos: transmitir datos
El microprocesador se dividen por el numero de bits que conforman el dato 4, 8 , 16, 32, 46 bits
Buses Internos
3. Bus de control: para sincronizar actividades y transacciones con los perifricos del sistema
Von Neumann
Es una de las arquitecturas mas primitivas, cuando se invento los programas eran muy pequeos y los costos de memoria eran muy altos. En esta estructura, tanto datos como programa son guardados en la misma memoria y accesados en el mismo bus. Cada instruccin es leda de memoria, decodificada y ejecutada.
Von Neumann
Durante el estado de decodificacin algunos operadores son ledos de la misma memoria.
Las computadoras Von Neumann son llamadas tambin computadoras de almacenamiento de programas, porque los programas son guardados en ROM, la cual no se cambia durante el tiempo de ejecucin.
Von Neumann
Arquitectura Harvard
Esta es una modificacin de la arquitectura Von Neumann, en esta arquitectura se separa la salida (direcciones y bus de datos) de datos para accesar al cdigo (programa) y datos (operadores).
Esto hace posible leer datos e instrucciones al mismo tiempo (en diferentes buses) Desde que las instrucciones tienen un bus de datos separados, la siguiente instruccin puede ser leda mientras se decodifica y ejecutan las instrucciones actuales
Caractersticas:
Necesita una memoria donde almacenar los datos con los que trabajar y el programa que ejecuta Puede trabajar con varios datos en paralelo y un diseo e instrucciones especficas para el procesado digital.
VLIW PROCESADOR
Very Long Instruction Word. Esta arquitectura de
CPU implementa una forma de paralelismo a nivel de instruccin. Es similar a las arquitecturas superescalares, ambas usan varias unidades funcionales (por ejemplo varias ALUs, varios multiplicadores, etc) para lograr ese paralelismo.
Los procesadores con arquitecturas VLIW se caracterizan, como su nombre indica, por tener juegos de instrucciones muy simples en cuanto a nmero de instrucciones diferentes, pero muy grandes en cuanto al tamao de cada instruccin.
Ventajas Simplificacin de la arquitectura hardware al no tener que planificar el cdigo. Menor potencia y consumo.
Inconvenientes Requiere compiladores mucho ms complejos. Cualquier mejora en la arquitectura hardware implica un cambio en el juego de instrucciones (compatibilidad hacia atrs nula).
SMID
Single Instruction, Multiple Data es una tcnica empleada para
conseguir paralelismo a nivel de datos.
SIMD consisten en instrucciones que aplican una misma operacin sobre un conjunto ms o menos grande de datos. Es una organizacin que influye muchas unidades de procesamiento bajo la supervisin de una unidad de control comn. Todos los procesadores reciben la misma instruccin de la unidad de control, pero operan sobre diferentes conjuntos de datos. Es decir la misma instruccin es ejecutada de manera sncrona por todas las unidades de procesamiento.
MULTICORE-PROCESADOR
A multi-core processor Es un componente de computadora con dos o mas procesadoresindependientes (called "cores"), los cuales son unidades que leen y ejecutan isntrucciones de programas. Los datos en la instruccion le dicen al procesador que hacer. Las instrucciones hacen cosas muy basicas como leer datos de meoria o mandar datos a un display, pero son procesados rapidamente.
PROCESADOR STREAM
El procesador STREAM, acrnimo de Sistema de Tiempo Real para la Extraccin y Anlisis de Movimiento, es una arquitectura de procesamiento de imgenes implementada en una tarjeta PCI
Desde el punto de vista funcional es, bsicamente, el encargado de realizar toda operacin aritmticolgica, de control y de comunicacin con el resto de los componentes integrados que conforman un PC, siguiendo el modelo base de Von Neumann.
Tambin es el principal encargado de ejecutar los programas, sean de usuario o de sistema; slo ejecuta instrucciones programadas a muy bajo nivel, realizando operaciones elementales, bsicamente, las aritmticas y lgicas, tales como sumar, restar, multiplicar, dividir, las lgicas binaris y accesos a memoria.
procesamiento
est
por registros, una unidad de control y una unidad aritmtico lgica (ALU)
TIPOS DE ENSAMBLADORES
Aunque todos los ensambladores realizan bsicamente las mismas tareas, podemos clasificarlos de acuerdo a caractersticas. As podemos clasificarlos en:
-Ensambladores Cruzados (Cross-Assembler). - Ensambladores Residentes. - Macroensambladores. - Micro ensambladores. - Ensambladores de una fase. - Ensambladores de dos fases.
Ensambladores Residentes.
Son aquellos que permanecen en la memoria principal de la computadora y cargan, para su ejecucin, al programa objeto producido. Este tipo de ensamblador tiene la ventaja de que se puede comprobar inmediatamente el programa sin necesidad de transportarlo de un lugar a otro, como se haca en crossassembler, y sin necesidad de programas simuladores. Sin embargo, puede presentar problemas de espacio de memoria, ya que el traductor ocupa espacio que no puede ser utilizado por el programador. Asimismo, tambin ocupar memoria el programa fuente y el programa objeto. Esto obliga a tener un espacio de memoria relativamente amplio. Es el indicado para desarrollos de pequeos sistemas de control y sencillos automatismo empleando microprocesadores
MACROENSAMBLADORES.
Son ensambladores que permiten el uso de macroinstrucciones (macros). Debido a su potencia, normalmente son programas robustos que no permanecen en memoria una vez generado el programa objeto. Puede variar la complejidad de los mismos, dependiendo de las posibilidades de definicin y manipulacin de las macroinstrucciones, pero normalmente son programas bastantes complejos, por lo que suelen ser ensambladores residentes.
MICRO ENSAMBLADORES.
Generalmente, los procesadores utilizados en las computadoras tienen un repertorio fijo de instrucciones, es decir, que el intrprete de las mismas interpretaba de igual forma un determinado cdigo de operacin. El programa que indica al intrprete de instrucciones de la UCP cmo debe actuar se denomina microprograma. El programa que ayuda a realizar este microprograma se llama micro ensamblador. Existen procesadores que permiten la modificacin de sus microprogramas, para lo cual se utilizan micro ensambladores.
Estos ensambladores leen una lnea del programa fuente y la traducen directamente para producir una instruccin en lenguaje mquina o la ejecuta si se trata de una pseudoinstruccin. Tambin va construyendo la tabla de smbolos a medida que van apareciendo las definiciones de variables, etiquetas, etc. Debido a su forma de traduccin, estos ensambladores obligan a definir los smbolos antes de ser empleados para que, cuando aparezca una referencia a un determinado smbolo en una instruccin, se conozca la direccin de dicho smbolo y se pueda traducir de forma correcta. Estos ensambladores son sencillos, baratos y ocupan poco espacio, pero tiene el inconveniente indicado
Los bytes en memoria se numeran de forma consecutiva, iniciando con 00, de modo que cada localidad tiene un un numero de direccion unico.
64 k sistema base ROM Inicio Dec 960 k Direccion Hex F0000 1924 k area de expansion De memoria (ROM) 128 k area de despliegue de video (RAM) 640 k memoria (RAM)
CLASIFICACION DE MEMORIAS.
Las memorias se clasifican, por la tecnologa empleada y segn la forma en la que se puede modificar su contenido. Las cuales son:
EDO RAM. (Memoria de acceso aleatorio con salida de datos extendida). DRAM. (Memoria dinmica de acceso aleatorio).
RAM
SDRAM. (Memoria dinmica de paginacin de acceso aleatorio). RDRAM. (Memoria dinmica de acceso aleatorio para tecnologas rambus).
ROM
EPROM. (Memoria de solo lectura programable y borrable). EEPROM. (Memoria de solo lectura programable y borrable elctricamente).
Memoria flash.
SEGMENTOS Y DIRECCIONAMIENTO
El BIU permite acceso a las instrucciones, puede acceder a estas desde la memoria y colocarlas en la cola de instrucciones. Tamao de la cola de 4 a 32 bytes |La EU y la BIU trabajan en paralelo, La EU notifica al BIU cuando necesita acceso a los datos en memoria o a dispositivos de E/S
Un segmento es un rea especial en un programa que inicia en un limite de una localidad regularmente divisible entre 16 o 10 hex. Un segmento, puede estar ubicado casi en cualquier lugar y puede ser hasta de 64 K. Se puede tener cualquier numero de segmentos, para direccionar un segmento en particular basta cambiar la direccin en el registro del segmento apropiado.
Comnmente la primera instruccin ejecutable esta en el inicio del segmento, el SO enlaza a esa localidad para iniciar la ejecucin del programa.
REGISTROS
Los registros del procesador se emplean para controlar las instrucciones en ejecucion, manejar direccionamiento, y proporcionar capacidad aritmetica.
Son direccionables por medio de un nombre, los bits se numeran de derecha a izquierda
REGISTRO DE SEGMENTO
Un registro de segmento tiene 16 bits de longitud y facilita un rea de memoria para el direccionamiento conocida como el segmento actual.
REGISTRO CS
Registro CS
El DOS almacena la direccin inicial del segmento de cdigo de un programa en el registro CS
REGISTRO DS
La direccin inicial de un segmento de programa es almacenada en el registro DS
REGSITRO SS
El registro SS permite la colocacin en memoria de una pila para almacenamiento temporal de direcciones y datos.
REGISTRO ES
Algunas operaciones con cadenas de caracteres utilizan registro extra de segmento para manejar el direccionamiento de memoria. Un registro ES esta asociado con un registro DI (indice)
REGISTRO FS y GS
Son registros extras de segmento procesadores 80386 y posteriores. en los
REGISTROS APUNTADORES
Los registros apuntador de pila (SP) y BP (apuntador base) estn asociados con el registro SS y permiten al sistema acceder a datos de la pila
REGISTRO BP
Facilita la referencia de parmetros los cuales son datos y direcciones transmitidos va pila
Registro AX
Es el acumulador principal, usado para operaciones de E/S y la mayor parte de la aritmtica
REGISTRO BX
Es conocido como registro base y es el nico de propsito general, usado para la transferencia de datos entre la memoria y el procesador
REGISTRO CX
Se utiliza como contador de bucles, operaciones con cadenas y desplazamientos
REGISTRO DX
Se utiliza para operaciones de multiplicacin y divisin junto con AX y en operaciones de entrada y salida de puertos, su mitad inferior contiene el numero de puertos
REGISTROS INDICE
REGISTRO SI (indice fuente) y DI (indice destino)
Requerido para operaciones con cadenas
REGISTROS DE BANDERAS
Sirven para indicar el estado actual de la maquina y el resultado del procesamiento.
OF (overflow): overflow indica desbordamiento DF (direccin): Designa direccin hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteres. IF (Interrupcin): indica una interrupcin externa TF (trampa): Permite la operacin del procesador en modo de un paso SE (signo): Contiene el signo resultante de una operacin aritmtica ZF (cero): Indica el resultado de una operacin aritmtica o de una comparacin.
AF (acarreo auxiliar): contiene el acarreo del bit 3 de un dato de 8 bits, para aritmtica especializada PF (paridad) : Indica paridad, par o impar CF (acarreo) : Contiene el acarreo de un orden mas alto, despues de una operacin aritemtica.
DIRECCIONAMIENTO
El campo de operacin de una instruccin especifica la operacin que se debe realizar. Esta debe ser ejecutada sobre algunos datos almacenados en registros de la computadora, o sobre operandos almacenados en memoria
El modo de direccionamiento especifica la forma de interpretar la informacin contenida en cada campo de operando para localizar, en base a esta informacin, el operando.
Entonces los modos de direccionamiento de un procesador son las diferentes formas de transformacin del campo operando de la instruccin en la direccin del operando
Inmediato
absoluto
Direccionamiento implcito
El operando se especifica en la misma definicin de la instruccin.
La instruccin no lleva parmetros. Particularmente en instrucciones que no accesan memoria, o bien, tienen una forma especfica de accesarla. Ejemplos: PUSHF, POPF, NOP
Direccionamiento inmediato
El operando figura en la instruccin no el la direccin
Ejemplo: MOV AH, 9
con
el
Direccionamiento directo
Uno de los operandos involucra una localidad especfica de memoria.
El valor constante se tiene que buscar en memoria, en la localidad especificada. Es ms lento que los anteriores, pero es el ms rpido para ir a memoria, pues ya sabe la localidad, la toma de la instruccin y no la tiene que calcular. Ejemplo: MOV AH, Variable
Direccionamiento indirecto
Se usan los registros SI, DI como apuntadores
El operando indica una localidad de memoria, cuya direccin est en SI o DI. Es ms lento que los anteriores, pues tiene que calcular la localidad Ejemplos: MOV AL, [SI]
Direccionamiento relativo
No es necesario utilizar todos los bits de la direccin de memoria en el campo operando, basta con usar los bits precisos. Esto es debido a que las direcciones referenciadas por el programa no estn alejadas unas de las otras.
o BP + SI o DI (opcionales)+constante (opcional)]
o BP indica una localidad base de la memoria A partir de BX o BP, se puede tener un desplazamiento variable y uno constante La diferencia es el segmento sobre el que trabajan por defecto: BX por defecto en el segmento de datos BP por defecto en el segmento de pila. Ejemplos: MOV AX, [BX] MOV DX, [BX+2] MOV CX, [BX+DI] MOV DL, [BX+SI+3]
Direccionamiento indexado
La direccin del operando tambin se calcula sumando un registro del CPU al campo del operando
Direccionamiento postincremental
La direccin del operando se encuentra en un registro y este es incremental despus de acceder al operando.
Direccionamiento autodecremental
Para obtener la direccin del operando hay que decrementar un registro en el tamao del operando.
.386
MODEL .DATA <tu
FLAT, STDCALL
data (informacin) inicializada> .DATA? <tu data no inicializada> .CODE <Etiqueta> <tu cdigo> End <etiqueta>