lunes, 27 de febrero de 2012

Entrega 1 Lenguaje Ensamblador

El lenguaje Ensamblador o assembler es un lenguaje de programacion de bajo nivel el cual es utilizado para la programacion de computadoras,microprocesadores,microcontroladores ademas de muchos otros circuitos integrados. Se utiliza una representacion binaria tambien conocida como lenguaje maquina.

Programa generador de una matriz en C
El programa con el cual trabajare es un programa en lenguaje c que nos crea e imprime una matriz de NxM, el codigo es el siguiente.



Creamos el codigo ensamblador apartir del archivo.c utilizando lo siguiente.



Compilamos el codigo de ensamblador, en este caso aparece un error por el use del getch, basta con retirarlo para poder compilar y posteriormente poder crear el ejecutable.



Programa Convertido a Lenguaje Ensamblador
El codigo ensamblador generado es el siguiente, como podemos ver es un codigo bastante extenso ya que de 31 lineas de codigo paso a convertise en un codigo de 170 lineas.



Explicación de algunas lineas:

SEGMENT y ENDS: Definen los segmentos a utilizar.
cfi_startproc:Se utiliza antes de cualquier función que tenga alguna entrada de datos.
Call:Llama a alguna acción próxima a realizarse


Programa de matriz en ensamblador optimizado
Despues de una larga revision de las cosas que eran realmente necesarias y las cuales no lo eran se lograron eliminar 54 lineas de codigo terminando con el siguiente codigo mas limpio y corto.



Por ultimo podemos ver que el programa despues de ser optimizado ejecuta de la misma forma que antes.


Referencias:
http://es.kioskea.net/faq/3284-compilar-un-programa-ensamblador-con-nasm
http://iie.fing.edu.uy/~vagonbar/gcc-make/gcc.htm

1 comentario:

  1. Esa getch() al final es una sonsera windows para que no cierre el terminal al terminar de ejecutar. No me quedo enteramente convencida que sepas el significado de cada línea de assembler generado... Te voy a poner 8 por el programa y 8 por el reporte por ahora; si quieres más, puedes mejorar el reporte, agregado algo de explicación del assembler o presentarlo bien en persona.

    ResponderEliminar