<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>WebHome/TrabajosPracticos/PracticoASM5</title><revhistory><revision><revnumber>19</revnumber><date>2012-08-22 19:13:29</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>18</revnumber><date>2012-08-22 19:12:52</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>17</revnumber><date>2012-08-22 19:12:23</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>16</revnumber><date>2012-08-22 19:11:11</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>15</revnumber><date>2012-05-15 17:13:11</date><authorinitials>GuillermoSteiner</authorinitials><revremark>Se cambia nombre desde &quot;WebHome/TrabajosPracticos/PracticoASM4&quot;</revremark></revision><revision><revnumber>14</revnumber><date>2012-05-15 17:12:58</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>13</revnumber><date>2011-09-06 19:21:39</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>12</revnumber><date>2010-09-28 19:39:29</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>11</revnumber><date>2010-09-14 17:03:51</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>10</revnumber><date>2010-09-14 17:03:36</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>9</revnumber><date>2010-09-09 14:02:27</date><authorinitials>GuillermoSteiner</authorinitials><revremark>Se cambia nombre desde &quot;TrabajosPracticos/PracticoASM4&quot;</revremark></revision><revision><revnumber>8</revnumber><date>2010-09-09 14:00:19</date><authorinitials>GuillermoSteiner</authorinitials><revremark>Se cambia nombre desde &quot;PracticoASM4&quot;</revremark></revision><revision><revnumber>7</revnumber><date>2010-08-31 16:52:54</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>6</revnumber><date>2010-08-24 20:58:55</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>5</revnumber><date>2010-08-24 20:57:22</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>4</revnumber><date>2010-08-24 19:02:24</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>3</revnumber><date>2010-08-24 19:01:32</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>2</revnumber><date>2010-08-24 19:01:06</date><authorinitials>GuillermoSteiner</authorinitials></revision></revhistory></articleinfo><section><title>Trabajo Práctico Nro. 5 Assembler y C</title><para>Para los ejercicios en esta etapa deberemos utilizar lo siguiente </para><para>Tendremos un directorio con cada ejercicio conteniendo lo siguiente </para><para><emphasis role="strong">Archivos de Entrada</emphasis> </para><itemizedlist><listitem><para><emphasis role="strong">head.s</emphasis> es el archivo fuente en assembler, en este caso cumplirá principalmente el rol de STARTUP, es decir, configurará el hardware de microcontrolador, asignará los valores iniciales de las variables globales que así lo requieran y le pasará el mando al main del C, puede tener adicionalmente alguna función extra para ser llamada desde el C.  </para></listitem><listitem><para><emphasis role="strong">main.c</emphasis> es el archivo de arranque del C, contendrá el main() {} de nuestro programa.  </para></listitem><listitem><para><emphasis role="strong">*.c</emphasis> según el práctico podrá haber algún archivo de funciones extra, los cuales serán llamado desde el C.  </para></listitem></itemizedlist><para><emphasis role="strong">Archivo de configuración</emphasis> </para><itemizedlist><listitem><para><emphasis role="strong">Makefile</emphasis> es el archivo administrador de nuestro proyecto, cada archivo .c o .s que contenga nuestro proyecto deberá ser especificado en la lista SOURCE dentro de este archivo.  </para></listitem><listitem><para><emphasis role="strong">Linker Script</emphasis> en este práctico, se requiere una especificación mas detallada del uso de memoria, es por eso que necesitaremos un archivo adicional de configuración para ser usado por el linker.  </para></listitem></itemizedlist><para><emphasis role="strong">Archivos de salida generados por make</emphasis> </para><itemizedlist><listitem><para><emphasis role="strong">ex1.elf</emphasis> archivo binario.  </para></listitem><listitem><para><emphasis role="strong">ex1.hex</emphasis> archivo binario formato Intel, usado para grabar el microcontrolador.  </para></listitem><listitem><para><emphasis role="strong">ex1.lst</emphasis> archivo con el código fuente y el binario desensamblado.  </para></listitem><listitem><para><emphasis role="strong">*.o</emphasis> archivos compilados de cada archivo extra. </para></listitem></itemizedlist><para><emphasis role="strong">Archivos general para todos los ejemplos</emphasis> </para><para>Aquí se pueden obtener ejemplos de los diferentes archivos necesarios para un proyecto. </para><itemizedlist><listitem><para>Archivo de configuración para el make (<ulink url="https://ciii.frc.utn.edu.ar/TecnicasDigitalesII/WebHome/TrabajosPracticos/PracticoASM5/TecnicasDigitalesII/WebHome/TrabajosPracticos/PracticoASM5?action=AttachFile&amp;do=get&amp;target=Makefile">Makefile</ulink>)  </para></listitem><listitem><para>Linker Script (<ulink url="https://ciii.frc.utn.edu.ar/TecnicasDigitalesII/WebHome/TrabajosPracticos/PracticoASM5/TecnicasDigitalesII/WebHome/TrabajosPracticos/PracticoASM5?action=AttachFile&amp;do=get&amp;target=lpc2114_flash.ld">lpc2114_flash.ld</ulink>)  </para></listitem><listitem><para>Archivo StartUp (<ulink url="https://ciii.frc.utn.edu.ar/TecnicasDigitalesII/WebHome/TrabajosPracticos/PracticoASM5/TecnicasDigitalesII/WebHome/TrabajosPracticos/PracticoASM5?action=AttachFile&amp;do=get&amp;target=head.s">head.s</ulink>)  </para></listitem><listitem><para>Archivo de cabecera para el main.c (<ulink url="https://ciii.frc.utn.edu.ar/TecnicasDigitalesII/WebHome/TrabajosPracticos/PracticoASM5/TecnicasDigitalesII/WebHome/TrabajosPracticos/PracticoASM5?action=AttachFile&amp;do=get&amp;target=main.h">main.h</ulink>)  </para></listitem></itemizedlist><section><title>Ejercicio 1</title><para>Realizar un programa que dada una cadena con terminación nula guardada en &quot;cadena&quot;, la pase a mayúscula, guardando el resultado en el mismo vector &quot;cadena&quot; </para><para>nota:la cadena de entrada solo contendrá valores alfabéticos o espacio en blanco ('a' - 'z','A' - 'Z') </para><para>archivo fuente <ulink url="https://ciii.frc.utn.edu.ar/TecnicasDigitalesII/WebHome/TrabajosPracticos/PracticoASM5/TecnicasDigitalesII/WebHome/TrabajosPracticos/PracticoASM5?action=AttachFile&amp;do=get&amp;target=main.c">main.c</ulink> </para></section><section><title>Ejercicio 2</title><para>Realizar un programa que dada una cadena de 20 bytes ordenarlos de menor a mayor por el método de burbuja </para><para>El programa será realizado en C, luego reescribirlo en asembler, comparar finalmente los resultados del programa en C dado por el compilador y el programa escrito directamente en asembler </para><para>archivo fuente <ulink url="https://ciii.frc.utn.edu.ar/TecnicasDigitalesII/WebHome/TrabajosPracticos/PracticoASM5/TecnicasDigitalesII/WebHome/TrabajosPracticos/PracticoASM5?action=AttachFile&amp;do=get&amp;target=burbuja_main.c">main.c</ulink> </para></section><section><title>Ejercicio 3</title><para>Realizar un programa en asembler que calcule el factorial de un número por el método recursivo, el almacenamiento de datos temporales se deberá realizar por medio de un stack de tipo Full Descend.  </para><para>El programa estará constituido por dos partes. </para><itemizedlist><listitem><para>programa principal el cual llamará a una función denominada &quot;factorial&quot; con el numero a calcular su factorial. </para></listitem><listitem><para>función &quot;factorial&quot;, la cual implementará el cálculo por el método recursivo. </para></listitem></itemizedlist><para>archivo fuente <ulink url="https://ciii.frc.utn.edu.ar/TecnicasDigitalesII/WebHome/TrabajosPracticos/PracticoASM5/TecnicasDigitalesII/WebHome/TrabajosPracticos/PracticoASM5?action=AttachFile&amp;do=get&amp;target=factorial_ex1.s">ex1.s</ulink> </para></section></section></article>