= Trabajo Práctico Nro.4 Assembler y C = Para los ejercicios en esta etapa deberemos utilizar lo siguiente Tendremos como el Practico anterior un directorio con cada ejercicio conteniendo lo siguiente Archivos de Entrada * '''head.s''' 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. * '''main.c''' es el archivo de arranque del C, contendrá el main() {} de nuestro programa. * '''*.c''' según el práctico podrá haber algún archivo de funciones extra, los cuales serán llamado desde el C. Archivo de configuración * '''Makefile''' al igual que en el práctico 1, necesitamos un archivo de configuración de nuestro proyecto, cada archivo .c adicional que agreguemos a nuestro proyecto deberá ser notificado al make, agregando el nombre correspondiente al fichero dentro de la lista SOURCE. * '''Linker Script''' 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 Archivos de salida generados por make, serán los mismo que en el anterior ejercicio, sumándose los .o de cada archivo .c * '''ex1.elf''' archivo binario. * '''ex1.hex''' archivo binario formato Intel, usado para grabar el microcontrolador. * '''ex1.lst''' archivo con el código fuente y el binario desensamblado. * '''*.o''' archivos compilados de cada archivo extra Archivos general para todos los ejemplos * Archivo de configuración para el make ([[attachment:Makefile | Makefile]]) * Linker Script ([[attachment:lpc2114_flash.ld | lpc2114_flash.ld]]) * Archivo !StartUp ([[attachment:head.s | head.s]]) ===== Ejercicio 1 ===== Realizar un programa que dada una cadena con terminación nula guardada en "cadena", la pase a mayúscula, guardando el resultado en el mismo vector "cadena" nota:la cadena de entrada solo contendrá valores alfabéticos o espacio en blanco ('a' - 'z','A' - 'Z') archivo fuente [[attachment:main.c | main.c]] ===== Ejercicio 2 ===== Realizar un programa que dada una cadena de 20 bytes ordenarlos de menor a mayor por el método de burbuja archivo fuente main.c ===== Ejercicio 3 ===== Realizar un programa en assembler que calcule el factorial de un número por el método recursivo, el envío de parámetros y el almacenamiento de datos temporales, se deberá realizar por medio de un stack de tipo Full Descend. El programa estará constituido por dos partes. * programa principal el cual llamará a una función denominada "factorial" con el numero a calcular su factorial. * función "factorial", la cual implementará el calculo por el método recursivo. archivo fuente [[attachment:factorial_ex1.s | ex1.s]]