You are on page 1of 112

LENGUAJE ENSAMBLADOR

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

Cobol Pascal Basic Java

Mediano nivel

C BCPL

Bajo nivel

Ensamblador

Maquina

001110011010100

LENGUAJES DE BAJO NIVEL


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.

Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotcnicos.

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 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.

Ventajas del lenguaje ensamblador.


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.

Desventajas del lenguaje ensamblador.


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 Unidad Buses

de control Aritmtica lgica Internos

Registros

internos

Interrupciones

Arquitectura Interna del microprocesador

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

Arquitectura del microprocesador

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

CLASIFICACION DEL MICROPROCESADOR


Una forma es en funcin de las instrucciones que son capaces de ejecutar. Microprocesadores con tecnologa CISC y RISC CISC (Complex Instructions Set Computer): Interpreta y ejecuta un gran numero de instrucciones, lo cual los hace lentos
RISC ( Reduced Instructios Set Computer): Interpreta y ejecuta solo instrucciones reducidas, son mas rpidos que los CISC

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

Derivados de la arquitectura Harvard


Existen algunos derivados de la arquitectura Harvard, las cuales tienen mltiples buses de datos para accesar datos, tales arquitecturas son mas aplicadas para aplicaciones intensivas de datos (como procesos de seales digitales) las cuales requieren mltiples operadores de datos para la ejecucin de cada instruccin. Desde que estos operadores son ledos en paralelo se logro una gran mejora en ejecucin.

Complex Instruction Set Computer (CISC)


En los inicios de la computacin, se codificaba en cdigo ensamblador o maquina.
Para hacer rpida y fcil la programacin las computadoras soportaban un gran numero de instrucciones. Estas instrucciones podan hacer operaciones complejas, una sola instruccin poda leer uno o mas operadores y hacer una o mas operaciones con esos operadores.

Complex Instruction Set Computer (CISC)


Esto hacia la programacin fcil y con menos cdigo. Otro factor favorable fue el costo de memoria, las memorias eran costosas, por lo que los diseadores hacan juegos de instrucciones densos

Reduced Instruction Set (RISC)


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.

Reduced Instruction Set (RISC)


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 lenguajes de alto nivel

Procesador digital de seal


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).

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.

Esta unidad central de constituida, esencialmente:


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 Cruzados (Cross-Assembler).


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.

ENSAMBLADORES DE UNA FASE.

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 microprocesadores poseen dos tipos de memoria interna:


Memoria Memoria

RAM (memoria de acceso aleatoria) 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 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:

Memoria RAM (memoria de acceso aleatorio)


Memoria ROM (memoria de solo lectura)

CLASIFICACION DE MEMORIA RAM

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).

SRAM. (Memoria esttica de acceso aleatorio.

CLASIFICACION DE MEMORIA ROM

PROM. (Memoria programable de solo lectura).

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 papel de la EU es ejecutar instrucciones, contiene el ALU, CU y varios registros

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 instruccin el BIU busca otra en la memoria, esto aumenta la velocidad de procesamiento.

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.

Los tres segmentos principales son:


Segmentos Segmentos Segmentos

de cdigo de datos de pila

Segmentos de cdigo (CS)


Contiene instrucciones ejecutadas. de maquina que son

Comnmente la primera instruccin ejecutable esta en el inicio del segmento, el SO enlaza a esa localidad para iniciar la ejecucin del programa.

Segmento de datos (DS)


Contiene datos, constantes y reas de trabajo definidos por el programa
El registro del DS direcciona al segmento de datos

Segmento de pila (SS)


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.

Los registros de segmentos contienen la direccin inicial de cada segmento

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

REGISTRO DE APUNTADOR DE DIRECCIONES


El registro apuntador de instrucciones (IP) contiene el desplazamiento de direcciones de la siguiente direccin que se ejecuta.

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

REGISTROS DE PROPOSITO GENERAL


Los registros de propsito general AX, BX, CX, y DX, con caballos de batalla del sistema, en el sentido que se puede direccionar como una palabra o como una parte de un byte.
La La

parte izquierda es la parte alta parte derecha es la parte baja

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

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.

Registro Implcito Pila Registro Memoria Directo

Inmediato

absoluto

Contador de programa Apuntador de pila

Base (base y desplazamiento) Relativo a registros (indexados) ndice

Autoincremental Autoindexado Autodecremental Indirecto

Los modos de direccionamiento tambin pueden clasificarse en propios e impropios


Propios es cuando el operando esta en una direccin concreta. Impropio es cuando puede estar en registros del procesador.

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

Direccionamiento por registro


El operando esta especificado 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

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.

Direccionamiento por base y desplazamiento


Formato:
[BX BX

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>

You might also like