expo 04 equipo 02

51
UTILIZACION DE LA HERRAMIENTA ATMEL STUDIO PARA DISEÑAR PROGRAMAS EN ENSAMBLADOR, ESQUEMA BASICO DE UN PROGRAMA, INCLUDE, DEF Y DEFINICIONES DE ORGANIZACIÓN BASICA

Upload: rebenge-benjamin-zamudio-olguin

Post on 24-Dec-2015

6 views

Category:

Documents


2 download

DESCRIPTION

ensamblador

TRANSCRIPT

Page 1: Expo 04 Equipo 02

UTILIZACION DE LA HERRAMIENTA ATMEL STUDIO

PARA DISEÑAR PROGRAMAS EN ENSAMBLADOR, ESQUEMA BASICO DE UN PROGRAMA,

INCLUDE, DEF Y DEFINICIONES DE ORGANIZACIÓN BASICA

Page 2: Expo 04 Equipo 02

ATMEL STUDIO

• Atmel es una compañía de semiconductores, fundada en 1984. Su línea 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. También tiene capacidad de ofrecer soluciones del tipo system on chip (SoC).

Page 3: Expo 04 Equipo 02

• Atmel sirve a los mercados de la electrónica de consumo, comunicaciones, computadores, redes, electrónica industrial, equipos médicos, automotriz, aeroespacial y militar. Es una industria líder en sistemas seguros, especialmente en el mercado de las tarjetas seguras.

Page 4: Expo 04 Equipo 02
Page 5: Expo 04 Equipo 02

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 diseño simple y la facilidad de programación.

Page 6: Expo 04 Equipo 02

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, criptografía y amplio conjunto de periféricos 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 (multiplicación y direccionamiento de programas mayores) y amplio conjunto de periféricos.

• ATtiny: pequeños microcontroladores AVR con 0,5 a 8 kB de memoria flash programable, encapsulados de 6 a 20 pines y un limitado set de periféricos.

• 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 baterías, pantallas LCD y los controles de los motores o la iluminación.

• AT90S: tipos obsoletos, los AVRs clásicos

Page 7: Expo 04 Equipo 02
Page 8: Expo 04 Equipo 02

ESQUEMA BASICO DE UN PROGRAMA

• El lenguaje ensamblador (o lenguaje de ensamble, assembly language) es la representación simbólica de la codificación binaria de un computador.

• • Códigos de operación representados mediante códigos nemotécnicos.• Datos y referencias codificadas mediante nombres simbólicos (símbolos o

• etiquetas).

Page 9: Expo 04 Equipo 02

• Existe una correspondencia biunívoca entre las instrucciones de maquina y las instrucciones de un lenguaje ensamblador.

• • Cada instrucción ensamblador es una codificación simbólica de una instrucción de maquina.

• • Excepción: ensambladores que proporcionan una maquina virtual con pseudoinstrucciones.

Page 10: Expo 04 Equipo 02

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

Page 11: Expo 04 Equipo 02

Fases

• 1. Especificacióndelproblema.2. Elaboracióndelalgoritmodelasolución.3. Diseñodeldiagramadeflujo.4. Codificaciónenensamblador.5. Edicióndelprogramafuente.6. Traducción del programa fuente a código maquina.

7. Montajedelprogramaejecutable. 8. Cargayejecucióndelprograma. 9. Verificacióndelfuncionamientodelprograma.

Page 12: Expo 04 Equipo 02

Especificación del problema.

• Estudio detallado de los requisitos que debe cumplir la solución.

• Analisis de las entradas al programa y las salidas que debe producir.

Page 13: Expo 04 Equipo 02

Elaboración del algoritmo de la solución

• Establecimiento de los módulos y las subrutinas que compondran el programa.

• Definición y organización de los datos simples y las estructuras de datos necesarias.

• Si hay varios módulos, se codifica cada uno de ellos por separado.

Page 14: Expo 04 Equipo 02

Diseño del diagrama de flujo.

• Diagrama de flujo: notación grafica que permite representar la estructura de un programa.

• Tipos:•Orientado al problema: capta la estructura del algoritmo de la solución.•Orientado al lenguaje: capta peculiaridades del lenguaje de programación utilizado.

Page 15: Expo 04 Equipo 02
Page 16: Expo 04 Equipo 02

Codificación en ensamblador.

• El programa fuente se escribe en papel..• Si el diagrama de flujo es suficientemente

detallado, esta fase es inmediata. • Si hay varios módulos, se codifica cada uno de

ellos por separado.

Page 17: Expo 04 Equipo 02

Edición del programa fuente

• Transcripción 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 módulos, se edita cada uno de ellos por separado.

Page 18: Expo 04 Equipo 02

Traducción del programa fuente a código máquina

• Ensamblador – Traductor de lenguaje ensamblador a lenguaje

maquina. – Genera un fichero con el código objeto

equivalente al código fuente completo, junto con información necesaria para el montaje.

Page 19: Expo 04 Equipo 02

• 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 código

objeto equivalente al código fuente completo, junto con información necesaria para el montaje.

Page 20: Expo 04 Equipo 02

• Si el código fuente contiene errores sintacticos, no se genera código objeto.

• Intérprete: traductor de lenguaje de alto nivel a lenguaje maquina. – Un intérprete traduce y ejecuta las instrucciones

del programa fuente una por una, – sin generar fichero alguno con código objeto. – Los intérpretes son propios de los llamados

lenguajes interpretados (BASIC, LISP, etc).

Page 21: Expo 04 Equipo 02

Montaje del programa ejecutable.

• El código objeto procedente del traductor normalmente no puede ejecutarse directamente, ya que le falta cierta información que lo impide. – Código objeto procedente de bibliotecas predefinidas. – Código objeto procedente de la traducción de otros

módulos. – Referencias cruzadas entre objetos de diferentes

módulos. – Información dependiente del sistema operativo.

Page 22: Expo 04 Equipo 02

• El montador se encarga de: – Resolver las referencias entre elementos de varios

módulos. – Asignar direcciones a los diferentes módulos del

programa. – Unir todos los módulos generando un fichero

conteniendo el módulo ejecutable.

Page 23: Expo 04 Equipo 02

Carga y ejecución 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 ejecución.

• Herramienta utilizada: cargador. Pertenece al sistema operativo.

Page 24: Expo 04 Equipo 02

Montaje del programa ejecutable

Page 25: Expo 04 Equipo 02

Verificación del funcionamiento del programa.

• Comprobación de los efectos causados por la ejecución de las instrucciones en las variables y el estado de la maquina. – Ejecutandolo directamente. – Utilizando un depurador.

Page 26: Expo 04 Equipo 02

• Depurador: herramienta que permite verificar el funcionamiento de los programas paso a paso a nivel de código 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

ejecución del programa en – lugares determinados. – Permite ver los contenidos de los registros y la memoria, y

modificar sus contenidos en cualquier instante durante la ejecución de los programas.

Page 27: Expo 04 Equipo 02

• Caso particular: programa monitor. – Se encuentra grabado en la memoria ROM del

computador. – Permite depurar programas en lenguaje maquina.

Page 28: Expo 04 Equipo 02

Sintaxis de un lenguaje ensamblador

• Tipos de líneas en un programa en ensamblador: • Instrucciones: ejecutables por el computador. • Pseudoinstrucciones: secuencias de instrucciones

con nombre predefinido. • Directivas: indicaciones para el traductor. • Líneas de comentario: suelen comenzar por un

caracter especial, y son ignoradas por el traductor en cuanto a la generación de código objeto.

Page 29: Expo 04 Equipo 02

• Estructura de una instrucción en memoria: – Dirección • Código de operación |Direcciones de operandos

Estructura de una línea de un programa escrito en ensamblador: – Etiqueta |Nemotécnico |Operandos|Comentarios

• Los campos de una línea de programa se separan mediante delimitadores de campo.

Page 30: Expo 04 Equipo 02

Etiquetas

• La etiqueta identifica la línea que encabeza. • Recomendaciones: – Utilizar sólo letras o numeros (comenzar por una

letra). – Colocar la primera letra de la etiqueta en el primer

caracter de la línea. • Las etiquetas permiten al programador definir

símbolos. – Símbolo: tira de caracteres que identifica un valor.

Page 31: Expo 04 Equipo 02

Cuando el traductor se encuentra con una etiqueta, la inserta en la tabla de símbolos.

Page 32: Expo 04 Equipo 02

Nemotécnico

• Identifica: – Un código de operación de una instrucción del

lenguaje. – Una pseudoinstrucción. – Una directiva.

El nemotécnico nunca comienza en el primer caracter de la línea.

Page 33: Expo 04 Equipo 02

Campos de operandos

• Identifican los operandos que intervienen en la instrucción o directiva.

• Tipos de operandos: • Constantes – Numéricas: 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).

– Alfabéticas: entre comillas.

Page 34: Expo 04 Equipo 02

• Símbolos – Predefinidos: registros, contador de dirección de

ensamblaje, etc. Implícitos.Explícitos.

Page 35: Expo 04 Equipo 02

• Expresiones– Pueden incluir constantes, símbolos implícitos o

explícitos, el símbolo del contador de dirección de ensamblaje, paréntesis u operadores sencillos (+,-,*,/,%,&,|,^,<<, etc).

• ¡LAS EXPRESIONES NO PUEDEN INCLUIR NOMBRES DE REGISTROS NI USAR EL CONTENIDO DE LAS VARIABLES!

Page 36: Expo 04 Equipo 02

Comentarios

• Son indicaciones para una mejor comprensión del programa ensamblador.Pueden situarse a continuación de los operandos, con al menos un espacio en blanco entre medias. – En ocasiones puede exigirse incluir ademas algun

otro caracter delimitador (“*”, “;”, “#”).

Page 37: Expo 04 Equipo 02

• En ocasiones se incluyen líneas completas de comentario. – En ese caso, la línea de comentario comenzara con

un caracter delimitador en la primera posición de la línea (“*”, “;”, “#”).

Page 38: Expo 04 Equipo 02

Pseudoinstrucciones en ensamblador

• Una pseudoinstrucción es una instrucción ofrecida por el ensamblador, pero no realizada por la circuitería.

• A una pseudoinstrucción le corresponde una secuencia definida de instrucciones realizadas por la circuitería.

Page 39: Expo 04 Equipo 02

• Las pseudoinstrucciones proporcionan a la maquina un lenguaje mas rico que el que realiza la circuitería.

• Las pseudoinstrucciones facilitan la programación en ensamblador sin complicar la circuitería (aunque sí complican el diseño del traductor).

• No todos los traductores cuentan con pseudoinstrucciones.

Page 40: Expo 04 Equipo 02

Directivas en ensamblador

• Informan al traductor acerca de cómo debe traducir el código fuente a código maquina, pero no producen instrucciones en lenguaje maquina.

Page 41: Expo 04 Equipo 02

• Las directivas pueden indicar información relativa a diversas cuestiones: – El aspecto del listado de ensamblaje. – La definición de direcciones absolutas del programa. – Los tamaños y nombres simbólicos adjudicados a constantes

y variables. – Las direcciones de ensamblado de las instrucciones y los

datos. – La definición de símbolos importables y exportables. – La inclusión y delimitación de secciones en el código. – Etc.

Page 42: Expo 04 Equipo 02

• Las directivas son procesadas por el traductor, que a partir de ellas adopta las acciones pertinentes para realizar el proceso de ensamblaje y generación de listados y código objeto.

• El código 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 ejecución.

Page 43: Expo 04 Equipo 02

PALABRAS RESERVADAS• Ciertas palabras en lenguaje ensamblador estan reservadas para sus propósitos propios, y son

usadas solo bajo condiciones especiales. Por categorías, 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.

• * Símbolos predefinidos, como @Data y @Model, que regresan información a su programa.

• El uso de una palabra reservada para un propósito equivocado provoca que el ensamblador genere un mensaje de error.

• Ver palabras reservadas.

Page 44: Expo 04 Equipo 02

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 dirección de un elemento de dato. y etiqueta, que se refiere a la dirección de una instrucción. Las mismas reglas se aplican tanto para los nombres como para las etiquetas. Un identificador puede usar los siguientes caracteres:

Page 45: Expo 04 Equipo 02

• 1.- Letras del alfabeto: Desde la A hasta la Z• 2.- Dígitos: Desde el 0 al 9 (no puede ser el

primer caracter)• 3.- Caracteres especiales Signo de interrogación ( ? )• Subrayado ( _ )• Signo de pesos ( $ )• Arroba ( @ )• Punto ( . ) (no puede ser el primer

caracter)•

Page 46: Expo 04 Equipo 02

• ADD AX, BX– El ensamblador sabe de forma automatica que AX

y BX se refieren a los registros. Sin embargo, en una instrucción como:

• MOV REGSAVE, AX– El ensamblador puede reconocer el nombre

REGSAVE solo si se define en algun lugar del programa.

Page 47: Expo 04 Equipo 02

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 código objeto.

• 2. Directivas, que indican al ensamblador que realiza una acción especifica, como definir un elemento de dato.

• A continuación esta el formato general de un enunciado, en donde los corchetes indican una entrada opcional:

• [identificador] operación [operando(s)] [;comentarios]

Page 48: Expo 04 Equipo 02

Directiva #INCLUDE

• Esta directiva indica que archivos deberan tomarse en cuenta a la hora de compilar el código. 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 línea debe colocarse al principio, y tiene la siguiente sintaxis:

• #INCLUDE ; Lista de etiquetas de microchip• También permite incluir otros programas. Por ejemplo:• #INCLUDE "DISPLAY.ASM"

Page 49: Expo 04 Equipo 02

Directiva #DEFINE

• #DEFINE es una directiva muy util. Define se usa para crear pequeñas macros. Con estas macros podremos poner nombres a pequeños fragmentos de código que nos facilitaran la realización y comprensión 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 compilación por el numero 5.

Page 50: Expo 04 Equipo 02

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 código idénticos. Cuando una macro es invocada, esta es copiada por el ensamblador en el lugar de la invocación dentro del código fuente. La macro se declara con la directiva MACRO, y termina con la directiva ENDM.– Creación de una macro denominada activar:

• activar macro• CLRF PORTA• BSF PORTB,2• endm

Page 51: Expo 04 Equipo 02

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.html• http://www.atmel.com/Images/Atmel-8431-8-and32-bit-Microcontrollers-AVR4029-At

mel-Software-Framework-User-Guide_Application-Note.pdf• http://es.wikipedia.org/wiki/AVR• http://www.uclm.es/profesorado/licesio/docencia/etc/17_cbas-

progensamblador_itis.pdf• http://www.portalhacker.net/b120/tutorial-completo-lenguaje-ensamblador/73143/ms

g344636#msg344636

• http://miensamblador.blogspot.mx/2013/07/numero-perfecto-utilizando-macros.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-Atmel-Software-Framework-User-Guide_Application-Note.pdf

• http://perso.wanadoo.es/pictob/ensamblador.htm