Sunteți pe pagina 1din 36

CAPITULO 6

ENSAMBLADOR

LENGUAJE MAQUINA
Los microcontroladores entienden un nico formato basado en ceros y unos es decir el sistema binario (lenguaje maquina). La codificacin binaria es difcil es por eso que se utiliza el sistema hexadecimal para facilitar la interpretacin de los cdigos y no saturar las pantallas.

LENGUAJE ENSAMBLADOR
El lenguaje maquina es difcil de entender por el hombre por eso se utiliza el lenguaje ensamblador , expresa instrucciones de una forma ms natural y es ms cercano al microcontrolador, porque cada una de las instrucciones corresponde a una en lenguaje maquina y el micro controlador es capaz de interpretar.

El lenguaje ensamblador utiliza nemnicos. Los nemnicos corresponden a las inciales del nombre de la instruccin en ingles.

PROGRAMA ENSAMBLADOR
El programa ensamblador es un software que se encarga de convertir los nemnicos introducidos por el usuario a lenguaje maquina. El lenguaje escrito en ensamblador son denominados cdigo fuente, archiv fuente o fichero fuente y suelen tener la extensin *.asm.

FICHEROS RESULTANTES DEL ENSAMBLADO


Tras el ensamblado del fichero *.asm se producen varios ficheros .Los ms importantes son:

Fichero ejecutable o hexadecimal. Ficheros de errores.

Fichero listable.

EL CODIGO FUENTE
El cdigo fuente est compuesto por una sucesin de lneas de programa. Cada lnea suele estar compuesta por 4 campos o columnas separadas por espacios. Estos campos son: Campo de etiqueta. Campo del cdigo de operacin. Campo de operandos y datos. Campo de comentarios.

ETIQUETAS
La primera columna es el campo de etiquetas. Son expresiones alfanumricas escogidas por el usuario su principal objetivo es identificar a una determinada instruccin del programa, asignado a esa etiqueta el determinado valor de la direccin de memoria correspondiente a dicha instruccin .As se facilitamos la identificacin de las direcciones. Es obligatoria que las etiquetas cumplan con las siguientes normas:
Deben empezar por letras. No se pueden insertar espacios o tabulaciones

antes de la etiqueta.

No se pueden insertar expresiones reservadas para

la utilizacin del ensamblador tales como:

Instrucciones. Nombres de registros especiales. Nombre de cada uno de los bit de registros especiales. Directivas del propio ensamblador.

CODIGO DE OPERACION
La segunda columna es de campo de cdigo de operacin, que especifica la tarea a realizar por el microcontrolador. Es una instruccin del microcontrolador que es directamente traducida a cdigo maquina por el ensamblador, por ejemplo:

OPERANDOS
La tercera columna es el campo de operandos o datos. Contiene los operandos para el campo de instrucciones. Este campo puede contener uno o mas operandos separados por comas (pueden ser nmeros o etiquetas). Es importante que los operandos que se designen a los registros SFR, respeten la ortografa que establece el fichero P16F84A.INC que proporciona el fabricante MICROCHIP.

COMENTARIOS
La ultima columna es el campo de comentarios de los programas. Elementos indispensables que ayudan al programador a documentar su programa, y aclarar el sentido de las instrucciones.

Los comentarios pueden extenderse en varias lneas y todas ellas deben comenzar con punto y coma (;).
El objetivo de la programacin es proporcionar la documentacin necesaria, con ello se consigue que los programas fuentes sean mas claros aun pueden aumentar su extensin.

NORMAS DE ESTILO PARA ESCRIBIR UN ARCHIVO FUENTE


Los ensambladores permiten que cada lnea pueda estar escrita en formato libre. Sin embargo al escribir un archivo fuente hay ciertas normas que deben seguirse : Respetar la designacin de los registros. Respetar las columnas Numerar todas la filas Espacios en blanco no son significativos en ningn campo. Los nemnicos de las instrucciones se escriben en maysculas. El nombre de la etiqueta debe aclarar en lo posible el funcionamiento del programa.

CONSTANTES NUMERICAS Y ALFANUMERICAS


El ensamblador MPASM soporta sistemas de numeracin decimal, hexadecimal, octal, binario y el cdigo alfanumrico ASCII.

Las constantes hexadecimales que comiencen con una letra (A-F) deben ir precedidas por un cero para que no sean confundidas con una etiqueta. Las constantes pueden ser o no precedidas por un signo + o - (valores positivos o valores negativos), si no llevan ningn signo automticamente se toma como un valor positivo. Cuando los operandos son caracteres ASCII deben de estar encerrados en comillas simples.

OPERADORES ARITMETICOS
En los operandos de las instrucciones pueden aparecer expresiones matemticas.

EL REPERTORIO DE LAS INSTRUCCIONES


E l repertorio del PIC16F84 esta compuesto por 35 instrucciones que pueden ser agrupadas para su estudio en los siguientes grupos:
Instrucciones de carga. Instrucciones aritmticas. Instrucciones lgicas. Instrucciones de bit. instrucciones d e salto. Instrucciones para manejo de subrutinas.

Instrucciones especiales.

CARACTERISTICAS DEL REPERTORIO


La mayora de las instrucciones se ejecutan en 4

ciclos de reloj, a excepcin de las de salto que requieren 8 ciclos.


Las instrucciones son ortogonales. Todas las instrucciones tienen la misma longitud, 14

bits y todos los datos son de 8 bits.

INSTRUCCIONES DE CARGA
Las instrucciones de transferencias de datos son tpicas de todos los procesadores y su misin es transferir el contenido de un registro fuente (f) a un registro destina (d) o bien cargar el destino con una constante.

CLRF F
(clear f). el contenido del registro f se borra(se carga con b00000000), y el flag Z se activa a 1. Esta instruccin tambin se considera como aritmtica. Ejemplo: clrf FlagReg ;0= (FlagReg)

Instruccin antes: FlagReg=? Y Z0=?

Instruccin despus: FlagReg = 0x00 y Z=1

MOVLW K
(move literal to W).El registro W se carga con el valor de los 8 bits de la constante K y ningn flag es afectado. Ejemplo: movlw 0x5A Instruccin antes: (W)=? Instruccin despus(W)= 0x5A ;5Ah=(W)

MOVF F,D
(move f). el contenido del registro f se carga en el registro destino dependiendo el valor de d. si d=0, el destino es igual a W. si el valor de d es=1,el destino es el propio registro f. El flag Z queda afectado, Z se activa a 1 si el resultado de la operacin es 0. Ejemplo: movf PORTA,0 ;(W)=PORTAB y (W)=? Y Instruccin antes: (PORTAB)=0x1A Z=?

Instruccin despus: (PORTAB)=0x1A y (W)=0x1A Y Z= 0

INSTRUCCIONES DE BIT
Estas instrucciones ponen a nivel lgico 0 o 1 un determinado bit de un registro de la memoria de datos. bcf f,b (bit cler f). pone a 0 el bit b del registro f. Ejemplo: bcf FlgReg,7 ;0=( FlgReg,7 ) Instruccin antes: (FlgReg,7) =b01000111 Instruccin despus: (FlgReg,7) b11000111

INSTRUCCIONES GOTO K
En casi todos los programas se usa la instruccin de salto incondicional, goto k, que produce un salto dentro del programa iniciado por K. K es la literal constante, es la direccin del destino del salto, es decir, la nueva direccin de memoria del programa en la cual se comenzara a trabajar en las instrucciones despues de ejecutar goto. Ejemplo: goto bucle ;goto=(PC) Instruccin antes :PC =? Instruccin despus: PC= direccin apuntada por la etiqueta bucle. Se utiliza el smbolo $ para indicar que el salto se efectu en la misma posicin de programa donde se encuentra situado en ese momento. goto $

CONFIGURAR LAS LINEAS DE LOS PUERTOS


Al conectar por primera vez el PICF84 el bit RP0 del registro STATUS se carga automticamente con 0, con lo que se permite el acceso a las posiciones del Banco de la memoria de datos.
Para configurar la lneas de los puertos hay que acceder a los registros TRISA y TRISB que se hallan en el banco l y carga en ellos los valores adecuados. Por ello previamente hay q acceder al banco 1 a poniendo a 1 el bit RP0 del registro STATUS. Una vez configurado los puertos, habr que volver a poner 0 el bit RP0 del registro STATUS para poder leer la informacin introducida por las lneas que funcionan como entradas o para poder enviar al exterior los bits colocados sobre las lneas de salida. Cuyos valores se hallan en las posiciones 5 y 6 del banco 0, que son las direcciones del puerto A y puerto B respectivamente.

ZONA DE DATOS *******************************************************


_CONFIG _CP_OFF& _ WDT_OFF&_PWRTE_ON&_XT_OSC;

configuracin para el grabador ZONA DE DATOS************************************************** ORG 0 memoria de programa Inicio dsf Clrf como salidas. TRISB ; el programa comienza el direccin 0 de ; acceso al banco 1 ;las lneas del banco B se configura

STATUS,RP0

movlw b`0001111` movlwf TRISA como entradas. Bcf STATUS,RP0 ; las 5 lineas del puerto A se configura ; Acceso el banco 0.

Principal movf PORTA,W puerto A en W. movwf PORTB puerto B. goto Principal ; carga el registro de datos del ; el contenido de W se deposita en el ;se crea un blucle cerrado e infinito.

END

;fin del programa.

Los registros TRISA y TRISB ocupan las posiciones 5 y 6 del banco 1. Los puertos PORTA y PORTB ocupan las posiciones 5 y 6 del banco 0, por tanto, programa anterior se puede modificar como sigue:

**************************Ensam_03.asm************** ;(principio como el anterior) Inicio bsf STATUS,RP0 ; acceso el banco 1.

Clrf PORTB configuran como salidas.


Movlw b`000011111` Movwf PORTA configura como entradas. Bcf ATATUS,RP0

; las lneas del puerto B se

;las 5 lineas del puerto A se ;acceso al banco 0.

(Continua igual al anterior)

En le momento de la definicin del puerto como salida, el contenido de sus latches internos pasan al exterior, en caso de que sea importante que este sea cero el programa debe aadir una instruccin clrf PORTB al principio.

***********************Ensam_03.asm***************** Inicio Clrf PORTB nivel bajo cuando Bsf Clrf como salida. ; inializa el puerto para que la lnea vaya a ; esta se configure como salida SATUS,RP0 TRISB ; acceso al banco 1. ; lnea del puerto B se configura

Movlw b`00011111` Movwf TRISA configura como entradas. Bcf STATUS,RP0 ; las 5 lineas del puerto A se ;acceso al banco 0.

DIRECTIVAS
Para poder ensamblar un programa automticamente el ensamblador necesita informacin en forma de directivas, que son comandos insertados en el programa que controla el proceso de ensamblador. No son parte del repertorio de instrucciones del microprocesador, por lo tanto, n o tienen traduccin al cdigo maquina del micro controlador, por lo que tambin se les llaman pseudoistruciones. MPASM es el programa ensamblador del PIC16F84 mas utilizado, tiene mas de 50 derectivas que se explican en su men help y en la gua,MPASMUSER`S GUIDE que se puede obtener gratuitamente en la pgina www.microchip.com

END
(end program blok). Indica el fin del programa. Es la nica directiva abligatoria. A ensamblar un programa, el programa ensamblador debe saber donde tiene que detener el proceso. EQU Su sintaxis es : <label> EQU <expr> Es una directiva de asignacin. El valor de <expr> es asignado a la etiqueta <label>

ORG
Su sintaxis es [<label>] ORG <expr> Esta directiva indca al programa ensamblador la direccin en memoria de programa a partir de lo cual deben ensamblanrse las instrucciones del cdigo fuente. LIST P=16F84A Indica el tipo de procesador utilizado.

EQU
EQU Su sintaxis es : <label> EQU <expr> Es una directiva de asignacin. El valor de <expr> es asignado a la etiqueta <label> ORG Su sintaxis es

[<label>] ORG <expr>


Esta directiva indca al programa ensamblador la direccin en memoria de programa a partir de lo cual deben ensamblanrse las instrucciones del cdigo fuente.

_ _ CONFIG
En el programa Ensam_03.asm aparece como: CONFIG _CP_OFF& _ WDT_OFF&_PWRTE_ON&_XT_OSC Esta directiva indica la configuracin elegida para el proceso de grabacin del micro controlador en esta caso : No hay proteccin del cdigo (_CP_OFF). No se habilita el Watchdog (_WDT_OFF). Se habilita el reset mediante Power- Up Time (_PWRTE_ON). Se utiliza el oscilador por cristal de cuarzo (_XT-OSC)

INCLUDE < P16F84A.INC.>


Indica el fichero donde se localiza las etiquetas que nombra a los diferente s registros y el valor que le corresponde a cada uno, es decir, en el fichero P16F84A.INC se muestra como como hay que nombrar a todos los registros propios del micro controlador

GLOSARIO
NEMONICOS: son grupos de caracteres alfanumricos que simbolizan las ordenes o tareas de cada instruccin . DIRECTIVAS: son instrucciones que nicamente son reconocidas por el ensamblador y que han sido agregadas para facilitar la tarea de ensamblado. Son usadas para especificar la organizacin de memoria, realizar ensamblado condicional, definir macros, entrada, salida, control de archivos, listados, cross-reference, direcciones e informacin acerca de la estructura de un programa y las declaraciones de datos. MPASM: nos permite escribir el cdigo y ensamblarlo para producir como salida un fichero .HEX que luego grabaremos en el PIC o que nos servir para utilizarlo con el simulador que incorpora MPLAB, en otros programas como PROTEUS o por ejemplo en emuladores de PIC.

S-ar putea să vă placă și