Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
Bajo nivel
Ensamblador
Maquina
001110011010100
Los lenguajes de bajo nivel son mas fciles de utilizar que los lenguajes mquina, pero, al igual que ellos, dependen de la mquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador.
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. 0110 1001 1010 1011
Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la computadora en esto se diferencia esencialmente del lenguaje mquina, sino que requiere una fase de traduccin al lenguaje mquina.
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.
Los lenguajes ensambladores presentan la ventaja frente a los lenguajes mquina de su mayor facilidad de codificacin y, en general, su velocidad de clculo.
La segunda razn es el control total de la PC que se tiene con el uso del mismo.
El ensamblador permite una optimizacin ideal en los programas tanto en su tamao como en su ejecucin.
Dependencia total de la mquina lo que impide la transportabilidad de los programas. El lenguaje ensamblador del PC es distinto del lenguaje ensamblador del Apple Macintosh. La formacin de los programadores es ms compleja que la correspondiente a los programadores de alto nivel, ya que no slo las tcnicas de programacin, sino tambin el conocimiento del interior de la mquina.
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.
Su arquitectura interna consta de las siguientes partes Unidad de control Unidad Aritmtica lgica Registros Internos Buses internos Interrupciones
Secuencia de acciones
1. 2. 3.
4.
5.
Se inicia en una posicin de memoria definida Se lee el dato de esa posicin y se manda al control La unidad de control decodifica la instruccin y la ejecuta en seales adecuadas Se incrementa el contador del programa (registro que indica a que posicin se debe dirigir) Se repite proceso desde el punto 2, hasta recibir unas seal del exterior
ALU
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 aritmtico lgicas 2. Cargar o leer datos 3. Saltos o interrupciones
Regsitros 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
Buses Internos
Caminos de comunicacin que conectan dos o mas dispositivos o acceder a diferentes partes del circuito 1. Bus de direccin: para seleccionar 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
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. 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.
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
Es un tipo de microprocesador con las siguientes caractersticas fundamentales: Instrucciones de tamao fijo y presentadas en un reducido nmero de formatos. Slo las instrucciones de carga y almacenamiento acceden a la memoria de datos. Adems estos procesadores suelen disponer de muchos registros de propsito general. El objetivo de disear mquinas con esta arquitectura es posibilitar la segmentacin y el paralelismo en la ejecucin de instrucciones y reducir los accesos a memoria. Esta surge con los lenguejes de alto nivel
Es un sistema basado en un procesador que posee un juego de instrucciones, un hardware y un software optimizados para aplicaciones que requieran operaciones numricas a muy alta velocidad. Debido a esto es especialmente til para el procesado y representacin de seales analgicas en tiempo real: en un sistema que trabaje de esta forma (tiempo real) se reciben muestras normalmente provenientes de un conversor analgico/digital (ADC).
Caracteristicas: 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
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
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 aritmtico-lgica, 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.
Esta unidad central de procesamiento est constituida, esencialmente: 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.
Se denominan as los ensambladores que se utilizan en una computadora que posee un procesador diferente al que tendrn las computadoras donde va a ejecutarse el programa objeto producido. El empleo de este tipo de traductores permite aprovechar el soporte de medios fsicos (discos, impresoras, pantallas, etc.), y de programacin que ofrecen las mquinas potentes para desarrollar programas que luego los van a ejecutar sistemas muy especializados en determinados tipos de tareas.
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.
Los microprocesadores poseen dos tipos de memoria interna: Memoria RAM (memoria de acceso aleatoria) Memoria ROM (memoria de solo lectura)
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
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.
RAM
ROM
EPROM. (Memoria de solo lectura programable y borrable). EEPROM. (Memoria de solo lectura programable y borrable elctricamente).
Memoria flash.
SEGMENTOS Y DIRECCIONAMIENTO
El procesador se divide en dos unidades lgicas : Unidad de ejecucin (EU) Unidad de interfaz del bus (BIU)
El BIU enva instrucciones y datos a la EU. La funcin mas importante del BIU es manejar la unidad de control del bus, los registros de segmentos, y la cola de instrucciones. La BIU controla los buses que transfieren los datos a la EU, a la memoria y a los dispositivos de E/S externos, mientras que los registros de segmentos controlan el direccionamiento de memoria
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 La EU solicita instrucciones de maquina de la cola de instrucciones de la BIU Mientras la EU esta ocupada ejecutando una instriccion el BIU busca otra en la memoria, esto aumenta la velocidad de procesamiento.
Un segmento es un area especial en un programa que incia en un limite de una localidad regularmente divisible entre 16 o 10 hex Un segmento, puede estar ubucado 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 direccion en el registro del segmento apropiado
Los tres segmentos principales son: Segmentos de cdigo Segmentos de datos Segmentos de pila
La pila contiene los datos y direcciones que se necesitan guardar temporalmente o para el uso de sus llamadas subrutinas. El registro del segmento de la pila (SS) direcciona el segmento de la pila
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 area 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
REGSITRO SS
El registro SS permite la colocacion en memoria de una pila para almacenamiento temporal de direcciones y datos.
REGISTRO ES
Algunas operaciones con cadenas de caracteres utilizan regsitro extra de segmento para manejar el direccionamiento de memoria. Un registro ES esta asociado con un registro DI (indice)
REGISTRO FS y GS
El registro apuntador de instrucciones (IP) contiene el desplezamiento de direcciones de la siguiente direccion que se ejecuta.
REGISTROS APUNTADORES
Los registros apuntador de pila (SP) y BP (apuntador base) estan asociados con el registro SS y permiten al sistema acceder a datos de la pila
REGISTRO BP
Facilita la referencia de parametros los cuales son datos y direcciones transmitidos via pila
Los registros de proposito general AX, BX, CX, y DX, con caballos de batalla del sistema, en el sentido que se puede direccionar como una palabara o como una parte de un byte.
Registro AX
REGISTRO BX
Es conocido como registro base y es el unico de proposito general, usado para la transferencia de datos entre la memoria y el procesador
REGISTRO CX
REGISTRO DX
Se utiliza para operaciones de multiplicacion y division junto con AX y en operaciondes 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
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
Las tcnicas de direccionamiento se utilizan con la siguiente finalidad: Dar versatilidad Reducir el numero de bits del campo del operando
La disponibilidad de diferentes esquemas de direccionamiento da al programador flexibilidad para escribir programas eficientes en cuanto la numero de instrucciones y el tiempo de ejecucin.
Inmediato
absoluto
Directo
Autodecrementa
Indirecto
Propios es cuando el operando esta en una direccin concreta Impropio es cuando puede estar en registros del procesador.
Direccionamiento implcito
Particularmente en instrucciones que no accesan memoria, o bien, tienen una forma especfica de accesarla. Ejemplos: PUSHF, POPF, NOP
Direccionamiento inmediato
El operando esta especificado con el direccionamiento directo por registro Usa solamente registros como operandos Es el ms rpido, pues minimiza los recursos necesarios (toda la informacin fluye dentro del EU del CPU) Ejemplo: MOV AX, BX
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.
Formato: [BX o BP + SI o DI (opcionales)+constante (opcional)] BX 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.
MODOS Inmediato Directo por registro Indirecto por registro Absoluto Relativo
UTILIDADES Operaciones con constantes Variables locales de procedimientos no recursivos Variables referenciadas a travs de apuntadores Direcciones del sistema Variables globales
Indexado
Autoincremental
Autodecremental
.386 MODEL FLAT, STDCALL .DATA <tu data (informacin) inicializada> .DATA? <tu data no inicializada> .CODE <Etiqueta> <tu cdigo> End <etiqueta>