Este Simulador de ensamblador de 8 bits en JavaScript es una magnífica herramienta educativa para aprender y practicar las bases de uno de los lenguajes más cercanos al código máquina. Cada instrucción de ensamblador se traduce en un código ejecutable directamente por el procesador de la simulación, lo que permite hacerse buena idea de «cómo funcionan las cosas» en las tripas de la máquina – aunque sea de forma muy simplificada.
El simulador lo escribió Marco Schweighauser en JavaScript+Angular y funciona directamente en el navegador. En la ventana de la izquierda se escribe el código en ensamblador y al pulsar el botón Ensamblar se convierte cada instrucción en instrucciones de uno, dos o tres bytes en la RAM, respetando las referencias. Los botones Run/Stop y Step permiten ejecutar o parar el programa y examinarlo paso a paso. Reset reinicia el simulador.
Dado su carácter didáctico y la búsqueda de la simplicidad sus posibilidades son muy limitadas: sólo hay 256 bytes de RAM y tanto el código del programa como los datos y la «consola de salida» deben caber en esa escasa memoria. Hay cuatro registros (A, B, C, D) y tres flags (cero = Z, acarreo = C y fallo = F), además de dos punteros (IP = instrucciones, pila = SP). Hay una descripción completa de la sintaxis, diseñada como las de las CPU de tipo x86.
Me encontré con este simulador leyendo The Surprising Story of the First Microprocessors en IEEE Spectrum, que es un gran artículo sobre la historia de las primeros procesadores, del 4004 en adelante – e incluso antes.