INFORMACION Mapa Conceptual

download INFORMACION Mapa Conceptual

of 35

Transcript of INFORMACION Mapa Conceptual

Partes:1,21. Etiquetas (label)2. 3. Nombres4. Expresiones lgicas y aritmticas5. Directivas del ensamblador6. Problemas con las MacrosPara hacer la tarea del programador ms grata, se usan algunas convenciones. Cada uno puede adoptar las que ms le agraden y ayuden para ser ms productivo. En general, las convenciones son cualquieraccinque facilita la revisin y comprensin de unprograma, especialmente el que uno mismo ha escrito cuando tiene que revisarlo algunos meses despus.Comentamos algunas convenciones que usaremos: Los ficheros decdigofuente llevarn la extensin *.ASM Los ficheros de listado llevarn la extensin *.LST Los ficheros de cdigo objeto llevarn la extensin *.OB] Los ficheros de errores llevarn la extensin *.ERR Los ficheros ejecutables en formato Intel Hex llevarn la extensin *.HEX Comentario descriptivo del programa (utilizar una cabecera estandarizada). Definir el microcontrolador que se usar (con las directivas LIST e INCLUDE). Introducir las opciones de compilacin (que sern vistas ms adelante) (opcional). Establecer las constantes que se usarn (con la directiva EQU). Reservar espacios dememoria(directiva RES) (si es necesario). Configurar los puertos. Desarrollar el programa con comentarios, en lo posible explicando cada lnea de cdigo.. Los mnemnicos escritos en minscula y las constantes yvariablesen mayscula hacen que el cdigo escrito sea ms visible. Colocar las rutinas en el mismo sitio, todas contiguas. Dibujardiagramas de flujoo escribir seudocdigo.Suestructuraen un programa ejemplo muy simple:

Hemos visto la estructura general. Ahora veremos la posicin de los elementos del cdigo por 4 columnas:

Columna 1:Etiquetas.Las etiquetas se rigen por las siguientesnormas: Debe situarse en la primera columna. Debe contener nicamente caracteres alfanumricos. El mximo de caracteres es de 31. Columna 2:Operacin.En esta columna se situarn las instrucciones. El campo del cdigo de operacin es el nico que nunca puede estar vaco; ste siempre contiene una instruccin o una directiva delensamblador. Columna 3:OperandosEl campo de operandos o dedireccinpuede contener una direccin o un dato, o puede estar en blanco. Normanmente contendrregistroso literales con los que se operar (f, l o k , b y w). Columna 4:Comentario.El campo del comentario o de etiquetas es opcional. Aqu se situar cualquier comentario personalizado que deseemos. Estos son tiles para saber qu hace un programa sin tener que descifrar el cdigo entero. El compilador (ensamblador) ignorar todotextoms all delcarcterpunto y coma ";".Los comentarios generalmente se sitan en la cuarta columna para describir la accin de una lnea de cdigo, pero pueden situarse en cualquier parte de programa para describir cualquier otro evento, siempre que estn despus del carcter ";" (semicolon eningls).Normalmente las columnas son separadas por una tabulacin. El espacio mnimo entre dos columnas es de un carcter, que puede ser un espacio en vez de una tabulacin.Delimitadores (separacin entre campos) Los campos van separados slo con espacios y/o tabulaciones. No agregue nunca otros caracteres (comas, puntos, etc.) No utilice espacios extra, particularmente despus de comas que separan operandos.( Ej: movlw 5, w ) No use caracteres delimitadores (espacios y tabulaciones) en nombres o etiquetas.Etiquetas (label)as etiquetas se sitan a la izquierda de las instrucciones y sirven para agrupar fragmentos decdigo. Estos fragmentos pueden ser de dos tipos: El primer tipo no es un fragmento tal cual, si no que es un punto delprogramaal que podremos saltar de manera incondicional a travs de la instruccin adecuada. El segundo tipo es denominado subrutina. Este empieza con una etiqueta y acaba con la instruccin RETURN o RETLW, que veremos ms adelante.Deberemos tener en cuenta: La etiqueta es el primer campo en una lnea enlenguaje ensambladory puede no existir. Si una etiqueta est presente, elensambladorla define como el equivalente a ladireccindel primer byte correspondiente a esa instruccin. Esta etiqueta puede volver a usarse en otro lugar pero como operando de una instruccin. El ensamblador reemplazar sta etiqueta por elvalorde cuando fue creada. Se usan frecuentemente en las instrucciones de salto. No puede existir ms de una etiqueta en la primera columna o primer campo de instruccin. No pueden usarse como nombres de etiquetas a palabras ya reservadas por el ensamblador ( ORG, EQU, etc.) o nombres de instrucciones ( movlw, call, nop, etc.)Ejemplo:DATO EQU 05hINICIO movlw DATOgoto INICIOLa instruccingoto INICIOcausa que la direccin de la instruccin con la etiquetaINICIO (movlw)se cargue en elPC (Contador de Programa). Por lo tanto sta instruccin ser luego ejecutada.No se permite el uso de nmeros o caracteres no alfabticos como primera letra de la etiqueta. Como regla prctica: usar siempre letras, y en mayscula, al menos la primera.Ejemplos:TABLA2X2 Perrmitido+PESO NO permitido!=>SALIDA NO permitido!-SALTO NO permitido!5ALFA NO permitido!Dato1 PermitidoDato2 PermitidoLoop_A PermitidoOperandos y direccionesLos ensambladores permiten elegir conlibertadel tipo de elemento a colocar en el campo de operando o direccin.Sistemas de numeracinLos ensambladores aceptan nmeros Hexadecimales, octales, binarios o decimal. Esta es la forma de representarlos:Hexadecimal:0A00h$0A00Binario:%01001011B'00100101'01011010bOctal:@123123QDecimal:D'250'.250Ejemplo:movlw .100Significa: "mover el nmero literal 100 en decimal alregistrodetrabajoW"Ya hemos indicado que MPLAB es el entorno dedesarrollode Microchip e incluye el ensamblador MPASM, para obtenerinformacinsobre la convencin utilizada por este ver MPASM, el ensamblador de MicrochipNombresLos nombres pueden aparecer en el campo de operando; stos sontratadoscomo el dato que representan (Ver directiva EQU).Cdigos de caracteresAlgunos ensambladores permiten el uso de caracteres enASCII. Por ejemplo:data "hola 1,2,3" ;cadena de caracteresdata 'N' ;carctersencilloCHAR equ 't'movlw 'R'Expresiones lgicas y aritmticasLos ensambladores permiten conbinaciones dedatoscon operandos especiales, aritmticos o lgicos. stos operandos se llaman expresiones.Por ejemplo:REG1 EQU 05hVALOR EQU 20hmovlw VALOR+2addwf REG1,1addwf REG1+1,1En estos caso el compilador utilizar el resultado de sumar (VALOR+2) o (REG+1) como operando.Directivas del ensambladorLas instrucciones que podemos utilizar con un dispositivo son las que proporciona el fabricante para suproductoy que forman parte del llamado "repertorio de instrucciones". Pero al utilizar un programa ensamblador podemos introducir adems instrucciones o comando que proporciona el propio ensamblador. Estoscomandosgeneralmente se utilizan para simplificar la tarea de programar, y reciben el nombre de directivas.Por lo tanto las directivas no se traducen directamente a instrucciones dellenguajemquina sino que asignan al programa ciertas reas dememoria, definensmbolos, designan reas deRAMparaalmacenamientode datos temporales, colocan tablas o datos constantes en memoria y permiten referencias a otrosprogramas.Las directivas se utilizan como comandos escritos en el cdigo fuente para realizar uncontroldirecto o ahorrartiempoa la hora de ensamblar. El resultado de incorporar directivas se puede ver en el fichero *.LST, despus de ensamblar el programa.Para usar stas directivas o pseudo-operandos, el programador las coloca en el campo del cdigo de operacin, y, si lo requiere la directiva, una direccin o dato en el campo de direccin.Hay que aclarar que las instrucciones de los PIC's son nicas y que no hay nada mas, por ejemplo en el PIC16F84A son slo 35 (ver instrucciones del PIC16F84A). Esto debe tenerse claro porque cuando se comienza con el ensamblador pueden confundirse un poco las propias instrucciones de los PIC's con las directivas propias del ensamblador.A continuacin se exponen las ms relevantes.Directiva EQUEl nombre viene de la palabra "equal", (igual)". La directiva EQU permite al programador "igualar" nombres personalizados a datos o direcciones. Los nombres utilizados se refieren generalmente a direcciones de dispositivos, datos numricos, direcciones de comienzo, direcciones fijas, posiciones de bits, etc. Un nombre es ms descriptivo que una simple direccin y la tarea de programar se har mucho ms sencilla. Tambin podemos asignar un nombre a una instruccin que repitamos varias veces a lo largo de unalgoritmo, de manera que sea mucho ms sencilla laprogramacin. A estos nombre que asignamos mediante esta directiva se les denomina constantes, ya que el registro al que apuntan no variar durante el programaEjemplos:temp equ 12DATO EQU 22PORT_A EQU 5START EQU 0CARRY EQU 3TIEMPO EQU 5Bank_1 EQU BSF STATUS,RP0Estas lneas tambin pueden estn incluidas en unarchivoaparte al ASM (vase directiva INCLUDE).No siempre es necesario que con esta directiva se igualen posiciones de memoria a las etiquetas, ya que podemos poner nombres a datos. Podemos definir una equivalencia con el nombre de otra equivalencia ya definida y rtealizaroperacionesmatemticas. Por ejemplo, podemos calcular la frecuencia del ciclo mquina a partir de la frecuencia de reloj con la finalidad de emplearla para hacer otros clculos de la manera que se describe a continuacin:PORT_B EQU PORT_A+1PORT_C EQU PORT_A+2FIN EQU START+100FIN2 EQU START+200clockrate EQU .4000000 ;frecuencia del cristalfclk EQU clockrate/4 ;frecuencia del reloj internoEl valor del operando debe estar ya definido anteriormente, sino el compilador entregar un error.Adems de esto, podemos igualar a las etiquetas cualquier otro tipo devaloresque usemos, como, por ejemplo, el cero y el 1 en el bit de destino:W EQU 0F EQU 1Con esto ltimo, cuando usemos una instruccinen donde debamos especificar donde se almacenar el resultado, enwo en un registro, en lugar de escribir : 1: para que el resultado se almacene enf. 0: para que el resultado se almacene enw.Pondremos: F: para que el resultado se almacene enf. W: para que el resultado se almacene enw.Generalmente esto ltimo no ser necesario realizarlo, siempre que incluyamos el fichero "INC" correspondiente al PIC con el que estemos trabajando (vase directiva INCLUDE).Directiva ORGEsta directiva dice al ensamblador a partir de que posicin de memoria de programa se situarn las siguientes instrucciones. Rutinas de comienzo, subrutinas de interrupcin y otros programas deben comenzar en locaciones de memoria fijados por laestructuradel microcontrolador. Recordemos que el 16F84 slo tiene 1024 posiciones de memoriaflashpara cdigo.La directiva ORG hace al compilador colocar el cdigo que le sigue en una nueva direccin de memoria (la salida del compilador no solo coloca los cdigos de operacin sino tambin las direcciones de cada instruccin del programa). Usualmente se la utiliza para: reset, programas deserviciosde interrupcin, programa principal, subrutinas.Ejemplos:1) Inicia el programa en la posicin cero:ORG 0x002) Inicia el programa en la posicin 0000h y luego pasa a la 0005h para no utilizar la posicin del vector de interrupcin (0004 h)ORG 0x00 ; El programa comienza en la direccin 0 yGOTO inicio ; salta a la direccin 5 para sobrepasarORG 0x05 ; el vector de interrupcin, situado en la posicin 4Inicio xxx...3) Inicia el programa en la posicin 0000h y luego pasa a la 0005h para no utilizar la posicin del vector de interrupcin (0004 h). Si se produce una interrupcin se pasa a la posicininterr. Las subrutinas comienzan a partir de la direccin 0300h.ORG 00h ;vector de resetgoto inicializaORG 04h ;vector de interrupcingoto interrORG 05hinicializa movlw 08h ;aqu comienza el programa..ORG 300h ;subrutinasSubrutina1.returnSubrutina2.returnDirectiva #INCLUDEEsta directiva indica quearchivosdebern tomarse en cuenta a la hora de compilar el cdigo. Normalmente se usa para incluir el archivo de PIC que el ensamblador tiene entre sus archivos, con el cual el compilador ser capaz de reconocer todos losregistrosespeciales y sus bits. Su uso nos recordar al #include dellenguaje C. Esta lnea debe colocarse al principio, y tiene la siguiente sintaxis:#INCLUDE ; Lista de etiquetas de microchipEn ciertas ocasiones gran cantidad errores son debidos a que el nombre del archivo puesto entre comillas no se escribe correctamente.Si utilizamos MPLAB, un entorno de desarrollo que proporciona gratuitamente Microchip, dispondermos de los archivos con extension.INCpara cada uno de los PIC desarrollados hasta la aparicin de la versin deMPLABque utilicemos. En estos archivos se definen todos los registros as como otros elementos de acuerdo al microcontrolador que estemos utilizando.Tambin podemos crear nuestros propios archivos "INC" confunciones, definiciones y subrutinas que utilicemos a menudo en nuestro cdigo para evitar tener que copiarlas cada vez.El archivo P16F84A.INC que viene con MPLAB contiene definiciones de registros, bits y bits de configuracin. Los archivos INC pueden verse con cualquier editor detextopero no se recomienda modificarlos, para no perder compatibilidad con programas desarrollados por otros.Utilizar elINCdel PIC que estamos utilizando en nuestro programa no es obligatorio, y podemos omitirlo, pero acambiotendremos que definir los nombres de los registros que usemos o bien llamarlos por su posicin de memoria.Esto puede a la larga ser problemtico de manera que se recomienda utilizar los archivosINCcorrespondientes al PIC que utilicemos porque adems de facilitar la creacin del programa al no tener que recordar las direcciones reales de los registros tambin se facilita el paso de un programa diseado para un microcontrolador hacia otro distinto.Si utilizamos las posiciones de memoria con la direccin real, podemos hacer incompatibles las operaciones entre registros. Por ejemplo, CLRF 0x05, borra el registro ubicado en esa direccion, que no es ni mas ni menos que el PORTA (Puerto A) en el PIC16F84A. Pues bien, si queremos actualizarnos a otro microcontrolador pero resulta que en este el registro 0x05 tiene otrafuncinnos ser mucho mas dificil actualizar el programa. Ahora bien, si hubisemos utilizado CLRF PORTA, y el .INC correspondiente al nuevo microcontrolador ya se ocupar el ensamblador de realizar las correspondencias.Y por supuesto siempre ser mas fcil recordar PORTA que no 0x05.Tambin permite incluir otros programas. Por ejemplo:#INCLUDE "DISPLAY.ASM"Esto le dice al compilador que incluya el cdigo que se encuentra en el archivo DISPLAYY.ASM como si fuese parte del propio programa. Esto es muy util para reutilizar cdigos realizados con anterioridad.Directiva LISTEste comando sirve para que el compilador tenga en cuenta sobre quprocesadorse est trabajando. Este comando debe estar en todoproyecto, situado debajo del "include", con la siguiente sintaxis.LIST P=PIC16F84ADirectiva ENDAl igual que las dos anteriores, esta debe ir incluida una sola vez en todo el programa. Enconcreto, esta debe situarse al final, para indicar al ensamblador que el programa ha finalizado. Esta siempre debe estar presente, aunque el flujo de nuestro programa acabe en un bucle.Directiva #DEFINE#DEFINE es una directiva muy util. Define se usa para crear pequeasmacros. Con estas macros podremos poner nombres a pequeos fragmentos de cdigo que nos facilitarn la realizacin y comprensin del algoritmo.Por ejemplo, podremos poner nombres a bits.#define CERO STATUS,2As, en vez de tener que llamar al bit por un numero y un registro, podremos usar directamente la palabra CERO.#define CINCO 5Cada vez que se utilice la palabraCINCOser reemplazada en el momento de la compilacin por el nmero 5.Otro ejemplo muy prctico es el de poner nombre a un fragmento de cdigo usado frecuentemente. Este fragmento de cdigo, puede ser por ejemplo, el que conmuta entre los dosbancos.BSF OPTION,RP0BCF OPTION,RP0Como cambiamos varias veces debancoa lo largo de un algoritmo, puede resultar ms prctico ponerle un nombre.#define BANCO1 BSF OPTION,RP0#define BANCO0 BCF OPTION,RP0De este modo bastar con poner BANCO1 o BANCO0 para conmutar entre los dos bancos de memoria de manera que cada vez que se utilice la palabraBANCO1, en realidad se estar utilizando la instruccinBSF STATUS,RPOEn el siguiente ejemplo:#define salida PORTA,3No tendremos necesidad de recordar cual era la patilla de salida, sino que solo lo mencionaremos comosalida. Cada vez que aparezca la palabrasalidaen el cdigo, sta ser interpretada como PORTA,1 que es una instruccin vlida. Podemos ponerlo a cero con la instruccin.BCF salidaEn vez de tener que poner.BCF PORTA,3Una cosa a tener en cuenta es que con la directiva INCLUDE, podemos prescindir del carcter almohadilla (#), pero en el caso de la directiva DEFINE, no.Esta directiva es muy util porque hace el cdigo ms fcil de leer y entender.Directiva TITLEEsta directiva no sirve de mucho, pero ser til para aquellos que quieran que el compilador tenga en cuenta el ttulo que le ha puesto a su cdigo. Tiene la siguiente sintaxis:TITTLE "Nombre del cdigo"Este nombre aparecer en los archivos .lst (listados) que cree el compilador.Directivas IF...ELSE...ENDIFAlgunos ensambladores permiten incluir o excluir partes del programa dependiendo de condiciones que existan en el tiempo de compilacin.La forma tpica es:IF CONDICION.ELSE.ENDIFEjemplo:SINK EQU 1 ; (cambiar por 0 en caso necesario)IF SINK=1BCF PORTA,0ELSEBSF PORTA,0ENDIFEn este caso el valor deSINKhar que el compilador utilice distintas instrucciones de cdigo.Si la condicin es verdadera en el tiempo de compilacin, las instrucciones que estn entre IF y ELSE se incluirn en el programa. Si la condicin es falsa se incluirn en el programa las instrucciones entre ELSE y ENDIF.Los usos tpicos son: Para incluir o excluirvariablesextras Para incluir cdigo dediagnsticoen condiciones de testeo (DEBUG). Para permitir datos de distintos tamaos.Desgraciadamente, el ensamblado condicional, tiende a complicarla lecturadel programa, por lo tanto, slo debemos utilizarlo si es necesario.Directiva MACROEsta directiva resulta muy potente y a diferencia de la directiva #define se pueden crear macros ms extensas, lo que nos evitar tener que ejecutar reiteradamente fragmentos de cdigo idnticos. Cuando una macro es invocada, esta es copiada por el ensamblador en el lugar de la invocacin dentro del cdigo fuente. La macro se declara con la directiva MACRO, y termina con la directiva ENDM.Creacin de una macro denominadaactivar:activar macroCLRF PORTABSF PORTB,2endmHemos creado una macro llamadaactivarde manera que en nuestro cdigo cada vez que pongamos la palabraactivar, el ensamblador la reemplazar porCLRF PORTA...etc. hasta el final de la macro que termina con la directivaENDM(fin macro).Las macros permiten asignar un nombre a una secuencia de instrucciones de manera que son tiles cuando ocurren secuencias de instrucciones repetitivas. Luego se utiliza el nombre de la macro en el programa como si se usara la secuencia de instrucciones anterior.Las macros no son lo mismo que las subrutinas. El cdigo de las subrutinas aparece una sola vez en un programa y la ejecucin del programa salta a la subrutina. En cambio, el ensamblador reemplaza cada aparicin del nombre de la macro con la secuencia especificada de instrucciones. Por consiguiente la ejecucin del programa no salta a la macro como una subrutina.Ejemplo:Archivo "MULX10.ASM"MULX10 MACRO ;comienzo de la macroMOVF tiempo,W ;guarda el tiempo en WRLF tiempo ;multiplica por 2RLF tiempo ;multiplica por 2RLF tiempo ;multiplica por 2ADDWF tiempo ;le suma una vez msADDWF tiempo ;le suma una vez msENDM ;fin de la macro

Archivo "EJEMPLO1.ASM":#INCLUDE "MULX8.ASM"tiempo EQU 0Chresultado EQU 0DhMOVLW 20MOVWF tiempoMULX10MOVWF resultadoEND

Si ensamblamos "EJEMPLO1.ASM" notaremos que el listado final (EJEMPLO.LST) queda de la siguiente forma:tiempo EQU 0Chresultado EQU 0DhMOVLW 20MOVWF tiempoMOVF tiempo,W ;guarda el tiempo en WRLF tiempo ;multiplica por 2RLF tiempo ;multiplica por 2RLF tiempo ;multiplica por 2ADDWF tiempo ;le suma una vez msADDWF tiempo ;le suma una vez msMOVWF resultadoEND

Problemas con las MACROSCon las macros se puede trabajar rpidamente, pero pueden resultaer poco eficientes. Veamos un error muy comn al utilizar macros, en este caso se utiliza una macro denominada MOVFF:MULX10 MACRO ;comienzo de la macroMOVF AUX1,W ;Mueve contenido de un registro a otroMOVWF AUX2 ;a travs del acumuladorENDM ;fin de la macroPorcin de cdigo:MOVLW .1 ;TEMP=1MOVWF TEMPDECF TEMP,F ;Z se va a 1BTFSS STATUS,Z ;salta si o siMOVFF AUX1,AUX2 ;MacroMOVWF PORTA; ...En la lnea de la macro est el error porque los saltos (BTFSS) no pueden saltar macros. Las macros estn compuestas por ms de una instruccin, y el salto se producir dentro de la misma.El cdigo anterior con la macro incrustada sera:MOVLW .1 ;TEMP=1MOVWF TEMPDECF TEMP,F ;Z se va a 1BTFSS STATUS,Z ;salta si o siMOVF AUX1,W ;lneas de anterior macroMOVWF AUX2 ;MOVWF PORTA; ...Otro tema importante, que se ilustra en este ejemplo, es que las macros pueden modificar registros (en este caso W) de forma que el programador podra no tener en cuenta.En el ejemplo anterior, PORTA se debera cargar con 1, que aparentemente era el valor de W, pero la macro lo ha modificado, lo que resulta en otro error.Ejemplos de macros; ************************************************************; macros.asm ;; "MACROS para 16F84" ;; ************************************************************callz macro subbrutinabtfsc STATUS,Zcall subrutinaendmcallnz macro subrutinabtfss STATUS,Zcall subrutinaendmmovff macro f2,f1 ;(atencin, se destruye W)movf f1,wmovwf f2endmmovlf macro file,literal ;(atencin, se destruye W)movlw literalmovwf fileendm;Atencin, para usar estas macros ya debe estar activo el banco 1CONF_PORTA macro datomovlw datomovwf TRISAendmCONF_PORTB macro datomovlw datomovwf TRISBendm;configurar Option Register:CONF_OPTION macro datomovlw datomovwf OPTION_REGendm;configurar el registro de interrupciones:CONF_INTCON macro datomovlw datomovwf INTCONendmSET_BANK_0 macroBCF STATUS,RP0endmSET_BANK_1 macroBSF STATUS,RP0endm;enable y disable all the mascarable interrupts (16F84):EI macrobsf INTCON,GIEendmDI macrobcf INTCON,GIEendm#define iEnable EI#define iDisable DI;arrancar el timer:RESET_TIMER macrobcf INTCON,T0IFendm; inicializar timer antes de hacer RESET_TIMER para que arranque.INIT_TIMER macro datomovlw datomovwf TMR0endmjmp macro saltogoto saltoendmret macroreturnendm;Complemento a 1 de W:comw macroxorlw 0xffendm;Instrucciones de salto tipo Z80jz macro _salto ;salta si zerobtfsc STATUS,Zgoto _saltoendmjnz macro _salto ;salta si no zerobtfss STATUS,Zgoto _saltoendmjc macro _salto ;salta si carrybtfsc STATUS,Cgoto _saltoendmjnc macro _salto ;salta si no carrybtfss STATUS,Cgoto _saltoendm; ************************************************************; FIN; ************************************************************Ante cualquier duda consulta dirigirse a la pgina del colegio donde dicto el curso gratis deMicrocontroladoresPIC: www.emfp5donbosco.com.arhttp://www.monografias.com/trabajos76/estructura-programa-ensamblador/estructura-programa-ensamblador2.shtml

Estructura de un programa en lenguaje ensamblador.Publicado porS3l3n1ty/domingo, noviembre 29, 2009/

Pues llegados a este punto debemos prestar mucha atencin pues aqu ya vamos llegando a la parte prctica, ya que las lecciones anteriores son importantes para conocer el funcionamiento de Assembler y para saber como se comunica con las mquinas,pero los conceptos que se detallan a continuacin son imprescindibles para aprender a manejar los programas que se usan en la ingeniera inversa y aprender a desensamblar los programas, para ello deberemos asimilar bien los siguientes puntos y las funciones principales de Assembler. No os preocupeis, porque al final del curso har un resumen con lo ms importante para que nadie se me despiste.

Palabras reservadas

Ciertas palabras en lenguaje ensamblador estn reservadas para sus propsitos propios, y son usadas solo bajo condiciones especiales. Por categoras, las palabras reservadas incluyen:

Instrucciones, como MOV y ADD, que son operaciones que la computadora puede ejecutar. Directivas como END o SEGMENT, que se emplean para proporcionar comandos al ensamblador. Operadores, como FAR y SIZE, que se utilizan en expresiones. Smbolos predefinidos, como @Data y @Model, que regresan informacin a su programa. El uso de una palabra reservada para un propsito equivocado provoca que el ensamblador genere un mensaje de error.Ver palabras reservadas.

IdentificadoresUn identificador es un nombre que se aplica a elementos en el programa. Los dos tipos de identificadores son: nombre, que se refiere a la direccin de un elemento de dato. y etiqueta, que se refiere a la direccin de una instruccin. Las mismas reglas se aplican tanto para los nombres como para las etiquetas. Un identificador puede usar los siguientes caracteres:

1.- Letras del alfabeto: Desde la A hasta la Z2.- Dgitos: Desde el 0 al 9 (no puede ser el primer carcter)3.- Caracteres especiales Signo de interrogacin ( ? )Subrayado ( _ )Signo de pesos ( $ )Arroba ( @ )Punto ( . ) (no puede ser el primer carcter)

El primer carcter de un identificador debe ser una letra o un carcter especial, excepto el punto. Ya que el ensamblador utiliza algunos smbolos especiales en palabras que inician con el smbolo @, debe evitar usarlo en sus definiciones.El ensamblador trata las letras maysculas y minsculas como iguales. La longitud mxima de un identificador es de 31 caracteres (247 desde el MASM 6.0). Ejemplos de nombres validos son COUNT, PAGE25 y $E10. Se recomienda que los nombres sean descriptivos y con significado. Los nombres de registros, como AX, DI y AL, estn reservados para hacer referencia a esos mismos registros. En consecuencia, en una instruccin tal como:ADD AX, BXel ensamblador sabe de forma automtica que AX y BX se refieren a los registros. Sin embargo, en una instruccin como:MOV REGSAVE, AX

El ensamblador puede reconocer el nombre REGSAVE solo si se define en algn lugar del programa.

Instrucciones

Un programa en lenguaje ensamblador consiste en un conjunto de enunciados. Los dos tipos de enunciados son:1. Instrucciones, tal como MOV y ADD, que el ensamblador traduce a cdigo objeto.2. Directivas, que indican al ensamblador que realiza una accin especifica, como definir un elemento de dato.A continuacin esta el formato general de un enunciado, en donde los corchetes indican una entrada opcional:

[identificador] operacin [operando(s)] [;comentarios]

Un identificador (si existe), una operacin y un operando (si existe) estn separados por al menos un espacio en blanco o un carcter tabulador. Existe un mximo de 132 caracteres en una lnea (512 desde el MASM 6.0), aunque la mayora de los programadores prefiere permanecer en los 80 caracteres ya que es el numero mximo que cabe en la pantalla. A continuacin se presentan dos ejemplos de enunciados:

IDENTIFICADOR OPERACION OPERANDO COMENTARIODirectiva: COUNT DB 1 ;Nom, Op, OperandoInstruccin: MOV AX, 0 ;Operacin, 2 Operand

Identificador, operacin y operando pueden empezar en cualquier columna. Sin embargo, si de manera consistente se inicia en la misma columna para estas tres entradas se hace un programa mas legible.

IdentificadorComo ya se explico, el termino nombre se aplica al nombre de un elemento o directiva definida, mientras que el termino etiqueta se aplica al nombre de una instruccin.

OperacinLa operacin, que debe ser codificada, es con mayor frecuencia usada para la definicin de reas de datos y codificacin de instrucciones. Para un elemento de datos, una operacin como DB o DW define un campo, rea de trabajo o constante.

OperandoEl operando (si existe) proporciona informacin para la operacin que acta sobre el. Para un elemento de datos, el operando identifica su valor inicial. Por ejemplo, en la definicin siguiente de un elemento de datos llamado COUNTER, la operacin DB significa "definir byte", y el operando inicializa su contenido con un valor cero:

Para una instruccin, un operando indica en donde realizar la accin. Un operando de una instruccin puede tener una, dos o tal vez ninguna entrada. Aqu estn tres ejemplos:

Directivas para listar page y title La directiva PAGE y TITLE ayudan a controlar el formato de un listado de un programa en ensamblador. Este es su nico fin, y no tienen efecto sobre la ejecucin subsecuente del programa.PAGE. Al inicio de un programa, la directiva PAGE designa el numero mximo de lneas para listar en una pagina y el numero mximo de caracteres en una lnea. Su formato general es:

PAGE [longitud][, ancho]

El ejemplo siguiente proporciona 60 lneas por pagina y 132 caracteres por lnea:

PAGE 60, 132

El numero de lneas por pagina puede variar desde 10 hasta 255, mientras que el numero de caracteres por lnea desde 60 hasta 132. La omisin de PAGE causa que el ensamblador tome PAGE 50, 80.

Title. Se puede emplear la directiva TITLE para hacer que un titulo para un programa se imprima en la lnea 2 de cada pagina en el listado del programa. Puede codificar TITLE de una vez, al inicio del programa. Su formato general es:

TITLE Texto.

Para el operando texto, una tcnica recomendada es utilizar el nombre del programa como se registra en el disco. Por ejemplo:

TITLE Prog1 Mi primer programa en ensamblador

Directiva segment Un programa ensamblado en formato .EXE consiste en uno o mas segmentos. Un segmento de pila define el almacn de la pila, un segmento de datos define los elementos de datos y un segmento de cdigo proporciona un cdigo ejecutable. Las directivas para definir un segmento, SEGMENT y ENDS tienen el formato siguiente:

El enunciado SEGMENT define el inicio de un segmento. El nombre del segmento debe estar presente, ser nico y cumplir las convenciones para nombres del lenguaje. EL enunciado ENDS indica el final del segmento y contiene el mismo nombre del enunciado SEGMENT. El tamao mximo de un segmento es de 64K. El operando de un enunciado SEGMENT puede tener tres tipos de opciones: alineacin, combinar y clase, codificadas en este formato:

nombre SEGMENT alineacin combinar ' clase '

Tipo alineacin La entrada alineacin indica el limite en el que inicia el segmento. Para el requerimiento tpico, PARA, alinea el segmento con el limite de un prrafo, de manera que la direccin inicial es divisible entre 16, o 10H. En ausencia de un operando hace que el ensamblador por omisin tome PARA.

Tipo combinar. La entrada combinar indica si se combina el segmento con otros segmentos cuando son enlazados despus de ensamblar. Los tipos de combinar son STACK, COMMON, PUBLIC y la expresin AT. Por ejemplo, el segmento de la pila por lo comn es definido como:

nombre SEGMENT PARA STACK

Puede utilizar PUBLIC y COMMON en donde tenga el propsito de combinar de forma separada programas ensamblados cuando los enlaza. En otros casos, donde un programa no es combinado con otros, puede omitir la opcin o codificar NONE.

Tipo clase La entrada clase, encerrada entre apstrofos, es utilizada para agrupar segmentos cuando se enlazan. Se utiliza la clase 'code' para el segmento de cdigos, 'data' por segmento de datos y 'stack' para el segmento de la pila. El ejemplo siguiente define un segmento de pila con tipos alineacin, combinar y clase:

nombre SEGMENT PARA STACK 'Stack'

Directiva assume Un programa utiliza el registro SS para direccionar la pila, al registro DS para direccionar el segmento de datos y el registro CS para direccionar el segmento de cdigo. Para este fin, usted tiene que indicar al ensamblador el propsito de cada segmento en el programa. La directiva para este propsito es ASSEME, codificada en el segmento de cdigo como sigue:

OPERACION OPERANDOASSUME SS:nompila, DS:nomsegdatos, CS: nomsegcodigo,. . .

Los operandos pueden aparecer en cualquier orden. Al igual que otras directivas, ASSUME es solo un mensaje que ayuda al ensamblador a convertir cdigo simblico a cdigo maquina; aun puede tener que codificar instrucciones que fsicamente cargan direcciones en registros de segmentos en el momento de la ejecucin.

1 PAGE 60,1322 TITLE P04ASM1 ESTRUCTURA DE UN PROGRAMA .EXE3;-------------------------------------------------------------------------------4 STACKSG SEGMENT PARA STACK 'Stack'5 ...6 STACKSG ENDS7;-------------------------------------------------------------------------------8 DATASG SEGMENT PARA 'Data'9 ...10 DATASG ENDS11;-------------------------------------------------------------------------------12 CODESG SEGMENT PARA 'Code'13 BEGIN PROC FAR14 ASSUME SS:STACKSG, DS:DATASG,CS:CODESG15 MOV AX, DATASG ;Obtiene la direccin del segmento de datos16 MOV DS, AX ;Almacena direccin en DS17 ...18 MOV AX, 4C00H ;Peticion19 INT 21H ;Salida al DOS20 BEGIN ENDP21 CODESG ENDS22 END BEGIN

Directivas simplificadas de segmentos

Los ensambladores de Microsoft y de Borland proporcionan algunas formas abreviadas para definir segmentos. Para usar estas abreviaturas, inicialice el modelo de memoria antes de definir algn segmento. El formato general (incluyendo el punto inicial) es:

.MODEL modelo de memoriaEl modelo de memoria puede ser TINY, SMALL, MEDIUM, COMPACT o LARGE. Los requisitos para cada modelo son:

Puede utilizar cualquiera de estos modelos para un programa autnomo (esto es, un programa que no este enlazado con algn otro). El modelo TINY esta destinado para uso exclusivo de programas .COM, los cuales tienen sus datos, cdigo y pila en un segmento. El modelo SMALL exige que el cdigo quepa en un segmento de 64K y los datos en otro segmento de 64K. La directiva .MODELL genera automticamente el enunciado ASSUME necesario.Los formatos generales (incluyendo el punto inicial) para las directivas que define los segmentos de la pila, de datos y de cdigo son:

.STACK [tamao].DATA.CODE [nombre]

Cada una de estas directivas hace que el ensamblador genere el enunciado SEGMENT necesario y su correspondiente ENDS. Los nombres por omisin de los segmentos (que usted no tiene que definir) son STACK, DATA y TEXT (para el segmento de cdigo).La figura 4.3 proporciona un ejemplo haciendo uso de las directivas simplificadas de segmento.

page 60,132TITLE P04ASM2 (EXE) Operaciones de mover y sumar;-------------------------------------------------------------------------.MODEL SMALL.STACK 64 ;Se define la pila.DATA ;Se definen los datosFLDA DW 250FLDB DW 125FLDC DW ?;-------------------------------------------------------------------------.CODE ;Se define el segmento de cdigoBEGIN PROC FARMOV AX, @data ;Se asigna la direccin de DATASG (Prog. anterior)MOV AX, FLDA ;Mover 0250 a AXADD AX, FLDB ;Sumar 0125 a AXMOV FLDC, AX ;Almacenar suma en FLDCMOV AX, 4C00H ;Salida a DOSINT 21HBEGIN ENDP ;Fin de procedimientoEND BEGIN ;Fin de programa

MnemnicoUnmnemnicoonemnicoes algo que pertenece o tiene que ver con la memoria1. Suele aplicar a todos los campos de la escritura.ndice[ocultar] 1Utilidad en informtica 1.1Pseudocdigos 1.2Trabajo sobre cdigo mquina 1.3Ejemplos 2Vase tambin 3Referencias 4Enlaces externosUtilidad en informtica[editar]Eninformtica, unmnemnicoes una palabra que sustituye a uncdigo de operacin(lenguaje de mquina), con lo cual resulta ms fcil la programacin, es de aqu de donde se aplica el concepto delenguaje ensamblador.Un ejemplo comn de mnemnico es la instruccinMOV, que le indica almicroprocesadorque debe asignar datos de un lugar a otro. El microprocesador no entiende palabras, sino nmeros binarios, por lo que es necesaria la traduccin del trmino mnemnico acdigo objeto.En muchas ocasiones se puede tomar a nivel de usuario como las teclas de acceso rpido que vemos en las ventanas, por ejemplo en un navegador encontramos el men tpico que dice Archivo, Editar, Ver, entre otras opciones, el mnemnico sera el valor de la letra que esta subrayada, as si presionamos la tecla alt y luego por ejemplo la A, se nos abrir el men de archivo, es por esta razn que se puede decir que la A en el men resulta la tecla mnemnica de Archivo, o la tecla de acceso rpido a la opcin Archivo.El lenguaje Mnemnico tambin es utilizado en la programacin de numerosos Tipos de Procesadores lgicos programables (PLC), haciendo ms rpida e eficiente la construccin de programas de alta complejidad.Pseudocdigos[editar]Eningeniera de software, los nemnicos pueden ser utilizados para la creacin depseudocdigos, ya que son fciles de recordar y para pasarlos a un cdigo simblico interpretable por un compilador, a una numeracin o a cdigo mquina, requerir la utilizacin de un simplealgoritmo.Trabajo sobre cdigo mquina[editar]Se pueden escribir algoritmos que conviertan elcdigo mquinaen una numeracin, tal como lo es uneditor hexadecimaly esa numeracin puede ser asistida por una lista de nemnicos que facilite el trabajo a los programadores sobre dicha numeracin.Ejemplos[editar]Representacin de nemnicos delenguaje mquinapara procesadoresi386:Cdigo binarioCdigo hexadecimalCdigoASCIINemnicoAccin

50PADDSuma al acumulador

00101101B1SUBResta al acumulador

010000xx40@INCIncrementa al registro

010010xx12DECDecrementa al registro

0011001032JxxSalto al registro o xx

Vase tambin[editar]http://es.wikipedia.org/wiki/Mnem%C3%B3nicoENSAMBLADORMC. Juan GilbertoMateosSurez

1. INTRODUCCINLos 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 ENSAMBLADOREl 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 ENSAMBLADOEste 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.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. INTRODUCCINLos 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 ORIGENCada 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 EtiquetasEl 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 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 saltaUna 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 OperacionesEl 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.

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 OperandosLa 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 M68HC11Para la familia de dispositivos mCs de la familia M68HC11 se utilizan los siguientes formatos de operandos:Formatos de OperandosModo de Direccionamiento

sin operandoAcumulador e Inherente

< expresinDirecto, Extendido o Relativo

# < expresinInmediato

< expresin , XIndexado con el registro X

< expresin , YIndexado con el registro Y

< expresin < expresinSet o Clear Bit

< expresin < expresin < expresinPrueba 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 ExpresionesUna 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& andI or^ or exclusivaLas 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.

2.3.4 SmbolosCada 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 ConstantesLas 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 ASCIILas 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 ComentariosEl 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.

3. SALIDA DEL ENSAMBLADORLa 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. INTRODUCCINLos 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 ENSAMBLADORPara 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 salidano Deshabilita el listado de salida (default)cre Habilita la generacin de la tabla de referencias Habilita la generacin de la tabla de smbolosc Habilita el conteo de ciclosnoc Deshabilita el conteo de ciclosUtilice 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 ERRORLos 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 oLnea_nmero: Peligro - - - Descripcin del errorLos 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. INTRODUCCINLas 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.La notacin utilizada para describirlas es la siguiente:( ) Denotan un elemento opcionalXYZ Los nombres de las directrices se dan en letras maysculas