Aca tengo que perorar sobre la necesidad y conveniencia, o no, de aprender assembler. El assembler es el lenguaje mas antiguo, pues los procedimientos de cálculo y tratamiento lógico de datos fueron tratados incluso antes de que existieran las primeras computadoras mecánicas. Se puede decir entonces que la primera computadora se programó en assembler y cuando se apague la última computadora sobre los restos de un mundo agónico, tambien estará corriendo programas en assembler. Y no diferirá mucho de los lenguajes usados en la primera. Si existe alguna civilización extraterrestre, sus computadoras tambien estaran corriendo programas en assembler (y si no me creen pueden ver la película "Dia de la Independencia" :). Al mismo tiempo, el assembler requiere una personalidad especial. Si Lombroso viviera diría que cada persona lleva en sus genes la informacion acerca del lenguaje que preferirá usar (fuera del hecho de que, para ganarse la vida tendra que apelar a otros lenguajes). Calculo que este ilustre médico podria examinar a una persona y decir sin lugar a dudas "este es un programador en visual basic" o "este es un tipico programador de forth". Yo carezco de esta habilidad, pero sí puedo decir que el assembler no es para todos los paladares. Es un poco complicado de aprender para algunas personas, si el programa falla (lo que hace regularmente las primeras veces que se lo corre) hay que resetear la máquina, se tarda más en programarlo, y quitarle los errores es un proceso engorroso, lento y a veces desesperante. Hay que saber un poco de la estructura del hard. La informacion no es muy asequible y ninguna empresa la divulga abiertamente. Pero por otro lado tiene indiscutibles ventajas: - los programas son rapidísimos - su tamaño es ínfimo - como en cualquier lenguaje no assembler las instrucciones son finalmente traducidas a instrucciones assembler, es ilimitado: cualquier programa que se pueda hacer en cualquier lenguaje o sistema operativo puede escribirse tambien en assembler. - Permite acelerar otras aplicaciones hechas en lenguajes de alto nivel, como C o basic. - mientras las instrucciones sean compatibles, un programa en assembler correrá bien con un amplio rango de capacidades de memoria y tipos de microprocesador. - permite escribir rapidamente aplicaciones sencillas y muy eficientes. - permite escribir programas para dispositivos hard (microcontroladores, periféricos). - Para programar en assembler no hace falta una gran máquina: yo uso a veces una XT de 512k y 4,7 MHz para escribir y compilar programas que luego corro en mi modesta 586 de 100 MHz y 40 M de ram. En definitiva, usted no va a saber si dentro suyo existe o no un programador de assembler si no lo conoce primero, y ese es el objeto de este curso: darle la oportunidad de que usted conozca qué es el assembler, que lo pruebe, y si le gusta, que busque su propio camino. Y si en el futuro alguien le pregunta de donde surgieron esos maravillosos conocimientos levante la vista al infinito y diga, parafraseando a Ovidio: "trimegisto fue mi maestro" :))) Mi historia con el assembler es sencilla. En 1982 mi hermano Diego tenía 11 años y estaba estudiando basic con una profesora. Yo tenia 22 y con mi hermano Gustavo, de 20, nos pusimos de acuerdo para comprarle una computadora TK85 (equivalente a una Sinclair 1500: 8k de rom, 16 k de ram, microprocesador Z80). Con esta maquina, que aprendi a programar con el manual, caí en el vicio informatico. Cuando la velocidad se convirtió en un factor limitante, averigüé que se podia programar mucho mas rápido usando ASM, y que tambien podia verse cómo la máquina hacía lo que hacía. Entonces, con un par de libritos españoles aprendí a programar en asm para el Z80. Como nunca pude conseguir un ensamblador para estas maquinitas usaba una tabla con las instrucciones y sus codigos hexadecimales, calculaba los saltos relativos a mano (tampoco existian calculadoras que pasaran a hexadecimal, usaba tabla) Una verdadera experiencia zen :). Pero los programas eran alucinadamente rápidos, tanto que tenía que poner retardos enormes para que se pudiera ver algo. Luego me compré una MSX1 con datasette, y segui programando en asm, porque el lenguaje era el mismo (igual micro) y solo tuve que cambiar algunos detalles, como números de port. Luego, con una XT aprendí ASM para el 8086, con la ayuda de un curso que salia en una revista, una tabla de interrupciones que compré y la comprensiva paciencia de mi mujer. Las instrucciones eran practicamente las mismas, solo cambiaban los numeros de ports y algunos memmónicos. Cuando comencé a merodear por los bbs y por fidonet, encontré otros locos que programan en el mismo lenguaje, con los que intercambiábamos conocimientos. En el 94 empecé un cursito trucho a pedido de algunos chicos de fido que querían aprender assembler de la manera mas rápida posible. Entonces, un poco en broma y un poco en serio empecé a escribir este cursito en forma de mensajes y a mandarlo por la red. A pesar de los errores que tenía (de los cuales seguramente conserva algunos, sorry) tuvo bastante éxito, de lo cual me di cuenta porque un amigo me mostró que algun travieso había hecho una edicion "pirata" fotocopiada y la vendía en una facultad de la universidad de la Plata. El curso se llama "curso trucho de assembler" porque la palabra "trucho" es un neologismo argentino que significa "falso" y tambien "de poca calidad", sería un equivalente de la palabra inglesa "fake". Esto se debe a que no es un curso académico y no hace hincapié en las definiciones, sinó que se dirije directamente a lo práctico, procurando que quien lo sigue aprenda de la manera mas útil: "rompiendose los cuernos" Hoy en día los que aprenden asm son menos aun que antes, y su numero es importante solo entre programadores de C, generadores de virus, aficionados a las intros y demos, y electrónicos interesados en los microcontroladores. Pero el idioma sigue teniendo su original belleza, como reconocerá todo aquel que mire una intro de la categoria 4k (tamaño máximo 4 kbyte) Usar una máquina actual bajo DOS y con programas COM es una experiencia metafísica, es conocer el significado de la palabra "instantáneo", es como manejar un avion despues de andar en bicicleta. Si alguien todavia puede hacer esto, no debería dejar de probarlo. Si todo lo anterior no pudo seducirlo, le recordare dos hechos mas: 1- un programa com hecho con ASM 8086 puede correrse en cualquier PC, y puede usarse bajo DOS, Windows, OS/2 y Linux. 2- El ASM le permitió a un hacker llamado Bill Gates convertirse en el hombre mas rico del mundo. Lo mismo podría sucederle a Ud. Finalmente recuerde la frase de Napoleon: "en la máquina de todo lammer hay un wizzard en potencia"