Vous êtes sur la page 1sur 12

UNIVERSIDAD POLITECNICA AMAZONICA

LENGUAJE ENSAMBLADOR

Docente:
Carrera Profesional:
Curso:
Estudiantes:

Ing. Marco Aurelio Porro Chulli


Ingeniera De Sistemas Y Telemtica
Microprocesadores
Lely Yojany Ydrogo Mego.
Deisy Gladys Vlchez Cieza.

Lenguaje ensamblador

Lenguaje ensamblador
1. Contenido
Definicin
El lenguaje ensamblador es un tipo de lenguaje de
bajo

nivel

utilizado

para

escribir

programas

informticos, y constituye la representacin ms


directa del cdigo mquina especfico para cada
arquitectura

de

computadoras

legible

por

un

programador.

Fue usado principalmente en los inicios del desarrollo de software, cuando an


no se contaba con los potentes lenguajes de alto nivel.
Actualmente se utiliza con frecuencia en ambientes acadmicos y de
investigacin, especialmente cuando se requiere la manipulacin directa de
hardware, se pretenden altos rendimientos o un uso de recursos controlado y
reducido.
Muchos dispositivos programables (como los microcontroladores) aun cuentan
con el ensamblador como la nica manera de ser manipulados.
Caractersticas
El cdigo escrito en lenguaje ensamblador posee una cierta dificultad de
ser entendido directamente por un ser humano ya que su estructura se
acerca ms bien al lenguaje mquina, es decir, lenguaje de bajo nivel.
El lenguaje ensamblador es difcilmente portable, es decir, un cdigo
escrito para un microprocesador en particular necesita ser modificado
muchas veces en su totalidad para poder ser usado en otro
microprocesador.
Los programas hechos en lenguaje ensamblador son generalmente ms
rpidos y consumen menos recursos del sistema (memoria RAM y ROM).
Al programar cuidadosamente en lenguaje ensamblador se pueden crear
programas que se ejecutan ms rpidamente y ocupan menos espacio que
con lenguajes de alto nivel.

Microprocesadores

Lenguaje ensamblador

Con el lenguaje ensamblador se tiene un control muy preciso de las tareas


realizadas por un microprocesador por lo que se pueden crear segmentos
de cdigo difciles de programar en un lenguaje de alto nivel.
Ventajas

Velocidad: El proceso de traduccin que realizan los intrpretes, implica un


proceso de cmputo adicional al que el programador quiere realizar. Por ello,
nos encontraremos con que un intrprete es siempre ms lento que realizar
la misma accin en Lenguaje Ensamblador, simplemente porque tiene el
costo adicional de estar traduciendo el programa, cada vez que lo ejecutamos.

Tamao: Por las mismas razones que vimos en el aspecto de velocidad, los
compiladores e intrpretes generan ms cdigo mquina del necesario; por
ello, el programa ejecutable crece. As, cuando es importante reducir el
tamao del ejecutable, mejorando el uso de la memoria y teniendo tambin
beneficios en velocidad, puede convenir usar el lenguaje Ensamblador. Entre
los programas que es crtico el uso mnimo de memoria, tenemos a los virus
y manejadores de dispositivos (drivers). Muchos de ellos, por supuesto, estn
escritos en lenguaje Ensamblador.

Flexibilidad: Las razones anteriores son cuestin de grado: podemos hacer


las cosas en otro lenguaje, pero queremos hacerlas ms eficientemente. Pero
todos los lenguajes de alto nivel tienen limitantes en el control; al hacer
abstracciones, limitan su propia capacidad. Es decir, existen tareas que la
mquina puede hacer, pero que un lenguaje de alto nivel no permite. Por
ejemplo, en Visual Basic no es posible cambiar la resolucin del monitor a
medio programa; es una limitante, impuesta por la abstraccin del GUI
Windows. En cambio, en ensamblador es sumamente sencillo, pues tenemos
el acceso directo al hardware del monitor.

Desventajas
Tiempo de programacin: Al ser de bajo nivel, el Lenguaje Ensamblador
requiere ms instrucciones para realizar el mismo proceso, en comparacin
con un lenguaje de alto nivel. Por otro lado, requiere de ms cuidado por parte
del programador, pues es propenso a que los errores de lgica se reflejen
ms

fuertemente

en

la

ejecucin.

Por todo esto, es ms lento el desarrollo de programas comparables en


Lenguaje Ensamblador que en un lenguaje de alto nivel, pues el programador
goza de una menor abstraccin.

Microprocesadores

Lenguaje ensamblador

Programas fuente grandes: Por las mismas razones que aumenta el tiempo,
crecen los programas fuentes; simplemente, requerimos ms instrucciones
primitivas para describir procesos equivalentes. Esto es una desventaja
porque dificulta el mantenimiento de los programas, y nuevamente reduce la
productividad de los programadores.
Peligro de afectar recursos inesperadamente: Tenemos la ventaja de que
todo lo que se puede hacer en la mquina, se puede hacer con el Lenguaje
Ensamblador (flexibilidad). El problema es que todo error que podamos
cometer, o todo riesgo que podamos tener, podemos tenerlo tambin en este
Lenguaje. Dicho de otra forma, tener mucho poder es til pero tambin es
peligroso.
En la vida prctica, afortunadamente no ocurre mucho; sin embargo, al
programar en este lenguaje vern que es mucho ms comn que la mquina
se "cuelgue", "bloquee" o "se le vaya el avin"; y que se reinicialice. Por
qu?, porque con este lenguaje es perfectamente posible (y sencillo) realizar
secuencias de instrucciones invlidas, que normalmente no aparecen al usar
un

lenguaje

de

alto

nivel.

En ciertos casos extremos, puede llegarse a sobrescribir informacin del


CMOS de la mquina (no he visto efectos ms riesgosos); pero, si no la
conservamos, esto puede causar que dejemos de "ver" el disco duro, junto
con toda su informacin.
Falta de portabilidad: Como ya se mencion, existe un lenguaje
ensamblador para cada mquina; por ello, evidentemente no es una seleccin
apropiada de lenguaje cuando deseamos codificar en una mquina y luego
llevar los programas a otros sistemas operativos o modelos de computadoras.
Si bien esto es un problema general a todos los lenguajes, es mucho ms
notorio en ensamblador: yo puedo reutilizar un 90% o ms del cdigo que
desarrollo en "C", en una PC, al llevarlo a una RS/6000 con UNIX, y lo mismo
si despus lo llevo a una Macintosh, siempre y cuando est bien hecho y siga
los estndares de "C", y los principios de la programacin estructurada. En
cambio, si escribimos el programa en Ensamblador de la PC, por bien que lo
desarrollemos y muchos estndares que sigamos, tendremos prcticamente
que reescribir el 100 % del cdigo al llevarlo a UNIX, y otra vez lo mismo al
llevarlo a Mac.

Microprocesadores

Lenguaje ensamblador
Instrucciones

Microprocesadores

Lenguaje ensamblador

Registros
Registros de segmento: Un registro de segmento tiene 16 bits de longitud
y facilita un rea de memoria para direccionamiento conocida como el
segmento actual.
Registro CS: El DOS almacena la direccin inicial del segmento de
cdigo de un programa en el registro CS. Esta direccin de segmento, ms

Microprocesadores

Lenguaje ensamblador
un valor de desplazamiento en el registro apuntador de instruccin (IP),
indica la direccin de una instruccin que es buscada para su ejecucin.
Registro DS: La direccin inicial de un segmento de datos de programa
es almacenada en el registro DS. En trminos sencillos, esta direccin,
ms un valor de desplazamiento en una instruccin, genera una referencia
a la localidad de un byte especifico en el segmento de datos.
Registro SS: El registro SS permite la colocacin en memoria de una
pila, para almacenamiento temporal de direcciones y datos. El DOS
almacena la direccin de inicio del segmento de pila de un programa en el
registro SS. Esta direccin de segmento, ms un valor de desplazamiento
en el registro del apuntador de pila (SP), indica la palabra actual en la pila
que est siendo direccionada.
Registros ES: Algunas operaciones con cadenas de caracteres (datos
de caracteres) utilizan el registro extra de segmento para manejar el
direccionamiento de memoria. En este contexto, el registro ES est
asociado con el registro DI (ndice). Un programa que requiere el uso del
registro ES puede inicializarlo con una direccin de segmento apropiada.
Registros FS y GS: Son registros extra de segmento en los
procesadores

80386

posteriores.

Registros de propsito general.


Los registros de propsito general AX, BX, CX y DX son los caballos de
batalla del sistema. Son nicos en el sentido de que se puede direccionarlos
como una palabra o como una parte de un byte. El ltimo byte de la izquierda
es la parte alta, y el ltimo byte de la derecha es la parte baja. Por
ejemplo, el registro CX consta de una parte CH (alta) y una parte Cl (baja),
y usted puede referirse a cualquier parte por su nombre.

Registro AX: El registro AX, el acumulador principal, es utilizado


para operaciones que implican entrada/salida y la mayor parte de la
aritmtica. Por ejemplo, las instrucciones para multiplicar, dividir y
traducir suponen el uso del AX. Tambin, algunas operaciones
generan cdigo ms eficiente si se refieren al AX en lugar de a los
otros registros.

Registro BX: El BX es conocido como el registro base ya que es el


nico registro de propsito general que puede ser ndice para

Microprocesadores

Lenguaje ensamblador
direccionamiento indexado. Tambin es comn emplear el BX para
clculos.

Registro DX: El DX es conocido como el registro de datos. Algunas


operaciones de entrada/salida requieren uso, y las operaciones de
multiplicacin y divisin con cifras grandes suponen al DX y al AX
trabajando juntos.

Registro de Apuntador de Instrucciones.


El registro apuntador de instrucciones (IP) de 16 bits contiene el
desplazamiento de direccin de la siguiente instruccin que se ejecuta. El
IP est asociado con el registro CS en el sentido de que el IP indica la
instruccin actual dentro del segmento de cdigo que se est ejecutando
actualmente. Los procesadores 80386 y posteriores tienen un IP ampliado
de 32 bits, llamado EIP. En el ejemplo siguiente, el registro CS contiene
25A4[0] H y el IP contiene 412H. Para encontrar la siguiente instruccin
que ser ejecutada, el procesador combina las direcciones en el CS y el
IP:

Segmento

de

direccin

en

el

registro

CS:

25A40H

Desplazamiento de direccin en el registro IP: + 412H Direccin de la


siguiente instruccin: 25E52H
Registros Apuntadores.
Los registros SP (apuntador de la pila) Y BP (apuntador de base) estn
asociados con el registro SS y permiten al sistema al acceso datos en el
segmento de la pila.
Registro SP. El apuntador de la pila de 16 bits est asociado con el registro
SS y proporciona un valor de desplazamiento que se refiere a la palabra
actual que est siendo procesada en la pila. Los procesadores 80386 y
posteriores tienen un apuntador de pila de 32 bits, el registro ESP. El sistema
maneja de forma automtica estos registros.
En el ejemplo siguiente, el registro SS contiene la direccin de segmento
27B3[0]H y el SP el desplazamiento 312H. Para encontrar la palabra actual
que esta siendo procesada en la pila, la computadora combina las
direcciones en el SS y el SP:
Registro BP: El BP de 16 bits facilita la referencia de parmetros, los
cuales son datos y direcciones transmitidos va pila. Los procesadores

Microprocesadores

Lenguaje ensamblador
80386 y posteriores tienen un BP ampliado de 32 bits llamado el registro
EBP.
Registros ndice.
Los registros SI y DI estn disponibles para direccionamiento indexado y
para sumas y restas.
Registro SI: El registro ndice fuente de 16 bits es requerido por algunas
operaciones con cadenas (de caracteres). En este contexto, el SI est
asociado con el registro DS. Los procesadores 80386 y posteriores permiten
el uso de un registro ampliado de 32 bits, el ESI.
Registro DI: El registro ndice destino tambin es requerido por algunas
operaciones con cadenas de caracteres. En este contexto, el DI est
asociado con el registro ES. Los procesadores 80386 y posteriores permiten
el uso de un registro ampliado de 32 bits, el EDI.
Registro de Banderas.
De los 16 bits del registro de banderas, nueve son comunes a toda la familia
de procesadores 8086, y sirven para indicar el estado actual de la mquina
y el resultado del procesamiento. Muchas instrucciones que piden
comparaciones y aritmtica cambian el estado de las banderas, algunas
cuyas instrucciones pueden realizar pruebas para determinar la accin
subsecuente. En resumen, los bits de las banderas comunes son como
sigue:
OF (Overflow, desbordamiento). Indica desbordamiento de un bit de
orden alto (mas a la izquierda) despus de una operacin aritmtica.
DF (direccin). Designa la direccin hacia la izquierda o hacia la derecha
para mover o comparar cadenas de caracteres.
IF (interrupcin). Indica que una interrupcin externa, como la entrada
desde el teclado, sea procesada o ignorada.
TF (trampa). Permite la operacin del procesador en modo de un paso.
Los programas depuradores, como el DEBUG, activan esta bandera de
manera que usted pueda avanzar en la ejecucin de una sola instruccin
a un tiempo, para examinar el efecto de esa instruccin sobre los registros
de memoria.
SF (signo). Contiene el signo resultante de una operacin aritmtica (0 =
positivo y 1 = negativo).

Microprocesadores

Lenguaje ensamblador
ZF (cero). Indica el resultado de una operacin aritmtica o de
comparacin (0 = resultado diferente de cero y 1 = resultado igual a cero).
AF (acarreo auxiliar). Contiene un acarreo externo del bit 3 en un dato
de 8 bits para aritmtica especializada.
PF (paridad). Indica paridad par o impar de una operacin en datos de 8
bits de bajo orden (mas a la derecha).
CF (acarreo). Contiene el acarreo de orden ms alto (ms a la izquierda)
despus de una operacin aritmtica; tambin lleva el contenido del
ltimo bit en una operacin de corrimiento o de rotacin. Las banderas
estn en el registro de banderas en las siguientes posiciones:
Las banderas ms importantes para la programacin en ensamblador son
O, S, Z y C, para operaciones de comparacin y aritmticas, y D para operaciones
de cadenas de caracteres. Los procesadores 80286 y posteriores tienen algunas
banderas usadas para propsitos internos, en especial las que afectan al modo
protegido. Los procesadores 80286 y posteriores tienen un registro extendido de
banderas conocido como Eflags.
Registros de PILA
La pila es un rea de memoria importante y por ello tiene, en vez de uno,
dos registros que se usan como desplazamiento (offset) para apuntar a su
contenido. Se usan como complemento al registro y son:
SP Stack Pointer: Se traduce como puntero de pila y es el que se reserva
el procesador para uso propio en instrucciones de manipulado de pila. Por
lo general, el programador no debe alterar su contenido.
BP Base pointer: Se usa como registro auxiliar. El programador puede
usarlo para su provecho.
Claro que estos nombres y tipos de registros son estndar, ya que cada fabricante
puede utilizar otros registro que reemplacen a estos o los auxilien, aun as, los
fabricantes que usan otros registro tienen la misma funcin que los anteriormente
mencionados

Ejemplos
El siguiente es un ejemplo del programa clsico Hola mundo escrito para la
arquitectura de procesador x86 (bajo el sistema operativo DOS).

Microprocesadores

Lenguaje ensamblador
.model small
.stack
.data
Cadena1 DB 'Hola Mundo.$'
.code
programa:
mov ax, @data
mov ds, ax
mov dx, offset Cadena1
mov ah, 9
int 21h
end programa

2. Resumen
A los programas que permiten pasar del programa escrito con instrucciones simblicas
del lenguaje maquina (programa fuente, en ensamblador) al lenguaje mquina tambin
se les denomina normalmente ensambladores. Un programa escrito en el lenguaje
ensamblador requiere considerablemente menos memoria y tiempo de ejecucin que
un programa escrito en los conocidos lenguajes de alto nivel, como Pascal y C. Aunque
la mayora de los especialistas en Software desarrolla aplicaciones en lenguajes de alto
nivel, que son ms fciles de escribir y de dar mantenimiento, una prctica comn es
recodificar en lenguaje ensamblador aquellas rutinas que han causado cuellos de botella
en el procesamiento. Los programas residentes y rutinas de servicio de interrupcin casi
siempre son desarrollados en el lenguaje ensamblador.

3. Summary
A pass programs that allow the written program with symbolic machine language
instructions (source program in assembler) into machine language are also commonly
called assemblers. A program written in assembly language requires considerably less
memory and runtime that a program written in the known high-level languages such as
Pascal and C. While most specialists Software develops applications in high-level
languages, which are easier to write and maintain, a common practice is to recode those
routines in assembly language that have caused bottlenecks in processing. Resident
programs and interrupt service routines are almost always developed in assembly
language.

4. Recomendaciones
El lenguaje ensamblador trabaja directamente con el microprocesador de una
mquina, es decir, programamos un microprocesador con este lenguaje,

Microprocesadores

Lenguaje ensamblador
tambin lo podemos utilizar para desarrollar controladores de dispositivos
(Drivers) y sistemas operativos de computadoras
El lenguaje ensamblador est directamente relacionado con el cdigo mquina

5. Conclusiones
o

El lenguaje Ensamblador es un lenguaje traductor que permite tener un control


total sobre cada instruccin generada por una mquina en particular mediante el
programa traductor, tal programa traductor es llamado Ensamblador.

El lenguaje ensamblador a pesar de ser ms rpido de cualquier otro lenguaje


es tambin el ms complejo por eso es utilizado para complementar los
limitantes de los lenguajes de programacin de alto nivel.

6. Apreciacin del equipo


El lenguaje ensamblador es importante porque l es considerado de primera generacin
a partir de l se derivaron todos los dems lenguajes hasta llegar a los de alto nivel.

7. Bibliografa o Linkografia

http://www.monografias.com/trabajos14/lenguaje-ensamblador/lenguajeensamblador.shtml#ixzz4NINET9a7
https://nopaltepecmanolos.wordpress.com/2011/09/12/resumen-de-la-unidad-1de-lenguaje-ensamblador/
http://www.jegerlehner.ch/intel/IntelCodeTable_es.pdf
https://lenguajeensambladoryelementos.wordpress.com/2013/04/30/registros/

Microprocesadores

Vous aimerez peut-être aussi