Está en la página 1de 4

Lenguaje ensamblador

Ir a la navegaci�nIr a la b�squeda
Para otros usos de este t�rmino, v�ase Ensamblador (desambiguaci�n).
Lenguaje ensamblador
Motorola 6800 Assembly Language.png

Motorola MC6800 Assembly listing


?
Informaci�n general
Extensiones comunes .asm
Paradigma Imperative, unstructured
Apareci� en 1949
[editar datos en Wikidata]

Lenguaje de m�quina del Intel 8088. El c�digo de m�quina en hexadecimal se resalta


en rojo, el equivalente en lenguaje ensamblador en magenta, y las direcciones de
memoria donde se encuentra el c�digo, en azul. Abajo se ve un texto en hexadecimal
y ASCII.
El lenguaje ensamblador o assembler (en ingl�s: assembly language y la abreviaci�n
asm) es un lenguaje de programaci�n de bajo nivel. Consiste en un conjunto de
mnem�nicos que representan instrucciones b�sicas para los computadores,
microprocesadores, microcontroladores y otros circuitos integrados programables.
Implementa una representaci�n simb�lica de los c�digos de m�quina binarios y otras
constantes necesarias para programar una arquitectura de procesador y constituye la
representaci�n m�s directa del c�digo m�quina espec�fico para cada arquitectura
legible por un programador. Cada arquitectura de procesador tiene su propio
lenguaje ensamblador que usualmente es definida por el fabricante de hardware, y
est� basada en los mnem�nicos que simbolizan los pasos de procesamiento (las
instrucciones), los registros del procesador, las posiciones de memoria y otras
caracter�sticas del lenguaje. Un lenguaje ensamblador es por lo tanto espec�fico de
cierta arquitectura de computador f�sica (o virtual). Esto est� en contraste con la
mayor�a de los lenguajes de programaci�n de alto nivel, que idealmente son
portables.

Un programa utilitario llamado ensamblador es usado para traducir sentencias del


lenguaje ensamblador al c�digo de m�quina del computador objetivo. El ensamblador
realiza una traducci�n m�s o menos isomorfa (un mapeo de uno a uno) desde las
sentencias mnem�nicas a las instrucciones y datos de m�quina. Esto est� en
contraste con los lenguajes de alto nivel, en los cuales una sola declaraci�n
generalmente da lugar a muchas instrucciones de m�quina.

Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el


desarrollo del programa, controlar el proceso de ensamblaje, y la ayuda de
depuraci�n. Particularmente, la mayor�a de los ensambladores modernos incluyen una
facilidad de macro (descrita m�s abajo), y se llaman macro ensambladores.

Fue usado principalmente en los inicios del desarrollo de software, cuando a�n no
se contaba con potentes lenguajes de alto nivel y los recursos eran limitados.
Actualmente se utiliza con frecuencia en ambientes acad�micos y de investigaci�n,
especialmente cuando se requiere la manipulaci�n directa de hardware, alto
rendimiento, o un uso de recursos controlado y reducido. Tambi�n es utilizado en el
desarrollo de controladores de dispositivo (en ingl�s, device drivers) y en el
desarrollo de sistemas operativos, debido a la necesidad del acceso directo a las
instrucciones de la m�quina. Muchos dispositivos programables (como los
microcontroladores) a�n cuentan con el ensamblador como la �nica manera de ser
manipulados.

�ndice
1 Caracter�sticas
2 Programa ensamblador
2.1 Ensambladores de alto nivel
2.2 Uso del t�rmino
3 Lenguaje
3.1 Instrucciones de CPU
3.2 Ensamblado
3.3 Ejemplos
4 Dise�o del lenguaje
4.1 Elementos b�sicos
4.1.1 Mnem�nicos de opcode y mnem�nicos extendidos
4.1.2 Secciones de datos
4.1.3 Directivas del ensamblador
4.2 Macros
4.3 Soporte para programaci�n estructurada
5 Uso del lenguaje ensamblador
5.1 Perspectiva hist�rica
5.2 Uso actual
5.3 Aplicaciones t�picas
6 Detalles adicionales
7 Ejemplos de lenguaje ensamblador
7.1 Ejemplo para la arquitectura x86
7.2 Ejemplo para el computador virtual (POCA)
7.3 Ejemplo para el �C Intel 8051
7.4 Ejemplo para el Microchip PIC16F84
8 V�ase tambi�n
9 Referencias
10 Bibliograf�a
11 Enlaces externos
Caracter�sticas
El c�digo escrito en lenguaje ensamblador posee una cierta dificultad de ser
entendido ya que su estructura se acerca al lenguaje m�quina, es decir, es un
lenguaje de bajo nivel.
El lenguaje ensamblador es dif�cilmente portable, es decir, un c�digo escrito para
un microprocesador, puede necesitar ser modificado, para poder ser usado en otra
m�quina distinta. Al cambiar a una m�quina con arquitectura diferente, generalmente
es necesario reescribirlo completamente.
Los programas hechos por un programador experto en lenguaje ensamblador son
generalmente mucho m�s r�pidos y consumen menos recursos del sistema (memoria RAM y
ROM) que el programa equivalente compilado desde un lenguaje de alto nivel. Al
programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se
ejecutan m�s r�pidamente y ocupan menos espacio que con lenguajes de alto nivel.
Con el lenguaje ensamblador se tiene un control muy preciso de las tareas
realizadas por un microprocesador por lo que se pueden crear segmentos de c�digo
dif�ciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que,
entre otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU
que generalmente no est�n disponibles en los lenguajes de alto nivel.
Tambi�n se puede controlar el tiempo en que tarda una rutina en ejecutarse, e
impedir que se interrumpa durante su ejecuci�n.
Programa ensamblador
Art�culo principal: Ensamblador
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.1? El uso de referencias simb�licas es una caracter�stica clave del
lenguaje ensamblador, evitando tediosos c�lculos y actualizaciones manuales de las
direcciones despu�s de cada modificaci�n del programa. La mayor�a de los
ensambladores tambi�n incluyen facilidades de macros para realizar sustituci�n
textual - ej. generar cortas secuencias de instrucciones como expansi�n en l�nea en
vez de llamar a subrutinas.

Los ensambladores son generalmente m�s simples de escribir que los compiladores
para los lenguajes de alto nivel, y han estado disponibles desde los a�os 1950. Los
ensambladores modernos, especialmente para las arquitecturas basadas en RISC, tales
como MIPS, Sun SPARC, y HP PA-RISC, as� como tambi�n para el x86 (-64), optimizan
la planificaci�n de instrucciones para explotar la segmentaci�n del CPU
eficientemente.

En los compiladores para lenguajes de alto nivel, son el �ltimo paso antes de
generar el c�digo ejecutable.

N�mero de paso Hay dos tipos de ensambladores basados en cu�ntos pasos a trav�s de
la fuente son necesarios para producir el programa ejecutable.

Los ensambladores de un solo paso pasan a trav�s del c�digo fuente una vez y asumen
que todos los s�mbolos ser�n definidos antes de cualquier instrucci�n que los
refiera.
Los ensambladores de dos pasos crean una tabla con todos los s�mbolos y sus valores
en el primer paso, despu�s usan la tabla en un segundo paso para generar c�digo. El
ensamblador debe por lo menos poder determinar la longitud de cada instrucci�n en
el primer paso para que puedan ser calculadas las direcciones de los s�mbolos.
La ventaja de un ensamblador de un solo paso es la velocidad, que no es tan
importante como lo fue en un momento dados los avances en velocidad y capacidades
del computador. La ventaja del ensamblador de dos pasos es que los s�mbolos pueden
ser definidos dondequiera en el c�digo fuente del programa. Esto permite a los
programas ser definidos de maneras m�s l�gicas y m�s significativas, haciendo los
programas de ensamblador de dos pasos m�s f�ciles de leer y mantener.2?

Ensambladores de alto nivel


Los m�s sofisticados ensambladores de alto nivel proporcionan abstracciones del
lenguaje tales como:

Estructuras de control avanzadas


Declaraciones e invocaciones de procedimientos/funciones de alto nivel
Tipos de datos abstractos de alto nivel, incluyendo las estructuras/records,
uniones, clases, y conjuntos
Procesamiento de macros sofisticado (aunque est� disponible en los ensambladores
ordinarios desde finales de 1960 para el IBM/360, entre otras m�quinas)
Caracter�sticas de programaci�n orientada a objetos
Uso del t�rmino
Note que, en el uso profesional normal, el t�rmino ensamblador es frecuentemente
usado tanto para referirse al lenguaje ensamblador como tambi�n al programa
ensamblador (que convierte el c�digo fuente escrito en el lenguaje ensamblador a
c�digo objeto que luego ser� enlazado para producir lenguaje de m�quina). Las dos
expresiones siguientes utilizan el t�rmino "ensamblador":

Lenguaje
El lenguaje ensamblador refleja directamente la arquitectura y las instrucciones en
lenguaje de m�quina de la CPU, y pueden ser muy diferentes de una arquitectura de
CPU a otra.

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. Los microprocesadores difieren
en el tipo y n�mero de operaciones que soportan; tambi�n pueden tener diferente
cantidad de registros, y distinta representaci�n de los tipos de datos en memoria.
Aunque la mayor�a de los microprocesadores son capaces de cumplir esencialmente las
mismas funciones, la forma en que lo hacen difiere y los respectivos lenguajes
ensamblador reflejan tal diferencia.

Instrucciones de CPU
La mayor�a de las CPU tienen m�s o menos los mismos grupos de instrucciones, aunque
no necesariamente tienen todas las instrucciones de cada grupo. 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.

Los primeros microprocesadores de 8 bits no ten�an operaciones para multiplicar o


dividir n�meros, por ejemplo, y hab�a que hacer subrutinas para realizar esas
operaciones. Otras CPU puede que no tengan operaciones de punto flotante y habr�a
que hacer o conseguir bibliotecas que realicen esas operaciones.

Las instrucciones de la CPU pueden agruparse, de acuerdo a su funcionalidad, en:

Operaciones con enteros: (de 8, 16, 32 y 64 bits dependiendo de la arquitectura de


la CPU, en los sistemas muy viejos tambi�n de 12, 18, 24, 36 y 48 bits).

También podría gustarte