Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

La Saga del Aprendiz de Programador

Tutorial para Aprender Ensamblador desde Cero

La imagen que acompaña a esta entrada es de la película Matrix. En la escena el protagonista conecta su cerebro a una computadora que le «instala» todos los conocimientos necesarios para hacerlo capaz de pelear. Aunque en la escena original lo que dice no es que ya sabe ensamblador sino kung-fu. Para su desgracia yo no cuento con una máquina como esa para enseñarlos a programar en cosa de minutos ni creo que ustedes quisieran arriesgar sus neuronas de ese modo si la tuviera, sin embargo estoy dispuesto a entrenar a otros interesados en la programación en ensamblador por medio de las entradas que he escrito estos últimos años.

Este es un directorio con todas las entradas sobre ensamblador escritas con los principiantes en mente. Y al escribir estas lineas pienso en dos tipos de lectores muy diferentes: Por un lado están los que solo quieren saber lo mínimo de ensamblador para aprobar una materia de sus estudios de ingeniería en computación y seguir felices con sus vidas administrando bases de datos y construyendo páginas web. Mientras que por el lado opuesto se encuentran aquellos valientes que al menos ya saben o han escuchado hablar de las grandes cosas que es posible hacer sabiendo programar en Ensamblador y en Lenguaje Máquina y están dispuestos a entrenar muy fuerte durante años para poder dominar este lenguaje. Sepan ambos que esto de programar en ensamblador no es algo que se pueda hacer en uno o dos semestres, la única diferencia es que los primeros van a encontrar mis escritos mucho mas ofensivos que los segundos.

Debo de advertirle a los del primer grupo que ya alguien calificó mis escritos como extremadamente ofensivos, por lo que no esperen de mi parte nada de eso que algunos llaman ‘ser políticamente correcto’. Estas entradas están pensadas para alguien que no tenga estudios especializados en computación pero que al menos tenga la suficiente dedicación para leer estas entradas en su totalidad. En cuanto a los del segundo grupo, que ya sabe que esto del ensamblador no lo van a dominar en un semestre y no les importa es probable que las burlas, ataques y demás peleas que van a presenciar en las siguientes entradas les resulten divertidas. Por cierto, este directorio se irá actualizando y reorganizando según lo considere conveniente, así que vengan seguido, y no se olviden que en cuanto ustedes ganen confianza y digan «Ya se ensamblador», yo estaré ahí para contestarles «Muéstrame».

Ensamblador desde cero

Una breve introducción de lo que te espera.

Fundamentos del Sistema Binario

Siempre se nos dice que las computadoras trabajan con ceros y unos. Para programar en ensamblador uno debe de ser capaz de entender el sistema de números binarios. En esta entrada se discute un sencillo método para convertir en binario números de 0 a 255. El porqué de estos límites se explican en la siguiente entrada.

Cuantos bits tiene un byte

Esta es hasta ahora la entrada mas leida de toda la historia del blog y por una muy buena razón. Aquí se explica que demonios es eso del bit y el byte, porqué un byte solo puede contener un número entre 0 y 255. Al final un byte es una cajita de 8 bits que puede almacenar un número en el rango mencionado

Prog, Hex and Rock’n’Roll. Sistema Hexadecimal

El sistema de numeración hexadecimal es una manera mas manejable de representar números binarios y permite trabajar con estructuras de datos mucho mejor que si usáramos los números de base 10 que la gente usa todos los dias. Todo lo que es procesable por una computadora puede ser representado por secuencias de números hexadecimales y eso incluye imágenes, texto, música, código y todo lo digitalizable.

Manejo básico de la Memoria

Aquí se explica como se almacenan los datos en una memoria de computadora a nivel software. Piensen en la memoria como una calle con casas numeradas (dirección de memoria) y que en cada una de estas pequeñas casas puede vivir un número (contenido de la memoria). Aquí es donde se ven las ventajas de usar sistema hexadecimal

ASCII-zofrenia o Secretos del Código ASCII

Seguro se han preguntado como hace la computadora para manejar textos si todo lo que puede almacenar y procesar son números binarios. En esta entrada se explica que el Código ASCII fue creado para lograr esto y como las disposición de sus letras no es arbitraria. Existe toda una lógica tras el orden de las letras y los números que pueden ser representados por un byte.

Funcionamiento de un STACK

Un stack es una estructura de datos básica que todas las computadoras utilizan y que incluso algunas implementan por hardware. Stack se traduce al español como ‘pila’ pero no en el sentido de pila de energía sino en el de apilar. Como una pila de libros por lo que les recomiendo usar siempre el término stack para evitar confusiones.

Este no es el fin de la saga, de momento hay muchas entradas que no he alcanzado a incluir aquí y en el futuro tengan por seguro que voy a escribir mas entradas destinadas para los iniciados en la programación en lenguaje máquina. Y recuerden que cuando mas capacitados están para aprender algo nuevo es precisamente cuando son conscientes de que no saben nada.

La última actualización de este directorio fue en febrero 2 del 2012, regresen seguido para ver las actualizaciones.


Pueden empezar por aqui

[SIGUIENTE] Ensamblador desde Cero

febrero 2, 2012 - Posted by | Uncategorized | ,

11 comentarios »

  1. hola!,acabo de empesar a leerlos! y me preguntaba si es nesesario leer lo de comprender el codigo binario?

    a mi interesa mas lo del codigo hexadecimal?

    en si quiero saber si es nesesario entender tdo ello,para hacer lo que que te je dicho en un comentario enterior lo de crearle un laucher a un juego donde este jugar y que al darle jugar pida el CD y auto-habra la unidad lectora..tambien que este opciones y creditos…en opciones este para subir y bajar el sonido o bien desactivarlo(y biseversa) tmabein la opcion de cambiar al resolucion de al pantalla,.. en el caso de credito aparesca una especie de aviso donde se muestre el creador(colaboradores,ayudante etc etc) del laucher

    tambien lo de poner la opcion de salir donde al darle salir se muestre un texto despues de cerrarse el laucher que diga por ejemplo, >gracias por su descarga.atentamente armoryneSKY» si a la primera no se logra,queda la segunda y la tercera es la vensida»< claro la tercera para mi no es la vensida xD solo digo lo que dice ese verso,refran,poema o lo que sea xD

    Comentarios por armorineSKY | febrero 6, 2012 | Responder

    • En realidad el hexadecimal es una forma en la que los programadores humanos pueden trabajar mejor con el sistema binario, dentro de la computadora los valores siguen siendo binarios sin importar si los vemos como hexadecimales, decimales, binarios o incluso como letras en una palabra

      En cuanto a lo del CD para eso no hace falta ensamblador. Los CDs pueden llevar rutinas que se ejecutan automaticamente al introducirlos en la PC que normalmente se usan para instalar software. Para abrir el CD y controlar el sonido y la imagen usas llamadas a la propia API de Windows que aunque pueden hacerse desde ASM pueden ser llamadas desde cualquier lenguaje que haga programas ejecutables en Windows. Antes de programar puedes buscar la API de Windows en internet y buscar las funciones que te interesen, ya cuando puedas hacer llamadas al sistema sabras a que funciones llamar

      Comentarios por asm86 | febrero 7, 2012 | Responder

  2. 1.oye despues que aiga aprendido todo esto donde y como lo pongo en practica?
    2.que sigue despues de esto?

    Comentarios por armoryneSKY | febrero 16, 2012 | Responder

    • Lo que puedes hacer con el ASM es todo aquello que la computadora pueda hacer, es como programar para cualquier otra cosa pero mejor, a ver si algun dia escribo el porque es bueno el ensamblador. Aunque la mayoria de los que vienen ya lo saben siempre es bueno ilustrar a los principiantes y a los estudiantes que solo quieren aprobar una materia.

      Respecto a lo del editor hexadecimal, eso depende de cada uno. Normalmente se agrupan en 2 cifras porque 2 cifras equivalen a un byte que es lo minimo que puede tomarse de la memoria con una sola instruccion de transferencia de datos. Ahi es donde se ve lo bueno del hex.

      2 cifras representan un byte de 00h a FFh
      4 cifras un valor de 16 bits como los viejos procesadores que se estudian en las universidades 0000h a FFFFh
      8 cifras son exactamente 32 bits 00000000h a FFFFFFFFH
      esos rangos son mas sencillos de recordar que 0 a 255, 0 a 65535 o peor aun de 0 a 4294967295

      Comentarios por asm86 | febrero 19, 2012 | Responder

  3. buscare ejemplos de cosas que se aigan echo con ese editor,yo queria a ver si tenais algun tiempito para que lo revisaras tu que sabes usar ensambaldro(supongoq eu tmabein x86) a ver si es verdad eso de que se pued eprogramar en x86 en eso claroa demas de editor HEX tambien es para porgramadores y quiero saver si verdaderamente me serviria para x86

    PD.gracias !

    Comentarios por armoryneSKY | febrero 19, 2012 | Responder

  4. Hola asm86. Soy tu admirador el ha seguido todas las entradas que has puesto y con muchas ganas de seguir la próxima, que espero con impaciencia.
    Ningún tutorial de ensamblador es tan explicativo, tan didáctico, tan bueno y tan acertado para un completo aprendiz que esta deseando aprender y saber para luego compartir, como haces tu.
    ¿cuando seguirás con la entrega?
    Saludos

    Comentarios por Luis | febrero 13, 2014 | Responder

  5. Amigo me gusto mucho tu blog, sobre todo tus estupendos manuales sobre comprencion y manejo del ensamblador. creo que me quedo un reto largo :D

    Comentarios por DNX | abril 5, 2014 | Responder

  6. Oh que triste final para esta excelente documentacion. Espero que algun dia lo puedas continuar es un muy profesor. Exitos, gracias por el conocimiento!

    Comentarios por tutoriales de programacion | abril 2, 2015 | Responder

  7. Muy buenos tutoriales, ojala nos indiques donde esta el final.
    los videos del reto 01 tambien estan incompletos.

    mov ignorancia, conocimiento
    lea inteligencia
    int 21h ;

    Comentarios por Rgardo | octubre 10, 2016 | Responder

    • Esas entradas no tienen final porque nunca termino de escribirlas. Aunque tal vez las clasifique en series para leerlas mejor. Sobre los videos estoy investigando como hacerlos de manera eficiente, pues con mis medios actuales es demasiado tardado.

      Comentarios por asm86 | octubre 15, 2016 | Responder

      • Excelente, me estaba adentrando mucho, en esto, y al pasar al siguiente enlace ya no había nada, eres un excelente profesor, ojalá mi profesor de lenguaje ensamblador fuera como tú, pero no te llega ni a los talónes.
        Saludos.

        Comentarios por Cedric | octubre 21, 2016


Deja un comentario