Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

Eres Un Dios Entre Insectos…

–…que nadie te diga lo contrario–

Fue un invierno cuando yo rondaba los 17 años que decidí, sentado en una fria banca del barrio comercial de mi ciudad, frente a una librería, que quería dedicarme a la programación. No se si fue el efecto de la hoy prohibida fenilpropanolamina del antigripal que tomé horas antes o las fotos la lectura del recién comprado libro de “An Introduction to Computer Graphics” pero en ese momento estaba bien seguro de lo que estaba haciendo. Al llegar a casa encendí mi entonces flamante Pentium 100 Mhz con 8 megabytes en RAM y su enorme disco duro de 1.7 Gigabytes y me puse a jugar con el intérprete Qbasic incluido en el DOS 6.22. Desde ese día han pasado muchas cosas, (aunque me preocupan mas las que no han pasado) entre ellas el descubrimiento de que el único lenguaje de programación que me llevaría hasta donde yo quería era el Ensamblador.

Pero esa será historia para otra entrada, por ahora quiero hablar del tema de la gente que me ha ayudado en el camino. Sin embargo, aunque valientes pocos han sido los que han durado el tiempo suficiente como para haber logrado algo que valga la pena. De aquellos años mis compañeros mas leales han sido “el Malin”y “el Julio” que si bien ahora son gente que se gana la vida honradamente y los veo contadas veces al año aún se comunican conmigo para darme ánimos, aunque ya no participan tan activamente en el desarrollo como estoy seguro que les gustaría hacerlo.


reclutando aliados

La siguiente escena es de la película X-Men 2 y en ella se muestra el supervillano Magneto (personaje con el que me han comparado mas de una vez) hablando con su nuevo aliado, el joven Pyro. Este le pregunta que para que usa el casco, Magneto le dice que es para protegerse de los verdaderos malvados, luego cuando toma el encendedor le pregunta su ‘verdadero’ nombre de mutante y luego de cuestionarlo sobre sus poderes para manipular el fuego le dice la famosa frase: –Eres un dios entre insectos; no dejes que nadie te diga lo contrario–.

He notado a traves del tiempo que la “vida util” de uno de estos aliados comienza con el entusiasmo de hacer algo nuevo y termina cuando se tienen que dedicar a otra cosa para ganarse la vida. Lapso que puede medirse en horas o en años dependiendo la proporcion entre el  hambre y la voluntad. Pero de eso hablaré con mas detalle otro día. De lo que quiero hablar ahora es sobre los posibles compañeros que es posible encontrarse por medio del Internet.

Debo decir que hasta ahora toda la gente relacionada con la programación en Ensamblador con la que me he topado ha sigo de una excelente capacidad sino además de eso me he llevado muy bien con todos. ¿Será acaso que somos tan pocos que instintivamente decidimos ayudarnos unos a otros? Me gustaría poder decir lo mismo de la gente que programa en otros lenguajes. Pero por lo regular, el programador de Ensamblador no se lleva bien casi con nadie que programe en otros lenguajes.  A menos claro que renuncie a sus creencias “por comida”. Yo mismo he pasado hambre y humillaciones por parte de los administradores de bases de datos por mi negativa a abandonar la programación en Ensamblador.  Sin embargo hace poco me topé a alguien que a pesar de estar en peores condiciones ha decidido tomar el sendero de la máquina:

Quiero hablarles de un misterioso programador de Ensamblador que de vez en cuando postea en este blog y que espero que sea parte de este por un buen rato. Se hace llamar Yuri, Grille o Kapetres, viene de un lugar donde el acceso a las computadoras y al Internet no es nada facil y aunque no cuenta con mucha tecnología ha logrado hacer mas programación en Ensamblador que cualquier ingeniero en Computacion con Título de universidad privada que conozca. Aunque para quien lea este blog ha de saber que el superar a uno de estos ingenieros (con ‘i’ minúscula) no es un reto muy grande. Algunos de sus progresos que me constan son la programación en Windows de 32 bits con una vieja versión de MASM, programas de reconocimiento de patrones y una utilidad de compresión de archivos que lo único que le falta es una insignificante llamada al sistema para funcionar. Cabe aclarar que los algoritmos de compresión utilizan un nivel de matemáticas que no se ve en una carrera de Ingeniería tradicional y que solo algunos matemáticos conocen. Cualquier otra cosa que diga son solo especulaciones pero de lo que estoy seguro es que se trata de alguien que no le teme a las computadoras. Y como prueba de ello, aquí les dejo un pedazo de uno de sus codigos donde lee la linea de comando en Windows (si, ¡Windows acepta lineas de comando!) de una manera muy poco convencional.

Codigo hecho por Kapetres:

prog001:

;;; Si quieres que funcione bien tienes que enviarle en el olly un argumento al
;;; Programa con la direccion de un archivo X

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;Esta primera parte es para identificar el archivo a procesar
;;;;;; el cual nos los envian por la linea de comandos
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

invoke GetCommandLine
mov edx,eax ; Hacemos una salva del lugar donde se encuentra la linea de comandos
xor ecx,ecx ; Vaciamos ecx

;;;;;;;;;;;;;;Ahora buscamos el final de la cadena de texto que es la linea de comandos

loop1:
cmp cl,byte ptr ds:[eax] ; Comparamos el byte en el que estamos con
jz encont
inc eax
jmp loop1

;;;;;;;;;;;;;;Ahora buscamos el >>:<< de la direccion ej *(C:\\texto.txt) ;;;;;;;;;;;;;;La linea de comandos posee el archivo al final es decir ;;;;;;;;;;;;;; *(C:\\programa.exe C:\\texto.txt) ;;;;;;;;;;;;;;Entonces se busca si hay un segundo *(:) encont: xchg eax,ecx mov al,3ah ; Movemos a al (3Ah que es lo mismo que >>:<< loop2: cmp al, byte ptr ds:[ecx] jz encontrado loop loop2 encontrado: mov eax,ecx dec eax sub ecx,edx cmp ecx,2 jnz mejor invoke MessageBox,NULL,addr MsgTexto,NULL,MB_OK call ExitProcess [/sourcecode]

A pesar de ello, y como el mismo declara, aun le falta mucho por aprender en este largo camino de la programación en Ensamblador.

Y al igual que él se que ahi afuera hay mas gente con grandes habilidades para la programación en este lenguaje que se siente ‘diferente’ solo porque en su tierra solo hay empleo haciendo querys y manteniendo sitios web.Desde aquí hago una atenta invitación a todo aquel aficionado verdadero al Ensamblador, no importa su nivel de habilidad, para que se acerquen a este blog, intercambien códigos y experiencias. Si todos nos unimos podemos lograr mucho.

Recuerda, si tu eres uno de esos pocos privilegiados, eres un dios entre insectos.  ¡No dejes que nadie te diga lo contrario!

agosto 15, 2009 - Posted by | Uncategorized | , ,

1 comentario »

  1. Su forma de detectar si hay otro archivo es ortodoxa , pero no esta mal hecha creo que voy a copiarla para mi trabajo en la universidad .

    Saludos y gracias por el código.

    Comentario por Anton | agosto 17, 2009 | Responder


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: