Está en la página 1de 6

.

Introduccin al lenguaje ensamblador

ResumenEl lenguaje ensamblador es un lenguaje de


bajo nivel utilizando el cdigo binario y es el lenguaje de
programacin ms antiguo y, de todos los lenguajes, es el
que ms se asemeja al lenguaje mquina nativo.
Proporciona un acceso directo al hardware de la
computadora, por lo que se debe tener una buena
comprensin acerca de la arquitectura y el sistema
operativo de su computadora. Constituye la representacin
del cdigo mquina especfico para cada arquitectura de
microprocesador.

I. INTRODUCCIN
EL LENGUAJE ENSAMBLADOR ES EL LENGUAJE DE
PROGRAMACIN MS ANTIGUO Y, DE TODOS LOS
LENGUAJES, ES EL QUE MS SE ASEMEJA AL
LENGUAJE MQUINA. PROPORCIONA UN ACCESO
DIRECTO AL HARDWARE DE LA COMPUTADORA, POR
LO QUE SE DEBE TENER UNA BUENA COMPRENSIN
ACERCA DE LA ARQUITECTURA Y EL SISTEMA
OPERATIVO

DE

LA

COMPUTADORA.

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

Y/O

MUY

INEFICIENTES DE PROGRAMAR EN UN LENGUAJE DE


ALTO NIVEL, YA QUE, ENTRE OTRAS COSAS, EN EL
LENGUAJE
ENSAMBLADOR
SE
DISPONE
DE
INSTRUCCIONES DEL CPU QUE GENERALMENTE NO
ESTN DISPONIBLES EN LOS LENGUAJES DE ALTO
NIVEL.
EL

LENGUAJE

DIRECTAMENTE

ENSAMBLADOR
LA

ARQUITECTURA

REFLEJA
Y

LAS

INSTRUCCIONES EN LENGUAJE DE MQUINA DE LA


CPU, Y PUEDEN SER MUY DIFERENTES DE UNA
ARQUITECTURA
DE
CPU
A
OTRA.
CADA
ARQUITECTURA DE MICROPROCESADOR TIENE SU
PROPIO
LENGUAJE
DE
CONSECUENCIA
SU

MQUINA,
Y
EN
PROPIO
LENGUAJE

ENSAMBLADOR YA QUE ESTE SE ENCUENTRA MUY


LIGADO A LA ESTRUCTURA DEL HARDWARE PARA EL

CUAL SE PROGRAMA. LOS MICROPROCESADORES


DIFIEREN EN EL TIPO Y NMERO DE OPERACIONES
QUE SOPORTAN; TAMBIN PUEDEN TENER DIFERENTE
CANTIDAD
DE
REGISTROS,
Y
DISTINTA
REPRESENTACIN DE LOS TIPOS DE DATOS EN
MEMORIA.

II. DESARROLLO DE CONTENIDO:


UNIDAD I
1.1 Importancia de la programacin en lenguaje
ensamblador
La importancia del lenguaje ensamblador radica
principalmente que se trabaja directamente con el
microprocesador; por lo cual se debe de conocer el
funcionamiento interno de este, tiene la ventaja de
que en l se puede realizar cualquier tipo de
programas que en los lenguajes de alto nivel no lo
pueden realizar
Existen dos clases de lenguaje de programacin:
de alto nivel y de bajo nivel. Los programadores
que escriben en un lenguaje de alto nivel como C y
pascal, codifican comandos poderosos, cada uno de
los cuales puede generar muchas instrucciones en
lenguaje mquina. Por otro lado, los programadores
que escriben en un lenguaje ensamblador de bajo
nivel codifican instrucciones simblicas, cada una
de las cuales genera una instruccin en lenguaje
mquina. A pesar del hecho que codificar en un
lenguaje de alto nivel es ms productivo algunas
ventajas de codificar en el lenguaje ensamblador
son:
Proporciona ms control sobre el manejo
particular de los requerimientos de hardware
Genera mdulos ejecutables ms pequeos y ms
compactos
Con mayor probabilidad tiene una ejecucin ms
rpida una prctica comn es combinar los
beneficios de ambos niveles de programacin:
codificar el grueso de un proyecto en un lenguaje de

alto nivel y los mdulos crticos (aquellos que


provocan notables retardos) con lenguaje
ensamblador. Un lenguaje de bajo nivel utiliza un
ensamblador para realizar la traduccin. Un
programa enlazador para ambos niveles alto y bajo,
completa el proceso al convertir el cdigo objeto en
lenguaje ejecutable.
1.2 El procesador y sus registros

Figura 1.1 Estructura interna del procesador.

Para comprender la organizacin del procesador,


consideremos los requisitos que ha de cumplir
Captar instruccin: el procesador lee una
instruccin de la memoria (registro, cach o
memoria principal).
Interpretar instruccin: la instruccin se
decodifica para determinar qu accin es necesaria.
Estructura y funcionamiento del procesador 4 3 9
Captar datos: la ejecucin de una instruccin
puede exigir leer datos de la memoria o de un
mdulo de E/S.
Procesar datos: la ejecucin de una instruccin
puede exigir llevar a cabo alguna operacin
aritmtica o lgica con los datos.
Escribir datos: los resultados de una ejecucin
pueden exigir escribir datos en la memoria o en un
mdulo de E/S.

REGISTROS

Figura 1.2 Registros.

Un registro es una memoria de alta velocidad y


poca capacidad, integrada en el microprocesador,
que permite guardar transitoriamente y acceder a
valores muy usados, generalmente en operaciones
matemticas
registro de segmento
registro de propsito general
registro de apuntador de instrucciones
registro apuntadores
registros ndice
registro de banderas

Figura 1.3 El procesador y el bus del sistema.

1.3 La memoria principal (RAM)


Con la memoria RAM nosotros podemos borrar y
grabar las veces que se requiera. Al apagar la fuente
de alimentacin, todos los datos o informacin
grabada se borrarn instantneamente ya que solo se
usa como un tipo de almacenamiento temporal.
Se le llama RAM porque es posible acceder a
cualquier ubicacin de ella aleatoria y rpidamente
Fsicamente, estn constituidas por un conjunto de
chips o mdulos de chips normalmente conectados
a la tarjeta madre. Los chips de memoria son

rectngulos negros que suelen ir soldados en grupos


a unas plaquitas con "pines" o contactos

realizar una operacin de E/S.


TABLA 1.1 Clases de interrupciones

Programa

Figura 1.4 La memoria RAM.

La memoria RAM (RandomAccess Memory,


Memoria de Acceso Aleatorio) tiene dos modos de
operacin:
RAM esttica: Compuesta por flips-flops internos
que almacenan informacin binaria. La
informacin almacenada es vlida mientras la
unidad est encendida.
RAM dinmica:
condensadores que
descargados. Debe
milisegundos para
informacin. Tienen
estticas.

conjunto de pequeos
pueden estar cargados o
refrescarse cada pocos
impedir la prdida de
mayor capacidad que las

Temporizacin

E/S

Fallo de Hardware

Generadas por alguna condicin que


se produce como resultado de la
ejecucin de una instruccin, tal
como desbordamiento aritmtico
(overflow), divisin por cero,
intento de ejecutar una instruccin
maquina inexistente e intento de
acceder fuera del espacio de
memoria permitido por el usuario.
Generadas por un temporizador
interno al procesador. Esto permite
al sistema operativo realizar ciertas
funciones de manera regular.
Generadas por un controlador de
E/S, para indicar la finalizacin sin
problemas de una operacin o para
avisar de ciertas condiciones de
error.
Generadas por un fallo tal como la
falta de potencia de alimentacin o
un error de paridad en la memoria.

Las interrupciones constituyen quiz el


mecanismo ms importante para la conexin del
microcontrolador con el mundo exterior,
sincronizando la ejecucin de programas con
acontecimientos externos.

Figura 1.5 Mdulo de memoria y zcalo respectivo.

Figura 1.6 Flujo de control de un programa sin y con


interrupcin.

1.4 El concepto de interrupciones

Los pasos indicados a continuacin indican el


procesamiento:

Una interrupcin es una situacin especial que


suspende la ejecucin de un programa de modo que
el sistema pueda realizar una accin para tratarla.
Tal situacin se da, por ejemplo, cuando un
perifrico requiere la atencin del procesador para

1. Terminar la ejecucin de la instruccin


mquina en curso.
2. Salva el valor de contador de programa, IP, en
la pila, de manera que en la CPU, al terminar el

proceso, pueda seguir ejecutando el programa a


partir de la ltima instruccin.

entrada, tales como un teclado o un disco


magntico.

3. La CPU salta a la direccin donde est


almacenada la rutina de servicio de interrupcin
(ISR, Interrupt Service Routine) y ejecuta esa rutina
que tiene como objetivo atender al dispositivo que
gener la interrupcin.

Open: que es usada para obtener un descriptor de


un fichero del sistema, ese fichero suele pasarse a
write.

4. Una vez que la rutina de la interrupcin


termina, el procesador restaura el estado que haba
guardado en la pila en el paso 2 y retorna al
programa que se estaba usando anteriormente.

Figura 1.8 Los 11 pasos para realizar la llamada al sistema


read(fd, bufer, nbytes).

1.6 Modos de direccionamiento


Figura 1.7 Ciclo de instruccin con interrupciones.

1.5 Llamadas a servicios del sistema


Una llamada al sistema es un mtodo o funcin
que puede invocar un proceso para solicitar un
cierto servicio al sistema operativo. Dado que el
acceso a ciertos recursos del sistema requiere la
ejecucin de cdigo en modo privilegiado, el
sistema operativo ofrece un conjunto de mtodos o
funciones que el programa puede emplear para
acceder a dichos recursos. En otras palabras, el
sistema operativo acta como intermediario,
ofreciendo una interfaz de programacin (API) que
el programa puede usar en cualquier momento para
solicitar recursos gestionados por el sistema
operativo.
Algunos ejemplos de llamadas al sistema son las
siguientes:
Time: que permite obtener la fecha y hora del
sistema.
Write: que se emplea para escribir un dato en un
cierto dispositivo de salida, tales como una pantalla
o un disco magntico.
Read: que es usada para leer de un dispositivo de

Los llamados modos de direccionamiento son las


diferentes maneras de especificar en informtica
un operando dentro de una instruccin en lenguaje
ensamblador.
Un modo de direccionamiento especifica la forma
de calcular la direccin de memoria efectiva de un
operando mediante el uso de la informacin
contenida en registros y / o constantes, contenida
dentro de una instruccin de la mquina o en otra
parte.
Las operaciones se hacen entre registros o
registros y memoria, pero nunca entre memoria y
memoria (salvo algunas operaciones con cadenas
de caracteres).
Los modos de direccionamiento determinan el
lugar en que reside un operando, un resultado o la
siguiente instruccin a ejecutar segn el caso.
Tenga en cuenta que no existe una forma
generalmente aceptada de nombrar a los distintos
modos de direccionamiento. En particular, los
distintos autores y fabricantes de equipos pueden
dar nombres diferentes para el modo de hacer
frente al mismo, o los mismos nombres, a los
diferentes modos de direccionamiento:
Direccionamiento inmediato: el operador es
especificado en la instruccin misma

Direccionamiento indirecto de registros: en este


modo el campo de la direccin de la instruccin da
la direccin en donde la direccin efectiva se
almacena en la memoria. El control localiza la
instruccin de la memoria y utiliza su parte de
direccin para acceder a la memoria
1.7 Proceso de ensamblado y ligado
Este proceso est resumido en la figura 1.11 Y en
los pasos siguientes:
Figura 1.9 Direccionamiento Directo.

Direccionamiento directo: es directo cuando la


instruccin tiene lugar donde se encuentra el
operando.
Direccionamiento relativo: la instruccin indica el
desplazamiento del operando con respecto a un
puntero.
Direccionamiento indirecto: la posicin indicada
por la instruccin no es el operando si no la
direccin de memoria en la que se encuentra, por
lo que se necesita un acceso adicional a memoria

Figura 1.11 Ciclo de ensamblado-enlazado-ligado.

1. El programa utiliza un editor de texto para


crear un archivo de texto ASCII, conocido como
archivo de cdigo fuente.
2. El ensamblador lee el archivo de cdigo fuete y
produce un archivo de cdigo objeto, una
traduccin del programa a lenguaje mquina. De
manera opcional, produce un archivo de listado. Si
ocurre un error, el programador debe regresar al
paso 1 y corregir el programa.

Figura 1.10 Direccionamiento indirecto por registro.

Direccionamiento implcito: no es necesario poner


ninguna direccin de forma explcita, ya que en el
propio cdigo de operacin se conoce la direccin
del operando al que se desea acceder o con el que
se quiere operar
Direccionamiento de registro: sirve para
especificar operadores que estn en registros

3. El enlazador lee el archivo de cdigo objeto y


verifica si el programa contiene alguna llamada a
los procedimientos en una biblioteca de enlace. El
enlazador copia cualquier procedimiento requerido
de la biblioteca de enlace, lo combina con el archivo
de cdigo objeto y produce el archivo ejecutable.
De manera opcional, el enlazador puede producir un
archivo de mapa.
4. La herramienta cargador del sistema operativo lee
el archivo ejecutable y lo carga en memoria, y
bifurca la CPU hacia la direccin inicial del

programa, para que ste empiece a ejecutarse.

Figura 1.12 Mensajes en el monitor.

1.8 Desplegado de mensajes en el monitor

III. CONCLUSIONES
El lenguaje ensamblador es una de las herramientas
de programacin ms utilizadas por todas aquellas
personas que desean tener un mayor grado de
comprensin sobre el funcionamiento a nivel de
dispositivo de una computadora. Nos brinda muchas
formas de trabaja directamente con el
microprocesador y as generar mdulos ejecutables
ms pequeos.

Todos los grficos y el texto que se muestran en el


monitor se escriben en la RAM de visualizacin de
video, para despus enviarlos al monitor mediante
el controlador de video. El controlador de video es
en s un microprocesador de propsito especial, que
libera a la CPU principal del trabajo de controlar el
hardware de video.
Un monitor de pantalla de cristal lquido (LCD)
digital directo recibe un flujo de bits digitales
directamente desde el controlador de video, y no
requiere del barrido de trama.

REFERENCIAS

[1] Peter Abel, Lenguaje Ensamblador y Programacin para


IBM y Compatibles ,3era edicin. Pag.9-11
[2] M. Morris Mano, Arquitectura de Computadoras, 3ra
Edicin. Pag 265-277
[3] Andrew S. Tanenbaum, Sistemas operativos modernos,
3era edicin. Pag. 49-52
[4] Kip r. Irvine , lenguaje ensamblador para computadoras
basadas en Intel ,5ta edicin.Pag 62-63
[5] William Stallings, organizacin y arquitectura de
computadores. Pag. 438-445