Está en la página 1de 12

ENSAMBLADOR

1 de 12

http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblad...

ENSAMBLADOR
MC. Juan Gilberto Mateos Surez

1. INTRODUCCIN
Los ensambladores son programas que procesan los enunciados del programa origen en lenguaje
ensamblador y los traducen en archivos en lenguaje mquina que son ejecutados por un microprocesador o un
microcontrolador.
Los ensambladores permiten que los programas origen se escriban y se editen en una computadora para
generar un cdigo ejecutable en otra computadora. El archivo en lenguaje objeto ejecutable resultante se
carga y se ejecuta en el sistema destino.

2. LENGUAJE ENSAMBLADOR
El lenguaje simblico que se utiliza para codificar los programas origen que se procesan por el ensamblador
es llamado lenguaje ensamblador.
Este lenguaje es una coleccin de smbolos mnemnicos que representan: operaciones (mnemnicos de
instrucciones para la mquina o de directrices para el ensamblador), nombres simblicos, operadores y
smbolos especiales.
El lenguaje ensamblador proporciona cdigos de operacin de los mnemnicos para todas las instrucciones
de la mquina contenidas en la lista de instrucciones.
Adems, el lenguaje ensamblador contiene mnemnicos directrices, los cuales especifican acciones auxiliares
que se llevan a cabo por el ensamblador.
Estas directrices no siempre son traducidas a lenguaje maquina.
Un programador escribe el programa origen en lenguaje ensamblador utilizando cualquier editor de textos o
procesador de palabras que sea capaz de producir una salida de texto en ASCII.
Una vez que el cdigo origen ha sido escrito, el archivo origen es ensamblado mediante su procesamiento a
travs de algn ensamblador.

3. PROCESAMIENTO DE ENSAMBLADO
Este ensamblador es de dos pasadas.
Durante la primer pasada, el programa origen se lee para desarrollar la tabla de smbolos.
Durante la segunda pasada el archivo objeto se crea (ensamblado) con referencia a la tabla desarrollada en la
primer pasada.
24/06/2015 5:26 p. m.

ENSAMBLADOR

2 de 12

http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblad...

Durante la segunda pasada se crea el listado del programa origen.


Cada enunciado origen se procesa completamente antes de que el enunciado siguiente se lea.
A medida que el enunciado se procesa el ensamblador examina los campos de etiqueta, de cdigo de
operacin y de operandos.
La tabla de cdigos de operacin se revisa para encontrar un cdigo operacional similar.
Durante el procesamiento de un mnemnico correspondiente a un cdigo de operacin normal, el cdigo
mquina normal se inserta en el archivo objetivo.
La accin buscada por una directriz del ensamblador ocurre durante el procesamiento de dicha directriz.
Cualquier error que detecta el ensamblador se muestra justamente antes de la lnea que contiene dicho error.
An y cuando no se desee producir un listado origen, los errores se despliegan para indicar que el
procesamiento de ensamblado no se llev a cabo de manera normal.

PROGRAMAS EN LENGUAJE ENSAMBLADOR


1. INTRODUCCIN
Los programas escritos en lenguaje ensamblador consisten de una secuencia de enunciados origen.
Cada enunciado origen se compone de una secuencia de caracteres ASCII que terminan con un retorno
(ENTER).
El apndice A contiene un listado de los caracteres disponibles.

2. FORMATO DE LOS ENUNCIADOS ORIGEN

Cada enunciado origen puede contener hasta cuatro campos: una etiqueta o " * " para una lnea de
comentario, una operacin (ya sea el mnemnico de una instruccin o una directriz para el ensamblador), un
operando y un comentario.

2.1 Campo de Etiquetas

El campo de etiquetas aparece como el primer campo dentro de un enunciado origen. El campo de etiquetas
puede adoptar cualquiera de las siguientes formas:
1. Un asterisco ( * ) como el primer carcter en el campo de etiquetas indica que el resto del enunciado

24/06/2015 5:26 p. m.

ENSAMBLADOR

3 de 12

http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblad...

origen es un comentario. Los comentarios son ignorados por el ensamblador e impresos en el listado
origen solamente como informacin de programacin.
2. Un espacio de carcter en blanco (TAB o espacio) como primer carcter indica que el campo de
etiquetas se encuentra vaco. La lnea no tiene una etiqueta y no es un comentario.
3. Un smbolo como primer carcter indica que la lnea tiene etiqueta. Estos smbolos son las letras
maysculas y minsculas ( a - z ), los dgitos ( 0 - 9 ) y caracteres especiales como punto ( . ), signo de
pesos ( $ ) y subrayado ( _ ). Estos smbolos consisten de uno a quince caracteres, el primero de los
cuales debe ser alfabtico o un carcter especial punto o subrayado. Todos los caracteres son
significantes y las maysculas y minsculas son distintas.
Un smbolo puede aparecer solamente una vez en el campo de etiquetas.
Si un smbolo aparece ms de una vez en el campo de etiquetas, toda referencia a dicho smbolo ser marcada
como error.
Con la excepcin de algunas directrices a la etiqueta se le asigna el valor del contador de programa ( PC ) del
primer byte de la instruccin o dato que se est ensamblando.
El valor asignado a la etiqueta es absoluto.
De manera opcional, las etiquetas pueden ser terminadas con el smbolo de dos puntos ( : ).
Si dicho smbolo es utilizado, no formar parte de la etiqueta, simplemente servir como separacin entre la
etiqueta y el resto del enunciado origen.
De esta forma, los siguientes fragmentos son equivalentes:
salta: deca salta deca

bne salta bne salta

Una etiqueta puede aparecer por si sola en una lnea. El ensamblador interpreta esto como "establece el valor
de la etiqueta igual al valor actual del contador de programa ( PC )".

2.2 Campo de Operaciones


El campo de operaciones aparece despus del campo de etiquetas y debe de estar precedido por al menos un
espacio en blanco.
El campo de operaciones debe de contener el mnemnico de un cdigo de operacin legal o una directriz del
ensamblador.
En este campo, los caracteres en maysculas son convertidos en minsculas antes de ser revisados como un
mnemnico legal.
Debido a esto " nop ", " NOP " y " NoP " son reconocidos como el mismo mnemnico.
Los smbolos que aparecen en este campo pueden ser de uno de dos tipos.

24/06/2015 5:26 p. m.

ENSAMBLADOR

4 de 12

http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblad...

I. Cdigo de Operacin.
Estos smbolos corresponden directamente a instrucciones de mquina.
El cdigo de operacin incluye a cualquier nombre e registro asociado con la instruccin.
Estos nombres de registros no deben de estar separados del cdigo de operacin por ningn espacio en
blanco.
De esta forma, " clra " significa " limpia (poner en ceros) el acumulador ( A ) ", pero " lr a " significa " limpia
la localidad de memoria identificada por la etiqueta a ".

II. Directriz.
Estos son cdigos de operacin especiales conocidos por el ensamblador, los cuales ms bien controlan el
proceso de ensamblado en vez de ser traducidos a instrucciones mquina.

2.3 Campo de Operandos


La interpretacin del campo de operandos depende del contenido del campo de operaciones.
El campo de operandos, si se requiere, debe de seguir al campo de operaciones y debe de estar precedido por
al menos un espacio en blanco.
El campo de operandos puede contener un smbolo, una expresin o una combinacin de smbolos y
expresiones separados por comas.
El campo de operandos de una instruccin mquina es utilizada para especificar el modo de direccionamiento
de la instruccin, as como el operando de la instruccin.
La siguiente tabla resume los diferentes formatos del campo de operandos para la familia HC11.

2.3.1 Sintaxis de Operandos para M68HC11


Para la familia de dispositivos mC´s de la familia M68HC11 se utilizan los siguientes formatos de
operandos:
Formatos de Operandos

Modo de Direccionamiento

sin operando

Acumulador e Inherente

24/06/2015 5:26 p. m.

ENSAMBLADOR

5 de 12

http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblad...

< expresin

Directo, Extendido o
Relativo

# < expresin

Inmediato

< expresin , X

Indexado con el registro X

< expresin , Y

Indexado con el registro Y

< expresin < expresin

Set o Clear Bit

< expresin < expresin < expresin

Prueba Bit y Bifurca

En este caso, los operandos de las instrucciones de manipulacin de bits estn separados por espacios ya que
el HC11 permite las instrucciones de manipulacin de bits en direcciones indexadas.
Debido a esto, X o Y pueden ser agregados a la primer expresin en los ltimos dos formatos arriba
mostrados para formar el clculo de la direccin indexada efectiva.

2.3.2 Expresiones
Una expresin es una combinacin de smbolos constantes, operadores algebraicos y parntesis. La expresin
especifica un valor, el cual ser utilizado como operando.
Las expresiones pueden consistir de smbolos, constantes o del caracter * (denotando el valor actual del
contador de programa PC) unidos entre s por alguno de los operadores: +, -, *, /, %, &, I, ^.

2.3.3 Operadores

Los operadores son iguales a los utilizados en el lenguaje de programacin C:


+ suma
- resta
* multiplicacin
/ divisin
% residuo despus de divisin
& and
I or
^ or exclusiva
Las expresiones son evaluadas de izquierda a derecha y las expresiones con parntesis no estn previstas. La
aritmtica es realizada con precisin de enteros en complemento a dos con signo.

24/06/2015 5:26 p. m.

ENSAMBLADOR

6 de 12

http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblad...

2.3.4 Smbolos
Cada smbolo se encuentra asociado con un valor entero de 16 bits, el cual es utilizado en lugar del smbolo
durante la evaluacin de la expresin.
El asterisco (*) utilizado en una expresin como smbolo representa el valor actual del contador de
localidades (el primer byte de una instruccin de varios bytes ).

2.3.5 Constantes
Las constantes representan cantidades de informacin que no varan en su valor durante la ejecucin del
programa.
Las constantes pueden ser presentadas al ensamblador en uno de cinco posibles formatos: decimal,
hexadecimal, binario, octal o ASCII.
El programador le indica al ensamblador el formato del nmero con los siguientes prefijos:

$ Hexadecimal
% Binario
@ Octal
ASCII
Las constantes sin prefijo son interpretadas como decimal.
El ensamblador convierte todas las constantes a cdigo mquina binario y son desplegadas en el listado del
ensamblado como valores hexadecimales.

2.4 Campo de Comentarios


El ltimo campo de un enunciado origen del ensamblador es el campo de comentarios.
Este campo es opcional y solamente es impreso en el listado origen con propsitos de documentacin.
El campo de comentarios es separado del campo de los operandos (o del campo de operaciones sino se
requiere operando) por al menos un espacio en blanco.
El campo de comentarios puede contener cualquier carcter imprimible ASCII.

24/06/2015 5:26 p. m.

ENSAMBLADOR

7 de 12

http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblad...

3. SALIDA DEL ENSAMBLADOR


La salida del ensamblador incluye un listado opcional del programa origen y un archivo objeto, el cual se
encuentra en el formato de Archivo S de Motorola.
El ensamblador normalmente suprime la impresin del listado origen, pero esta condicin y otras pueden ser
alteradas a travs de diferentes opciones proporcionadas en la lnea de comando que invoca al ensamblador.
Cada lnea del listado contiene un nmero de lnea de referencia, la direccin y los bytes ensamblados y el
enunciado origen.
Opcionalmente, el listado del ensamblado puede contener una tabla de smbolos y otra de la aparicin de
estas en el programa.
Estas tablas siempre son impresas al final del listado de ensamblado.

FUNCIONAMIENTO DEL ENSAMBLADOR


1. INTRODUCCIN
Los programas ensambladores de Motorola, del dominio pblico se nombran "as*.exe", donde * se refiere al
tipo de familia.
Por lo tanto para correr el ensamblador de la familia M68HC11 se utiliza el comando "as11.exe".

2. INVOCACIN DEL ENSAMBLADOR


Para correr el ensamblador del HC11 introdzcase la siguiente lnea de comando:
as11 archivo1 (archivo2 . . . ) ( - opcin1 opcin2 . . . )
Donde archivo1, archivo2, etc, son los nombres de los archivos origen que se desean ensamblar. Los archivos
origen pueden tener extensiones en su nombre, pero el ensamblador no verifica si existe alguna extensin en
particular (sin embargo, no se utilice la extensin .s19, ya que sta es la extensin del archivo objeto
producido por el ensamblador. Al crearse dicho archivo objeto se perdera el archivo origen, ya que sera
sobre escrito en el disco).
Las opciones son uno o ms de las siguientes:
l Habilita el listado de salida
no Deshabilita el listado de salida (default)
cre Habilita la generacin de la tabla de referencia
s Habilita la generacin de la tabla de smbolos

24/06/2015 5:26 p. m.

ENSAMBLADOR

8 de 12

http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblad...

c Habilita el conteo de ciclos


noc Deshabilita el conteo de ciclos
Utilice un espacio en blanco antes del signo menos (-) que precede a la opcin, esto con el objetivo de separar
la opcin del ltimo nombre de archivo.
Estas opciones tambin pueden ser indicadas al ensamblador mediante el uso de la directriz OPT en el
archivo origen.
El archivo objeto creado es escrito en el disco y se le da el nombre " nombre archivo.s19 ", donde nombre
archivo es el primer archivo origen indicado en la lnea de comando.
Cualquier error y el listado opcional (si se especific) son desplegados en la pantalla.
El listado y/o los mensajes de error pueden ser salvados en un archivo para su posterior examinacin o
impresin, esto se logra mediante un comando de redireccionamiento de E/S en la lnea de comando.
En la PC, la redireccin de E/S se indica con el smbolo mayor que ( ), seguido de un nombre de archivo
nuevo o existente.

3. MENSAJES DE ERROR
Los mensajes de diagnstico de error son colocados en el archivo de listado justo antes de la lnea que
contenga el error. El formato de la lnea de error es:
Lnea_nmero: Descripcin del error o
Lnea_nmero: Peligro - - - Descripcin del error
Los errores en la primer pasada ocasionan la cancelacin de la segunda pasada.
Un mensaje de error del tipo peligro no ocasiona la cancelacin de la segunda pasada, pero indica un
posible problema.
Los mensajes de error estn diseados para ser explicados por s mismos.

DIRECTRICES DEL ENSAMBLADOR


1. INTRODUCCIN
Las directrices del ensamblador son instrucciones para el ensamblador mismo en vez de ser instrucciones a
ser traducidas directamente en el cdigo objeto.
A continuacin se muestran las directrices reconocidas por los ensambladores como vlidas, se explican con
ms detalle las ms usuales.

24/06/2015 5:26 p. m.

ENSAMBLADOR

9 de 12

http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblad...

La notacin utilizada para describirlas es la siguiente:

()
XYZ
<

Denotan un elemento opcional


Los nombres de las directrices se dan en letras maysculas
Los nombres de los elementos se dan en letras minsculas y estn contenidas
dentro de los signos menor que y mayor que.

Todos los elementos fuera de estos smbolos debern de ser especificados tal como se indica.

BSZ ( BLOCK STORAGE OF ZEROS )


( < etiqueta ) BSZ < expresin ( < comentario )
La directriz BSZ ( y ZMB ) ocasionan que el ensamblador asigne un bloque de bytes y a cada byte se le
asigna el valor inicial de cero.

EQU ( EQUATE SYMBOL TO A VALUE )


< etiqueta EQU < expresin ( < comentario )
La directriz EQU asigna el valor (otro que no sea el valor del contador de programa) de la expresin en el
campo de operandos a la etiqueta. La etiqueta no puede ser redefinida en ninguna otra parte del programa. La
expresin no puede contener referencias posteriores o smbolos no definidos. Las igualdades (EQU) con
referencias posteriores son sealados como errores de fase ( Phasing Errors ).

FCB ( FORM CONSTANT BYTE )


( < etiqueta ) FCB < exp ( , < exp , . . . , < exp ) ( < comentario )
Esta directriz ocasiona que el valor del operando sea almacenado en un solo byte del programa objeto.

FCC ( FORM CONSTANT CHARACTER STRING )


( < etiqueta ) FCC < delimitador < cadena < delimitador ( < coment )
Esta directriz se utiliza para almacenar una cadena de caracteres ASCII en bytes consecutivos de memoria.

24/06/2015 5:26 p. m.

ENSAMBLADOR

10 de 12

http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblad...

FDB ( FORM DOUBLE BYTE CONSTANT )


Misma sintaxis que FCB
El valor del operando es almacenado en dos bytes consecutivos del programa objeto.

FILL ( FILL MEMORY )


( < etiqueta ) FILL < expresin , < expresin
Ocasiona que el ensamblador inicialice un rea de memoria con un valor constante. La primera expresin
indica el valor constante y la segunda es el nmero de bytes a ser inicializados.

OPT ( ASSEMBLER OUTPUT OPTIONS )


OPT < opcin ( , < opcin , . . . , < opcin ) ( < comentario )
La directriz OPT es utilizada para controlar el formato de la salida producida por el ensamblador. Las
opciones especificadas por medio de esta directriz tienen jerarqua sobre aquellas invocadas en la lnea de
comando del ensamblador. Todas las opciones debern introducirse en letras minsculas.

ORG ( SET PROGRAM COUNTER TO ORIGIN )


ORG < expresin ( < comentario )
Esta directriz cambia el valor del contador de programa al valor especificado por la expresin. Todos los
enunciados siguientes son ensamblados en localidades de memoria posteriores, empezando en el nuevo valor
del PC. Si esta directriz no aparece, el PC es inicializado a un valor de cero.

PAGE ( TOP OF PAGE )


PAGE
Ocasiona que el ensamblador avance el papel al principio de la siguiente hoja. Si el listado no se est
produciendo, esta directriz no tendr efecto.

24/06/2015 5:26 p. m.

ENSAMBLADOR

11 de 12

http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblad...

RMB ( RESERVE MEMORY BYTES )


( < etiqueta ) RMB < etiqueta ( < comentario )
Ocasiona que el valor del PC sea avanzado en la cantidad especificada por la expresin.

ZMB ( ZERO MEMORY BYTES )


Igual a BSZ.

APNDICE

FORMATO DEL LISTADO DEL ENSAMBLADOR


El listado del ensamblador tiene el siguiente formato:
LNEA# DIR BYTES CDIGO OBJETO [ # CICLOS ] LNEA ORIGEN
LNEA# es un nmero decimal de 4 dgitos impreso como una referencia para la tabla de aparicin de
smbolos.
DIR es el valor hexadecimal de la direccin del primer byte del cdigo objeto para esta direccin.
BYTES CDIGO OBJETO es el cdigo objeto resultante del ensamblado de la lnea origen dado en
hexadecimal.
#CCLOS solamente aparecer en el listado si la opcin c est habilitada. Aparece dentro de corchetes
para ayudar a distinguir este valor del resto de la lnea origen. La LNEA ORIGEN es reimpresa exactamente
igual que en el programa fuente, incluyendo las etiquetas.
La tabla de smbolos ser impresa cuando la opcin s sea habilitada. La tabla de smbolos tiene el
siguiente formato:

SMBOLO DIRECCIN
El SMBOLO es tomado directamente del campo de etiquetas del programa fuente u origen. DIRECCIN es
la direccin hexadecimal de la localidad a la cual se hace referencia con el smbolo.
La tabla de aparicin de smbolos ser impresa cuando la opcin cre sea seleccionada. La tabla de
aparicin de smbolos tiene el siguiente formato:

24/06/2015 5:26 p. m.

ENSAMBLADOR

12 de 12

http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblad...

SMBOLO DIRECCIN * LOC1 LOC2 LOC3 . . .


SMBOLO y DIRECCIN son lo mismo antes mencionado. La primera localidad en la lista est marcada
con un asterisco * para indicar la lnea donde el smbolo fue definido. Las LOCs subsecuentes son el
nmero decimal de lnea del listado del ensamblador donde aparecen las etiquetas.

24/06/2015 5:26 p. m.