Está en la página 1de 5

Ensamblador

Bueno, comencemos con lo bueno: el lenguaje Ensamblador para la familia Intel 80x86 Ensamblador es un lenguaje de muy bajo nivel. Qu significa "bajo nivel"? Bueno, cuando uno se refiere a lenguajes de programacin se usa el trmino nivel para desribir que tan cerca del habla humana se encuentra determinado lenguaje de programacin. Cuando se usa el trmino "bajo nivel" lo que se est diciendo es que ese lenguaje de programacin est muy lejos del habla humana y muy cerca del lenguaje mquina. Por ejemplo, para imprimir una lnea de texto en la pantalla usando ensamblador se usara lo siguiente:
mensaje_a_desplegar db "Hola, qu tal!", 0 mov dx, offset mensaje_a_desplegar mov ah, 9h int 21h

Bastante raro!no? En cambio, si quisieras hacer lo mismo con Liberty BASIC , usaras lo siguiente
PRINT "Hola, qu tal!"

Mucho ms entendible verdad?. BASIC es un lenguaje de alto nivel, se acerca al nivel del lenguaje humano (ingls en casi todos los casos, pues la mayora de los lenguajes de programacin se han inventado en Estados Unidos) en cambio ensamblador se parece muchsimo a la forma en que el microprocesador habla en realidad.

El lenguaje mquina es el verdadero dialcto de un microprocesador y est compuesto nica y exclusivamente por 1 y 0. Todas las instrucciones que un microprocesador puede ejecutar, se "llaman" con combinaciones de 1 y 0. Por supuesto, es extremadamente difcil programar en lenguaje mquina; es por eso que se invent el ensamblador. El ensamblador sustituye las combinaciones de 1 y 0 (opcodes - cdigos de operacin) por trminos mnemnicos, es decir, palabras mucho ms fciles de recordar que las combinaciones de 1 y 0. As, en el ejemplo de arriba en lugar de decir:
01001011 00001000

Decimos:
mov ah, 9h

Que quiere decir "mueve el valor 9h al registro ah". Evidentemente es mucho ms fcil recordar una instruccin como MOV, que 01001011! Es por eso que se les di el nombre de mnemnicos, que literalmente significa, "palabra fcil de recordar". Como probablemente ya se estn imaginando, programar en ensamblador no deja de ser una tarea ardua, pero se tiene una enorme recompensa: el control sobre el sistema es TOTAL. Cualquier cosa que la mquina sea fsicamente capaz de hacer, se puede realizar en ensamblador, cosa que no sucede con otros lenguajes de programacin (con excepcin de C quizs). El uso de ensamblador tambin tiene otras ventajas: el tamao de los programas generados en ensamblador es el ms pequeo debido a que no se introduce ninguna instruccin extra a lo que se desea hacer; esto a su vez hace que los programas en esamblador sean ms rpidos.

Que se necesita para comenzar a programar en ensamblador? Para empezar, se necesita un programa editor para crear el archivo de cdigo fuente. "Cdigo queeee!?" El cdigo fuente es solamente un archivo de texto sin formato que contiene en secuencia las instrucciones que deseamos que la mquina ejecute. Como este archivo es el origen o fuente del programa ejecutable, se le llama "cdigo fuente" (Source code en ingls). Si usas Windows, entonces ya tienes varios editores. En MS-DOS tienes el programa EDIT, en Windows tienes Notepad. Existe adems un editor

gratuito especial para programar en ensamblador, se llama ASM Edit y es shareware. Lo puedes descargar aqu. Como para casi todos los lenguajes de programacin, se necesita un pequeo programa que traduzca los mnemnicos a los cdigos de operacin, este programa se llama compilador. Existen muchos compiladores para ensamblador, los ms famosos son MASM (Macro Assembler) y TASM (Turbo Assembler) de las casas comerciales Microsoft y Borland respectivamente. Estos son programas sofisticados y caros, aunque muy buenos. Incluyen todo lo necesario para programar en ensamblador: un editor, compilador y un ligador(ms adelante hablo sobre el linker). Los puedes comprar en Internet. Existe sin embargo un excelente compilador shareware, que puedes descargar de miles de sitios en la red (incluido este) y que no tiene problemas para generar programas a partir de cdigo fuente, se llama A86. Yo lo recomiendo muchsimo pues no se necesita un ligador para generar programas ejecutables. Una vez compilado el archivo de cdigo fuente, se necesita un paso ms para hacerlo ejecutable (con la excepcin de A86). Por ejemplo, yo tengo un archivo de cdigo fuente con las instrucciones para que la mquina busque archivos en disco, y tengo otro archivo de cdigo fuente con las intrucciones para imprimir la informacin obtenida por otro programa. Pues bien yo puedo combinarlos en un solo archivo ejecutable que busque archivos en disco y que imprima los resultados de su bsqueda. Para hacer eso, no necesito combinar sus cdigos fuente, pues eso requerira re-editar el cdigo fuente; simplemente los compilo por separado, y despus los ligo. Esa es la tarea del linker, ligar (link en ingls) diversos cdigos fuente una vez que estn compilados. Tambin descubrirs ms adelante, que existen ya bibliotecas de cdigo fuente preescrito para ensamblador, que realizan tareas comunes, estas bibliotecas de cdigo, tambin se incluyen en los programas ejecutables (o "cdigo objeto" en jerga tcnica) mediante el linker. A86 no necesita de un linker, el puede incluir los diversos cdigos fuente y bibliotecas al momento mismo de compilar. En resumen, necesito escribir las instrucciones de mi programa en un editor de texto, despus necesito compilar ese cdigo fuente, y finalmente lo ligo usando el linker para tener mi programa ejecutable (excepto si uso A86). Existen algunos otros accesorios para la programacin en ensamblador, pero para comenzar, esos son los bsicos.

Cmo escribo mi primer programa en ensamblador?


Pues eso es muy sencillo!, solamente tienes que hacer click aqui.

Cmo puedo aprender ms sobre la programacin en ensamblador? Lo que se necesita es leer mucho sobre el tema. Para eso, te recomiendo que adquieras algn buen libro sobre ensamblador. En Amazon hay muchos. Si vives en Mxico o en Latinoamrica, puedes comprar el libro "Ensamblador Bsico" de Alberto Rojas Ponce, Alfaomega Grupo Editor, ISBN 970-150098-9. Adems existen varios tutoriales en internet para aprender ensamblador, ms abajo hay ligas para sitios en donde puedes encontrar varios. Por ltimo, hay que tener muchsimas ganas de estudiar y de prcticar, solamente la prctica y el estudio pueden hacerte un buen programador en cualquier lenguaje, no solo en ensamblador.

Una vez terminados los conceptos, aqu estn las ligas para que descargues todas las herramientas necesarias.

ASM Edit editor A86 assembler A86 assembler Home Page

Aqu te presento ligas a sitios de ensamblador donde podrs encontrar excelentes tutoriales para que aprendas y practiques el ensamblador.

Gustavo net PC Assembly Language tutorials and demos The 80x86 Assembly Language Programming Page

Y finalmente, aqu estn las ligas hacia algunos sitios en donde puedes encontrar las herramientas que mencion aqu, y muchas otras como desensambladores, debuggers, com2exe, Editores, IDE's, etc..

Compilers and Assemblers The Simtel.Net MS-DOS Collection

!Manda tus comentarios!, estoy muy interesado en recibir feedback sobre esta pgina y mi sitio en general, as que solamente tienes que hacer click aqu.

[Inicio][Programacion]

http://oscar_ross.tripod.com/ensambla.html

También podría gustarte