Académique Documents
Professionnel Documents
Culture Documents
LENGUAJE ENSAMBLADOR
Docente:
Carrera Profesional:
Curso:
Estudiantes:
Lenguaje ensamblador
Lenguaje ensamblador
1. Contenido
Definicin
El lenguaje ensamblador es un tipo de lenguaje de
bajo
nivel
utilizado
para
escribir
programas
de
computadoras
legible
por
un
programador.
Microprocesadores
Lenguaje ensamblador
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.
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.
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.
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.
Microprocesadores
Lenguaje ensamblador
direccionamiento indexado. Tambin es comn emplear el BX para
clculos.
Segmento
de
direccin
en
el
registro
CS:
25A40H
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
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