Datos esenciales
Década de 1950 (IBM 701, EDSAC, UNIVAC). Lenguaje de mnemónicos con correspondencia directa 1:1 a instrucciones de CPU.
Lenguaje #1
Del código máquina a mnemónicos legibles: el idioma nativo del hardware y la base de todos los lenguajes posteriores. Permite control absoluto sobre registros, memoria, interrupciones y ciclos de CPU.
Década de 1950 (IBM 701, EDSAC, UNIVAC). Lenguaje de mnemónicos con correspondencia directa 1:1 a instrucciones de CPU.
Surge como alternativa al código máquina para reducir errores de bit y acelerar la programación de mainframes. Crece con la llegada de subrutinas (Wheeler), macros y ensambladores portables. En microcomputadoras (6502, Z80) habilitó videojuegos y BIOS. Hoy sigue vigente en kernels, firmware y optimización crítica.
Kathleen Booth formaliza los primeros mnemónicos (1950). David Wheeler populariza subrutinas en EDSAC. Grace Hopper impulsa lenguajes más cercanos al negocio, pero parte desde ensamblador. Equipos de Intel, Motorola y ARM definen ISAs que marcan la sintaxis de sus ensambladores.
Bootloaders, BIOS/UEFI, drivers, rutinas de interrupción, sistemas embebidos, optimización SIMD/AVX, criptografía y secciones críticas de kernels. También se usa para ingeniería inversa, exploits y demoscene.
Etiquetas, mnemónicos (MOV, ADD, JMP), operandos inmediatos/registro/memoria, directivas (section, db, dw), macros y enlaces a símbolos externos. Modelo de memoria y calling convention varían por plataforma.
Assemblers (NASM, MASM, GAS), depuradores (gdb/lldb, WinDbg), desensambladores (objdump, IDA, Ghidra), linkers (ld, lld) y simuladores. Integración actual con toolchains LLVM y GCC.
Define la noción de “cercanía al metal” y las convenciones de llamadas. Inspiró las primeras optimizaciones de compiladores y moldeó la sintaxis de C al mapearse de forma eficiente a instrucciones de CPU.
El opcode NOP (0x90 en x86) es famoso por “sleds” en exploits y por alinear loops de rendimiento. La demoscene de 8 bits exprimió cada ciclo de 6502 y Z80. Muchos virus de los 80/90 estaban escritos a mano en ensamblador.
Vital en firmware, compiladores, kernels, runtimes de lenguajes y optimización de bibliotecas. Aunque se escribe menos a mano, sigue siendo esencial para comprender cómo el software se ejecuta en el hardware.