Un lenguaje ensamblador es una forma de bajo nivel de instruir a una computadora para que lleve a cabo una tarea. Las computadoras no comprenden inherentemente las instrucciones de las personas. En el nivel más básico, las computadoras comprenden instrucciones en lenguaje binario, es decir, secuencias de ceros y unos. Sin embargo, el lenguaje binario o el lenguaje de máquina es extremadamente complicado de programar. El lenguaje ensamblador se inventó como una representación simbólica de las secuencias subyacentes de ceros y unos.
Supongamos que programamos un juego que, tras una determinada acción, otorga al jugador cinco puntos. La computadora mantiene la puntuación en una ubicación determinada; las ubicaciones son un lugar de almacenamiento dentro de la CPU, llamado «registro», o en algún espacio de la memoria. La computadora comprende ubicaciones y acciones de bajo nivel llamadas operaciones. Entonces, si la puntuación se mantiene en el registro RA, entonces entiende el comando, 0101 1100 0000 0101, donde los primeros cuatro números indican la operación ADD, los cuatro siguientes indican el registro RA y los últimos ocho indican el número 5.
Originalmente, las computadoras tenían que codificarse de esta manera; El lenguaje de máquina es lento, propenso a errores y puede ser muy difícil para una persona entender lo que otra está tratando de codificar. Entonces, los programadores de computadoras crearon un lenguaje en el que las operaciones, ubicaciones, números, etc., se pueden entender mejor. Por lo tanto, el comando equivalente para el ejemplo anterior sería ADD RA 5. En este ejemplo hipotético, se utilizan mnemónicos para la operación ADD y el registro RA, y el número 5 se escribe en dígitos.
Un programa llamado ensamblador convierte el código en lenguaje ensamblador en el lenguaje de máquina subyacente. En días anteriores, incluso esta conversión consumía recursos informáticos costosos, por lo que los códigos de operación, códigos de operación en resumen, como Restar se abreviaban como SUB, Copiar-Mover se abreviaba como MOV y, en algunos casos, incluso ADD se abreviaba como A.
El lenguaje ensamblador es principalmente una capa delgada por encima de la estructura de la máquina. Por lo tanto, los códigos de operación, los registros y todo el lenguaje dependen en gran medida de la familia de CPU. Entonces, la familia Intel x86 tiene códigos de operación como MOV, MOVSX y MOVZX, mientras que IBM 360 tiene códigos de operación como MVI, MVC, MVZ. Al diseñar una computadora o CPU, los diseñadores especifican el lenguaje de la máquina, incluidos los códigos de operación.
Los programadores pronto se trasladaron a lenguajes de «alto nivel» como COBOL, Pascal, C ++ y SQL. Los compiladores convierten el código escrito en estos lenguajes en lenguaje de máquina. Sin embargo, el código de ensamblaje todavía se usa para CPU especializadas o para garantizar la velocidad desde las consolas de juegos hasta los sistemas de automóviles.