lenguaje ensamblador

Upload: marlon-dario-hernandez

Post on 13-Jan-2016

6 views

Category:

Documents


0 download

DESCRIPTION

Lenguaje ensamblador

TRANSCRIPT

  • ENSAMBLADORMC. Juan Gilberto Mateos Surez

    1. INTRODUCCIN

    Los ensambladores son programas que procesan los enunciados del programa origen en lenguajeensamblador y los traducen en archivos en lenguaje mquina que son ejecutados por un microprocesador o unmicrocontrolador.Los ensambladores permiten que los programas origen se escriban y se editen en una computadora paragenerar un cdigo ejecutable en otra computadora. El archivo en lenguaje objeto ejecutable resultante secarga 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 ensambladores llamado lenguaje ensamblador.

    Este lenguaje es una coleccin de smbolos mnemnicos que representan: operaciones (mnemnicos deinstrucciones para la mquina o de directrices para el ensamblador), nombres simblicos, operadores ysmbolos especiales.

    El lenguaje ensamblador proporciona cdigos de operacin de los mnemnicos para todas las instruccionesde la mquina contenidas en la lista de instrucciones.

    Adems, el lenguaje ensamblador contiene mnemnicos directrices, los cuales especifican acciones auxiliaresque 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 oprocesador 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 atravs 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 laprimer pasada.

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

    1 de 12 24/06/2015 5:26 p. m.

  • 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 deoperacin 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 cdigomquina 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 elprocesamiento 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 decomentario, una operacin (ya sea el mnemnico de una instruccin o una directriz para el ensamblador), unoperando 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 etiquetaspuede adoptar cualquiera de las siguientes formas:

    Un asterisco ( * ) como el primer carcter en el campo de etiquetas indica que el resto del enunciado1.

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

    2 de 12 24/06/2015 5:26 p. m.

  • origen es un comentario. Los comentarios son ignorados por el ensamblador e impresos en el listadoorigen solamente como informacin de programacin.Un espacio de carcter en blanco (TAB o espacio) como primer carcter indica que el campo deetiquetas se encuentra vaco. La lnea no tiene una etiqueta y no es un comentario.

    2.

    Un smbolo como primer carcter indica que la lnea tiene etiqueta. Estos smbolos son las letrasmaysculas y minsculas ( a - z ), los dgitos ( 0 - 9 ) y caracteres especiales como punto ( . ), signo depesos ( $ ) y subrayado ( _ ). Estos smbolos consisten de uno a quince caracteres, el primero de loscuales debe ser alfabtico o un carcter especial punto o subrayado. Todos los caracteres sonsignificantes y las maysculas y minsculas son distintas.

    3.

    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 marcadacomo error.

    Con la excepcin de algunas directrices a la etiqueta se le asigna el valor del contador de programa ( PC ) delprimer 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 laetiqueta 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 valorde 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 unespacio en blanco.

    El campo de operaciones debe de contener el mnemnico de un cdigo de operacin legal o una directriz delensamblador.

    En este campo, los caracteres en maysculas son convertidos en minsculas antes de ser revisados como unmnemnico 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.

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

    3 de 12 24/06/2015 5:26 p. m.

  • 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 enblanco.

    De esta forma, " clra " significa " limpia (poner en ceros) el acumulador ( A ) ", pero " lr a " significa " limpiala 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 elproceso 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 poral menos un espacio en blanco.

    El campo de operandos puede contener un smbolo, una expresin o una combinacin de smbolos yexpresiones separados por comas.

    El campo de operandos de una instruccin mquina es utilizada para especificar el modo de direccionamientode 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 mCs de la familia M68HC11 se utilizan los siguientes formatos deoperandos:

    Formatos de Operandos Modo de Direccionamiento

    sin operando Acumulador e Inherente

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

    4 de 12 24/06/2015 5:26 p. m.

  • < expresin Directo, Extendido oRelativo

    # < 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 queel 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 arribamostrados 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 expresinespecifica un valor, el cual ser utilizado como operando.

    Las expresiones pueden consistir de smbolos, constantes o del caracter * (denotando el valor actual delcontador 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& andI or^ or exclusiva

    Las expresiones son evaluadas de izquierda a derecha y las expresiones con parntesis no estn previstas. Laaritmtica es realizada con precisin de enteros en complemento a dos con signo.

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

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

  • 2.3.4 Smbolos

    Cada smbolo se encuentra asociado con un valor entero de 16 bits, el cual es utilizado en lugar del smbolodurante la evaluacin de la expresin.

    El asterisco (*) utilizado en una expresin como smbolo representa el valor actual del contador delocalidades (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 delprograma.

    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 delensamblado 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 serequiere operando) por al menos un espacio en blanco.

    El campo de comentarios puede contener cualquier carcter imprimible ASCII.

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

    6 de 12 24/06/2015 5:26 p. m.

  • 3. SALIDA DEL ENSAMBLADOR

    La salida del ensamblador incluye un listado opcional del programa origen y un archivo objeto, el cual seencuentra en el formato de Archivo S de Motorola.

    El ensamblador normalmente suprime la impresin del listado origen, pero esta condicin y otras pueden seralteradas 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 elenunciado origen.

    Opcionalmente, el listado del ensamblado puede contener una tabla de smbolos y otra de la aparicin deestas en el programa.

    Estas tablas siempre son impresas al final del listado de ensamblado.

    FUNCIONAMIENTO DEL ENSAMBLADOR

    1. INTRODUCCINLos programas ensambladores de Motorola, del dominio pblico se nombran "as*.exe", donde * se refiere altipo 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 archivosorigen pueden tener extensiones en su nombre, pero el ensamblador no verifica si existe alguna extensin enparticular (sin embargo, no se utilice la extensin .s19, ya que sta es la extensin del archivo objetoproducido por el ensamblador. Al crearse dicho archivo objeto se perdera el archivo origen, ya que serasobre escrito en el disco).

    Las opciones son uno o ms de las siguientes:

    l Habilita el listado de salidano Deshabilita el listado de salida (default)cre Habilita la generacin de la tabla de referencias Habilita la generacin de la tabla de smbolos

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

    7 de 12 24/06/2015 5:26 p. m.

  • c Habilita el conteo de ciclosnoc Deshabilita el conteo de ciclos

    Utilice un espacio en blanco antes del signo menos (-) que precede a la opcin, esto con el objetivo de separarla opcin del ltimo nombre de archivo.

    Estas opciones tambin pueden ser indicadas al ensamblador mediante el uso de la directriz OPT en elarchivo origen.

    El archivo objeto creado es escrito en el disco y se le da el nombre " nombre archivo.s19 ", donde nombrearchivo 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 oimpresin, 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 archivonuevo o existente.

    3. MENSAJES DE ERROR

    Los mensajes de diagnstico de error son colocados en el archivo de listado justo antes de la lnea quecontenga el error. El formato de la lnea de error es:

    Lnea_nmero: Descripcin del error oLnea_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 unposible problema.

    Los mensajes de error estn diseados para ser explicados por s mismos.

    DIRECTRICES DEL ENSAMBLADOR

    1. INTRODUCCINLas directrices del ensamblador son instrucciones para el ensamblador mismo en vez de ser instrucciones aser traducidas directamente en el cdigo objeto.

    A continuacin se muestran las directrices reconocidas por los ensambladores como vlidas, se explican conms detalle las ms usuales.

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

    8 de 12 24/06/2015 5:26 p. m.

  • La notacin utilizada para describirlas es la siguiente:

    ( ) Denotan un elemento opcionalXYZ 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 leasigna 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 elcampo de operandos a la etiqueta. La etiqueta no puede ser redefinida en ninguna otra parte del programa. Laexpresin no puede contener referencias posteriores o smbolos no definidos. Las igualdades (EQU) conreferencias 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.

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

    9 de 12 24/06/2015 5:26 p. m.

  • FDB ( FORM DOUBLE BYTE CONSTANT )

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

    FILL ( FILL MEMORY )

    ( < etiqueta ) FILL < expresin , < expresinOcasiona que el ensamblador inicialice un rea de memoria con un valor constante. La primera expresinindica 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. Lasopciones especificadas por medio de esta directriz tienen jerarqua sobre aquellas invocadas en la lnea decomando 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 losenunciados siguientes son ensamblados en localidades de memoria posteriores, empezando en el nuevo valordel PC. Si esta directriz no aparece, el PC es inicializado a un valor de cero.

    PAGE ( TOP OF PAGE )

    PAGEOcasiona que el ensamblador avance el papel al principio de la siguiente hoja. Si el listado no se estproduciendo, esta directriz no tendr efecto.

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

    10 de 12 24/06/2015 5:26 p. m.

  • 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 A

    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 desmbolos.

    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 enhexadecimal.

    #CCLOS solamente aparecer en el listado si la opcin c est habilitada. Aparece dentro de corchetespara ayudar a distinguir este valor del resto de la lnea origen. La LNEA ORIGEN es reimpresa exactamenteigual 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 elsiguiente formato:

    SMBOLO DIRECCIN

    El SMBOLO es tomado directamente del campo de etiquetas del programa fuente u origen. DIRECCIN esla 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 deaparicin de smbolos tiene el siguiente formato:

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

    11 de 12 24/06/2015 5:26 p. m.

  • SMBOLO DIRECCIN * LOC1 LOC2 LOC3 . . .

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

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

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