Vous êtes sur la page 1sur 51

UTILIZACION DE LA

HERRAMIENTA ATMEL
STUDIO PARA DISEAR
PROGRAMAS EN
ENSAMBLADOR,
ESQUEMA BASICO DE UN
PROGRAMA, INCLUDE,
DEF Y DEFINICIONES DE
ORGANIZACIN BASICA

ATMEL STUDIO
Atmel es una compaa de
semiconductores, fundada en 1984. Su
lnea de productos incluye
microcontroladores (incluyendo derivados
del 8051, el AT91SAM basados en ARM, y
sus arquitecturas propias AVR y AVR32),
dispositivos de radiofrecuencia, memorias
EEPROM y Flash, ASICs, WiMAX, y muchas
otras. Tambin tiene capacidad de ofrecer
soluciones del tipo system on chip (SoC).

Atmel sirve a los mercados de la


electrnica de consumo,
comunicaciones, computadores,
redes, electrnica industrial, equipos
mdicos, automotriz, aeroespacial y
militar. Es una industria lder en
sistemas seguros, especialmente en
el mercado de las tarjetas seguras.

AVR
Los AVR son una familia de
microcontroladores RISC del fabricante
estadounidense Atmel. La arquitectura de los
AVR fue concebida por dos estudiantes en el
Norwegian Institute of Technology, y
posteriormente refinada y desarrollada en
Atmel Norway, la empresa subsidiaria de
Atmel, fundada por los dos arquitectos del
chip. Cuenta con bastantes aficionados
debido a su diseo simple y la facilidad de
programacin.

Se pueden dividir en los siguientes


grupos
ATxmega: procesadores muy potentes con 16 a 384 kB de
memoria flash programable, encapsulados de 44, 64 y 100
pines (A4, A3, A1), capacidad de DMA, eventos, criptografa y
amplio conjunto de perifricos con DACs.
ATmega: microcontroladores AVR grandes con 4 a 256 kB de
memoria flash programable, encapsulados de 28 a 100 pines,
conjunto de instrucciones extendido (multiplicacin y
direccionamiento de programas mayores) y amplio conjunto de
perifricos.
ATtiny: pequeos microcontroladores AVR con 0,5 a 8 kB de
memoria flash programable, encapsulados de 6 a 20 pines y un
limitado set de perifricos.
AT90USB: ATmega integrado con controlador USB
AT90CAN: ATmega con controlador de bus CAN
Tipos especiales: algunos modelos especiales, por ejemplo,
para el control de los cargadores de bateras, pantallas LCD y
los controles de los motores o la iluminacin.
AT90S: tipos obsoletos, los AVRs clsicos

ESQUEMA BASICO DE UN
PROGRAMA
El lenguaje ensamblador (o lenguaje de
ensamble, assembly language) es la
representacin simblica de la
codificacin binaria de un computador.
Cdigos de operacin representados
mediante cdigos nemotcnicos.
Datos y referencias codificadas
mediante nombres simblicos (smbolos o
etiquetas).

Existe una correspondencia


biunvoca entre las instrucciones de
maquina y las instrucciones de un
lenguaje ensamblador.
Cada instruccin ensamblador es
una codificacin simblica de una
instruccin de maquina.
Excepcin: ensambladores que
proporcionan una maquina virtual
con pseudoinstrucciones.

Macroensambladores: permiten al
programador definir secuencias de
instrucciones con nombre.
El lenguaje ensamblador debe ser
traducido a lenguaje maquina para
poder ser interpretado y ejecutado
directamente por el computador.

Fases
1. Especificacindelproblema.
2. Elaboracindelalgoritmodelasolucin.
3. Diseodeldiagramadeflujo.
4. Codificacinenensamblador.
5. Edicindelprogramafuente.
6. Traduccin del programa fuente a cdigo
maquina.
7. Montajedelprogramaejecutable.
8. Cargayejecucindelprograma.
9.
Verificacindelfuncionamientodelprograma.

Especificacin del problema.


Estudio detallado de los requisitos
que debe cumplir la solucin.
Analisis de las entradas al programa
y las salidas que debe producir.

Elaboracin del algoritmo de la


solucin
Establecimiento de los mdulos y las
subrutinas que compondran el
programa.
Definicin y organizacin de los
datos simples y las estructuras de
datos necesarias.
Si hay varios mdulos, se codifica
cada uno de ellos por separado.

Diseo del diagrama de flujo.


Diagrama de flujo: notacin grafica
que permite representar la
estructura de un programa.
Tipos:
Orientado al problema: capta la
estructura del algoritmo de la
solucin.
Orientado al lenguaje: capta
peculiaridades del lenguaje de
programacin utilizado.

Codificacin en ensamblador.
El programa fuente se escribe en
papel..
Si el diagrama de flujo es
suficientemente detallado, esta fase
es inmediata.
Si hay varios mdulos, se codifica
cada uno de ellos por separado.

Edicin del programa fuente


Transcripcin del programa escrito en
lenguaje ensamblador a un fichero
de texto.
Para ello se utilizara como
herramienta un editor de textos
ASCII.
Si hay varios mdulos, se edita cada
uno de ellos por separado.

Traduccin del programa fuente


a cdigo mquina
Ensamblador
Traductor de lenguaje ensamblador a
lenguaje maquina.
Genera un fichero con el cdigo objeto
equivalente al cdigo fuente completo,
junto con informacin necesaria para el
montaje.

Compilador
Traductor de lenguaje de alto nivel a
ensamblador.
Hoy todos los compiladores traducen
directamente a lenguaje maquina.
En tal caso generan un fichero con el
cdigo objeto equivalente al cdigo
fuente completo, junto con informacin
necesaria para el montaje.

Si el cdigo fuente contiene errores


sintacticos, no se genera cdigo objeto.
Intrprete: traductor de lenguaje de alto
nivel a lenguaje maquina.
Un intrprete traduce y ejecuta las instrucciones
del programa fuente una por una,
sin generar fichero alguno con cdigo objeto.
Los intrpretes son propios de los llamados
lenguajes interpretados (BASIC, LISP, etc).

Montaje del programa


ejecutable.
El cdigo objeto procedente del traductor
normalmente no puede ejecutarse
directamente, ya que le falta cierta
informacin que lo impide.
Cdigo objeto procedente de bibliotecas
predefinidas.
Cdigo objeto procedente de la traduccin de
otros mdulos.
Referencias cruzadas entre objetos de diferentes
mdulos.
Informacin dependiente del sistema operativo.

El montador se encarga de:


Resolver las referencias entre elementos
de varios mdulos.
Asignar direcciones a los diferentes
mdulos del programa.
Unir todos los mdulos generando un
fichero conteniendo el mdulo
ejecutable.

Carga y ejecucin del programa.


Consiste en la transferencia del
programa ejecutable a la memoria
del computador desde el fichero en
disco, y en el posterior lanzamiento
de su ejecucin.
Herramienta utilizada: cargador.
Pertenece al sistema operativo.

Montaje del programa


ejecutable

Verificacin del funcionamiento


del programa.
Comprobacin de los efectos
causados por la ejecucin de las
instrucciones en las variables y el
estado de la maquina.
Ejecutandolo directamente.
Utilizando un depurador.

Depurador: herramienta que permite verificar el


funcionamiento de los programas paso a paso a
nivel de cdigo fuente.
Permite cargar programas en la memoria del computador.
Permite ejecutar programas paso a paso o de forma
continua.
Permite establecer puntos de ruptura para detener la
ejecucin del programa en
lugares determinados.
Permite ver los contenidos de los registros y la memoria,
y modificar sus contenidos en cualquier instante durante
la ejecucin de los programas.

Caso particular: programa monitor.


Se encuentra grabado en la memoria
ROM del computador.
Permite depurar programas en lenguaje
maquina.

Sintaxis de un lenguaje
ensamblador
Tipos de lneas en un programa en
ensamblador:
Instrucciones: ejecutables por el computador.
Pseudoinstrucciones: secuencias de
instrucciones con nombre predefinido.
Directivas: indicaciones para el traductor.
Lneas de comentario: suelen comenzar por
un caracter especial, y son ignoradas por el
traductor en cuanto a la generacin de
cdigo objeto.

Estructura de una instruccin en


memoria:
Direccin
Cdigo de operacin |Direcciones de operandos

Estructura de una lnea de un programa


escrito en ensamblador:
Etiqueta |Nemotcnico |Operandos|
Comentarios

Los campos de una lnea de programa


se separan mediante delimitadores de
campo.

Etiquetas
La etiqueta identifica la lnea que encabeza.
Recomendaciones:
Utilizar slo letras o numeros (comenzar por una
letra).
Colocar la primera letra de la etiqueta en el
primer caracter de la lnea.

Las etiquetas permiten al programador


definir smbolos.
Smbolo: tira de caracteres que identifica un
valor.

Cuando el traductor se encuentra


con una etiqueta, la inserta en la
tabla de smbolos.

Nemotcnico
Identifica:
Un cdigo de operacin de una
instruccin del lenguaje.
Una pseudoinstruccin.
Una directiva.
El nemotcnico nunca comienza en el
primer caracter de la lnea.

Campos de operandos
Identifican los operandos que
intervienen en la instruccin o
directiva.
Tipos de operandos: Constantes
Numricas: suelen llevar un prefijo o un
sufijo que identifica la base en que
estan expresadas: decimal (D), binaria
(%,B), octal (O,@,Q,C) o hexadecimal (H,
$, 0x).
Alfabticas: entre comillas.

Smbolos
Predefinidos: registros, contador de
direccin de ensamblaje, etc. Implcitos.
Explcitos.

Expresiones
Pueden incluir constantes, smbolos
implcitos o explcitos, el smbolo del
contador de direccin de ensamblaje,
parntesis u operadores sencillos
(+,-,*,/,%,&,|,^,<<, etc).

LAS EXPRESIONES NO PUEDEN


INCLUIR NOMBRES DE
REGISTROS NI USAR EL
CONTENIDO DE LAS VARIABLES!

Comentarios
Son indicaciones para una mejor
comprensin del programa
ensamblador.
Pueden situarse a continuacin de
los operandos, con al menos un
espacio en blanco entre medias.
En ocasiones puede exigirse incluir
ademas algun otro caracter delimitador
(*, ;, #).

En ocasiones se incluyen lneas


completas de comentario.
En ese caso, la lnea de comentario
comenzara con un caracter delimitador
en la primera posicin de la lnea (*,
;, #).

Pseudoinstrucciones en
ensamblador
Una pseudoinstruccin es una
instruccin ofrecida por el
ensamblador, pero no realizada por
la circuitera.
A una pseudoinstruccin le
corresponde una secuencia definida
de instrucciones realizadas por la
circuitera.

Las pseudoinstrucciones proporcionan


a la maquina un lenguaje mas rico que
el que realiza la circuitera.
Las pseudoinstrucciones facilitan la
programacin en ensamblador sin
complicar la circuitera (aunque s
complican el diseo del traductor).
No todos los traductores cuentan con
pseudoinstrucciones.

Directivas en ensamblador
Informan al traductor acerca de
cmo debe traducir el cdigo fuente
a cdigo maquina, pero no producen
instrucciones en lenguaje maquina.

Las directivas pueden indicar informacin


relativa a diversas cuestiones:
El aspecto del listado de ensamblaje.
La definicin de direcciones absolutas del programa.
Los tamaos y nombres simblicos adjudicados a
constantes y variables.
Las direcciones de ensamblado de las instrucciones y
los datos.
La definicin de smbolos importables y exportables.
La inclusin y delimitacin de secciones en el cdigo.
Etc.

Las directivas son procesadas por el


traductor, que a partir de ellas adopta las
acciones pertinentes para realizar el proceso
de ensamblaje y generacin de listados y
cdigo objeto.
El cdigo objeto no contiene ninguna
directiva.
El programa ejecutable desconoce la existencia
de directivas.
Las directivas nunca son tenidas en cuenta por el
computador en tiempo de ejecucin.

PALABRAS RESERVADAS
Ciertas palabras en lenguaje ensamblador estan 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.

IDENTIFICADORES
Un 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 Z


2.- Dgitos: Desde el 0 al 9 (no puede
ser el primer caracter)
3.- Caracteres especiales Signo de interrogacin ( ? )
Subrayado ( _ )
Signo de pesos ( $ )
Arroba ( @ )
Punto ( . ) (no puede ser
el primer caracter)

ADD AX, BX
El ensamblador sabe de forma automatica
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
algun 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]

Directiva #INCLUDE
Esta directiva indica que archivos deberan 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 sera capaz de reconocer todos los
registros especiales y sus bits. Su uso nos recordara
al #include del lenguaje C. Esta lnea debe colocarse
al principio, y tiene la siguiente sintaxis:
#INCLUDE ; Lista de etiquetas de microchip
Tambin permite incluir otros programas. Por
ejemplo:

#INCLUDE "DISPLAY.ASM"

Directiva #DEFINE
#DEFINE es una directiva muy util. Define se usa para
crear pequeas macros. Con estas macros podremos
poner nombres a pequeos fragmentos de cdigo que nos
facilitaran la realizacin y comprensin del algoritmo.
Por ejemplo, podremos poner nombres a bits.
#define CERO STATUS,2
As, en vez de tener que llamar al bit por un numero y
un registro, podremos usar directamente la palabra CERO.
#define CINCO 5
Cada vez que se utilice la palabra CINCO sera
reemplazada en el momento de la compilacin por el
numero 5.

Directiva MACRO
Esta directiva resulta muy potente y a diferencia de
la directiva #define se pueden crear macros mas
extensas, lo que nos evitara 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 denominada activar:

activar macro
CLRF PORTA
BSF PORTB,2
endm

Referencias
http://es.wikipedia.org/wiki/Atmel
http://www.slideshare.net/alepusto/manual-atmel-flip
http://www.atmel.com/webdoc/atmelstudio/atmelstudio.chapter.kgw_exp_kc.ht
ml
http://www.atmel.com/Images/Atmel-8431-8-and32-bit-Microcontrollers-AVR402
9-Atmel-Software-Framework-User-Guide_Application-Note.pdf
http://es.wikipedia.org/wiki/ AVR
http://www.uclm.es/profesorado/licesio/docencia/etc/17_cbasprogensamblador_itis.pdf
http://www.portalhacker.net/b120/tutorial-completo-lenguaje-ensamblador/7
3143/msg344636#
msg344636
http://miensamblador.blogspot.mx/2013/07/numero-perfecto-utilizandomacros.html
http://www.slideshare.net/alepusto/manual-atmel- flip
http://www.atmel.com/webdoc/atmelstudio/ index.html
http
://www.atmel.com/Images/Atmel-8431-8-and32-bit-Microcontrollers-AVR4029-At
mel-Software-Framework-User-Guide_ApplicationNote.pdf
http://perso.wanadoo.es/pictob/ ensamblador.htm