La Torre de Babel

Josué Acevedo Maldonado
Nabucodonosor Editorial
3 min readDec 18, 2019

El lenguaje ensamblador es como la Torre de Babel, ya te explico porque…

Photo by Elly Brian on Unsplash

Cuando aprendemos un lenguaje de alto nivel como por ejemplo C, C++, python o cualquier otro tenemos la costumbre de escribir en el navegador “ejemplos de C” o “ejemplos de python” y funciona sin problemas, pero cuando hacemos lo mismo con ensamblador obtenemos muchos ejemplos distintos y eso es confuso, porque en realidad existen miles de lenguajes llamados ensamblador. Veras…

Si tuvieses dos compuertas lógicas por ejemplo una AND y otra OR y quisieras ver el resultado de una u otra empleando un led, bueno el led debe de estar conectado a una u a otra compuerta cada vez no al mismo tiempo porqué entonces el resultado sería erróneo; y es posible utilizar la mano para hacer el cambio de la entrada del led pero y si en lugar de solo dos compuertas tuvieses ahora 20 compuertas diferentes y debes de realizar los cambios en milisegundos; entonces la tarea se vuelve casi imposible si se emplea la mano para realizar los cambios.

Por lo que ahora necesitamos automatizar el proceso, para lo que se requiere un dispositivo electrónico que permita hacer este cambio a alta velocidad; es aquí donde aparece el multiplexor. Este dispositivo permite conectar una de las entradas con la única salida que tiene, pero para esto se necesita seleccionar alguna de las entradas mediante una señal. A esta señal le llamaremos “operación” o “codigo de operación”.

MiniALU

Podríamos conectar la compuerta AND a la entrada número cero y la compuerta OR a la entrada número uno, de esta forma si se envía un cero como codigo de operación el led mostrara la salida de la compuerta AND y si se envía un uno entonces veremos la salida de la OR.

De tener más operaciones, como una compuerta XOR y una NAND entonces tendríamos un multiplexor de cuatro entradas y para seleccionar una operación se emplearían, dos pines para indicar el “codigo de operación”:

00 -> AND

01 -> OR

10 -> XOR

11 -> NAND

De esta forma podemos enviar un par de datos y seleccionar la operación a realizar, por lo que tenemos una ¡ALU!, pieza principal de un procesador. Sí, los mismos que venden empresas como Intel o AMD, claro estos procesadores comerciales presentan componentes más complejos para mejorar el rendimiento, pero la base de ellos es el mismo.

Y como se podrán imaginar los códigos de operación los especificamos como mejor nos pareció hacerlo, y eso mismo pasa con cada fabricante, especifican sus propios códigos y por lo tanto el codigo máquina que trabajan es distinto y por lo tanto el ensamblador que se ejecuta en cada uno de ellos también será diferente. Una curiosidad es que el ensamblador de los procesadores INTEL y AMD es el mismo porque AMD clono los productos de Intel, y además los más nuevos procesadores Intel son prácticamente el mismo que el mítico 8086 ¡de los años 80’s!, claro con mejoras pero en el fondo es el mismo; aunque esa historia da para otro post.

Asi que la próxima vez que busques ejemplos de ensamblador en internet especifica primero que nada para que procesador es el que programaras, así evitaras muchos, pero muchos dolores de cabeza. (Y eso que no mencionamos que existen distintos fabricantes de ensamblador y sintaxis y sistemas operativos…..)

Josue Acevedo Maldonado es ingeniero de software, trabaja actualmente como consultor.

Conectarse en LinkedIn.

¡Gracias por ser parte de la comunidad!
Puede encontrar contenido relacionado en el canal de YouTube, Twitter, Twitch, Spotify, etc, ademas del libro Ensamblador X86.

Si ha disfrutado de este artículo y siente que ha aprendido algo valioso, por favor compártalo.

¡Gracias por leer!

--

--

Josué Acevedo Maldonado
Nabucodonosor Editorial

Amante de la tecnologia y con pasion en resolver problemas interesantes, consultor, y creador del canal de youtube NEOMATRIX. https://linktr.ee/neomatrix