Resumen
En programación informática, el lenguaje ensamblador (alternativamente lenguaje ensamblador o código máquina simbólico), a menudo denominado simplemente ensamblador y comúnmente abreviado como ASM o asm, es cualquier lenguaje de programación de bajo nivel con una correspondencia muy fuerte entre las instrucciones del lenguaje y las instrucciones del código máquina de la arquitectura. El lenguaje ensamblador suele tener una sentencia por instrucción de máquina (1:1), pero las constantes, comentarios, directivas del ensamblador, etiquetas simbólicas de, e.g., ubicaciones de memoria, registros y macros generalmente también se admiten.
El primer código ensamblador en el que se utiliza un lenguaje para representar instrucciones de código máquina se encuentra en el trabajo de 1947 de Kathleen y Andrew Donald Booth, Coding for A.R.C.. El código ensamblador se convierte en código máquina ejecutable mediante un programa de utilidad denominado ensamblador. El término "ensamblador" se atribuye generalmente a Wilkes, Wheeler y Gill en su libro de 1951 The Preparation of Programs for an Electronic Digital Computer, quienes, sin embargo, utilizaron el término para significar "un programa que ensambla otro programa que consta de varias secciones en un único programa". El proceso de conversión se denomina ensamblaje, como en ensamblar el código fuente. El paso computacional cuando un ensamblador procesa un programa se denomina tiempo de ensamblaje.
Dado que el ensamblaje depende de las instrucciones del código máquina, cada lenguaje ensamblador es específico de una arquitectura de computadora en particular.
A veces hay más de un ensamblador para la misma arquitectura, y a veces un ensamblador es específico de un sistema operativo o de sistemas operativos en particular. La mayoría de los lenguajes ensambladores no proporcionan una sintaxis específica para las llamadas al sistema operativo, y la mayoría de los lenguajes ensambladores se pueden utilizar universalmente con cualquier sistema operativo, ya que el lenguaje proporciona acceso a todas las capacidades reales del procesador, sobre las que en última instancia descansan todos los mecanismos de llamada al sistema. En contraste con los lenguajes ensambladores, la mayoría de los lenguajes de programación de alto nivel son generalmente portátiles entre múltiples arquitecturas pero requieren interpretación o compilación, tareas mucho más complicadas que el ensamblaje.
De Wikipedia (CC BY-SA 4.0).