Generalmente, un programa ensamblador (assembler en inglés) moderno crea código objeto traduciendo instrucciones mnemónicas de lenguaje ensamblador en opcodes, y resolviendo los nombres simbólicos para las localizaciones de memoria y otras entidades.Cada arquitectura de microprocesador tiene su propio lenguaje de máquina, y en consecuencia su propio lenguaje ensamblador ya que este se encuentra muy ligado a la estructura del hardware para el cual se programa.Las operaciones que se pueden realizar varían de una CPU a otra.Una CPU particular puede tener instrucciones que no tenga otro y viceversa.Ambos lenguajes ensambladores harían exactamente lo mismo, solo que está expresado de manera diferente.El primer byte contiene empaquetado la instrucción MOV y el código del registro hacia donde se va a mover el dato: En el segundo byte se especifica el número 61h, escrito en binario como 01100001, que se asignará al registro AL, quedando la sentencia ejecutable como: La cual puede ser entendida y ejecutada directamente por el procesador.Algunos ensambladores también soportan simples macroinstrucciones incorporadas que generan dos o más instrucciones de máquina.Las etiquetas también pueden ser usadas para inicializar constantes y variables con direcciones relocalizables.Una organización, usando lenguaje ensamblador, que ha sido fuertemente extendido usando tal suite de macros, puede ser considerada que se está trabajando en un lenguaje de alto nivel, puesto que tales programadores no están trabajando con los elementos conceptuales de más bajo nivel del computador.Por otra parte, los lenguajes homoicónicos, tales como Lisp, Prolog, y Forth, retienen el poder de los macros de lenguaje ensamblador porque pueden manipular su propio código como datos.El ejemplo más temprano de este acercamiento estaba en el Concept-14 macro set, originalmente propuesto por el Dr. H.D.Un curioso diseño fue A-natural, un ensamblador "orientado a la corriente" (stream-oriented) para los procesadores 8080/Z80[cita requerida] de Whitesmiths Ltd.(desarrolladores del sistema operativo Idris, similar al Unix), y lo que fue reportado como el primer compilador C comercial).Por ejemplo, el SOAP (Symbolic Optimal Assembly Program) era un lenguaje ensamblador de 1957 para el computador IBM 650.Hoy en día, aunque el lenguaje ensamblador es casi siempre manejado y generado por los compiladores, todavía se usa para la manipulación directa del hardware, acceso a instrucciones especializadas del procesador, o para resolver problemas de desempeño crítico.Históricamente, un gran número de programas han sido escritos enteramente en lenguaje ensamblador.[cita requerida] Según algunos insiders de la industria, el lenguaje ensamblador era el mejor lenguaje de programación a usar para obtener el mejor desempeño del Sega Saturn, una consola para la cual era notoriamente desafiante desarrollar y programar juegos.El ensamblador ha sido por largo trecho, el lenguaje de desarrollo primario en los computadores hogareños Commodore 64, Atari ST, así como el ZX Spectrum.Algunos sistemas, más notablemente el Amiga, incluso tienen IDEs con características de depuración y macros altamente avanzados, tales como el freeware ASM-One assembler, comparable a las del Microsoft Visual Studio (el ASM-Uno precede al Microsoft Visual Studio).Con 1639 bytes de longitud, su autor cree que es el más pequeño ensamblador simbólico jamás escrito.Esto ha hecho que la velocidad de ejecución cruda del código no sea un problema para muchos programadores.Aunque hoy en día, pocos programadores trabajan regularmente con el lenguaje ensamblador como una herramienta, los conceptos fundamentales continúan siendo muy importantes.Herramientas como Interactive Disassembler, hacen uso extenso del desensamblador para tales propósitos.Usar tales métodos ha habilitado, a sistemas como el Commodore 64, para producir gráficos en 3D en tiempo real con efectos avanzados, una hazaña que puede ser considerada improbable o incluso imposible para un sistema con un procesador de 0.99 MHz.[cita requerida] Para un determinado computador personal, mainframe, sistema empotrado, y consola de juegos, tanto del pasado como del presente, ha sido escrito al menos uno, y posiblemente docenas de ensambladores.En los sistemas Unix, el ensamblador es llamado tradicionalmente as, aunque no es un simple cuerpo de código, siendo típicamente escrito uno nuevo por cada port.Las cosas básicas son siempre las mismas, pero las características avanzadas serán diferentes[20] También, los lenguajes ensambladores a veces pueden ser portables a través de diferentes sistemas operativos en el mismo tipo de CPU.Las convenciones de llamadas entre los sistemas operativos con frecuencia difieren ligeramente o en nada.Esto es esencialmente lo que logra el microcódigo cuando una plataforma de hardware cambia internamente.El siguiente es un ejemplo del programa clásico Hola mundo escrito para la arquitectura de procesador x86 (bajo el sistema operativo DOS).