Bienvenido: Ingresar

Versión 29 con fecha 2010-10-26 19:18:35

Quitar mensaje
location: WebHome / TrabajosPracticos / PracticoASM4

Trabajo Práctico Nro.3 Assembler

Este práctico tiene como objetivo ejercitarse en la programación del assembler del ARM como así también conocer las herramientas necesarias para resolver las diferentes instancias de un proyecto ( Escritura del código, compilación, enlace y simulación ).

Todos los ejercicios se realizan en base al microcontrolador LPC 2114, pero no se hace referencia al hardware de periféricos, lo que permite la fácil simulación.

Para la realización de los prácticos en esta primera etapa, utilizaremos el mismo nombre del archivo fuente y el de los archivos en binario, distinguiendo a cada ejemplo o ejercicio por el nombre del directorio que utilizamos, esto permite utilizar el mismo Makefile para todos los ejercicios.

Tendremos entonces dentro del directorio de cada ejercicio los siguientes archivo:

Archivo de entrada

Este archivo está constituido por un encabezado que es fijo para todos los ejemplos

.text
.arm
.global _start
_start:
         b reset
         b loop
         b loop
         b loop
         b loop
         nop
         b loop
         b loop

 /* ==============================
 *  CODIGO
 *  ==============================
 */

 reset:
......
......

......
......
 loop:   b loop
 /* ==============================
 *  CONSTANTES
 *  ==============================
 */
 CTE1: .word 0x1231AAAA
 .end

Archivo de configuración

Archivos de salida generados por make

Archivo de configuración general para todos los ejemplos (Makefile)

Ejercicio 1

Realizar un programa que sume dos números de 64 bits cada uno, guardando el resultado en R5 R6 (64bits), los números a sumar estarán dispuesto en R1 R2(64bits) y R3 R4(64bits) respectivamente.

archivo fuente ex1.s

Ejercicio 2

Realizar un programa que analizando un bit en el registro r3 active una alarma si este bit es 0, el nro de bit a analizar está guardado en el registro r4, la alarma se activa escribiendo un 1 en el bit 16 de r6

archivo fuente ex1.s

Ejercicio 3

Realizar una serie de subrutinas que realizen diferentes comparaciones, devolviendo r0 = 0 si estas comparaciones fueron falsas y r0<>0 si fueron verdaderas, las comparaciones son las siguientes

archivo fuente ex1.s

Ejercicio 4

Realizar un programa que dado un numero guardado en R1 lo multiplique por 10, de dos formas distintas, usando la instrucción mul y por corrimiento

archivo fuente ex1.s

Ejercicio 5

Realizar un programa que dado un numero guardado en R1 y otro en R2, calcule el resultado de elevar R1 a la potencia de R2 y guardar el resultado en R3 (R3 = R1^R2)

archivo fuente ex1.s

Ejercicio 6

Realizar un programa que dada una cadena con terminación nula guardada en VECT, la pase a mayúscula, guardando el resultado en el mismo vector VECT

nota:la cadena de entrada solo contendrá valores alfabéticos o espacio en blanco ('a' - 'z','A' - 'Z')

archivo fuente ex1.s

Ejercicio 7

Realizar un programa que dado un vector de 16 halfword con signos, guarde en R1 el resultado de su promedio

archivo fuente ex1.s

Ejercicio 8

Realizar un programa que sume los word de un vector VECTW sin signo en las posiciones indicadas por un segundo vector VECTB de 20 byte,el resultado guardarlo en R1

ejemplo

VECTB = 1,3,2,0,2......

VECTW = 1,111,222,333,444,555,666,......

se suman 111+333+222+1+222...

archivo fuente ex1.s

Ejercicio 9

Dado un vector de 16 words con signo, realizar un programa que encuentre el elemento del vector mas cercano a la media del mismo.

archivo fuente ex1.s

Ejercicio 10

Dada una cadena de caracteres con terminación nula la cual contiene palabras separadas por espacio, realizar un programa que pase a minúscula todas las letras con excepción de la primera de cada palabra que deberá ser pasada a mayúscula, además, las palabras de menos de 3 letras deberán quedar en minúscula

ejemplo

entrada

VECT = "El mUndo dE Hoy",0

salida

VECT = "el Mundo de Hoy",0

archivo fuente ex1.s

Ejercicio 11

Se debe realizar un programa que calcule de los 100 primeros números naturales cuales son primos usando el método de la "Criba de Eratóstenes". El método se resume en estos pasos:

Al final copiamos a un nuevo vector todos los números no eliminados.

archivo fuente ex1.s

Ejercicio 12

Se debe realizar un programa que invierta la posición de las letras en cada una de las palabras guardadas en un vector. Las características de este vector a tener en cuenta son:

ejemplo

vec1 = " Las palabras en el mismo están separadas por uno o varios espacios ",0

resultado

vec1 = " saL sarbalap ne le omsim nátse sadarapes rop onu o soirav soicapse ",0

archivo fuente ex1.s

Ejercicio 13

Partiendo de una cadena de caracteres y 10 vectores de 10 punteros cada uno, se pide realizar un programa que guarde en esos vectores las palabras encontradas en la cadena de la siguiente forma: En el primer vector todas las palabras que tengan menos de 3 letras, luego en el segundo las que tengan 4 letras, en el próximo 5, hasta llegar al décimo vector, donde se guardarán aquellas que tengan mas de 11 letras. En caso de poseer mas de 10 palabras de una clase, no se guardarán.

Nota: no es necesario guardar las palabras en otro vector, simplemente con guardar el puntero de comienzo de la palabra y luego cambiar el espacio que separa esta de la próxima por Nulo es suficiente.

archivo fuente ex1.s

Ejercicio 14

Dada una cadena de bytes sin signo de terminación nula, por cada elemento de esta cadena se sacará el promedio del mismo con los tres bytes anteriores guardando este valor en una segunda cadena en la posición correspondiente. La excepción a esta regla son los tres primeros valores que son guardados directamente en la segunda cadena sin calculo de promedio.

Ejemplo

cadena1 = 2,14,7,8,9,2,.......,0

salida

cadena2 = 2,14,7,7,9,6

donde 2 <- 2, 14 <- 14, 7 <- 7, 7 <- prom(2+14+7+8), 9 <- prom(14+7+8+9), 6 <- prom(7+8+9+2)

archivo fuente ex1.s

Ejercicio 15

Una cadena de caracteres debe se encriptada, para ello se utilizará un método muy básico, el cual consiste en sumar al código ascii de cada letra en la cadena a encriptar el código ascii del caracter correspondiente de una clave, cada vez que se alcanza el final de esta, se vuelve a comenzar con su primer caracter.

Ejemplo

aencrip = 'h','o','l','a',' ','m','u','n','d','o',0

clave = 'f','1','2',0

resultado = 'h'+'f' , 'o'+'1' , 'l'+'2' , 'a'+'f' , ' '+'1' , 'm'+'2' , 'u'+'f' , 'n'+'1' , 'd'+'2' , 'o'+'f'

archivo fuente ex1.s

Ejercicio 16

En un vector de caracteres, el cual posee solo palabras separadas por espacios, se debe buscar la palabra mas larga, luego, formar otro vector con las mismas palabras con el agregado a cada una de n caracteres '_' donde n es la diferencia entre la palabra mas larga y la palabra actual

ejemplo

entrada = "igualar el largo de las palabras",0

salida = "igualar_ el______ largo___ de______ las_____ palabras",0 

archivo fuente ex1.s

Ejercicio 17

Realizar un programa que elimine de un vector de byte sin signo previamente cargado, los números múltiplos de 4.

El vector se denomina vec1 y termina con 0

ejemplo

entrada en vec1 = 80,5,6,18,4,5,20,19,0

salida en vec1 = 5,6,18,5,19,0

archivo fuente ex1.s