expo 04 equipo 02

Post on 24-Dec-2015

8 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

ensamblador

TRANSCRIPT

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

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

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

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.

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

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

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

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

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.

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.

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.

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.

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.

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.

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

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

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.

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

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.

Montaje del programa ejecutable

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.

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

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

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

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.

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

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.

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.

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

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

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

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 (“*”, “;”, “#”).

• 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 (“*”, “;”, “#”).

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.

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

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.

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

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

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.

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:

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

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

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]

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"

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.

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

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

top related