6 de marzo de 2012

Tarea: Lenguaje Ensamblador

Cómputo Integrado
Tarea Intro

Definición


"El lenguaje ensamblador es un lenguaje de programación de bajo nivel para los computadores, microprocesadores, microcontroladores, y otros circuitos integrados programables."

Un programa utilitario llamado ensamblador es usado para traducir las líneas del lenguaje ensamblador al código de máquina de la computadora en que se trabaja. El ensamblador realiza una traducción más o menos isomorfa desde las líneas hasta las instrucciones y datos de máquina.

Características principales del lenguaje ensamblador:
  • Existe una cierta dificultad de entender el código ya que es muy cercano al lenguaje máquina.
  • Tiene poca portabilidad, ya que depende del microprocesador.
  • Códigos bien estructurados suelen ser más rápidos y suelen usar menor memoria.

Ejemplo sencillo


Como la mayoría de mis compañeros, yo también hice primero algunas pruebas de ejemplos muy pequeños de código en C, para después pasarlos a ensamblador y ver el código que se generaba.

Y como normalmente hacemos todos, me dispuse a hacer el "Hola Mundo".


Después de haber generado el código en C, lo primero que hice fue probar si funcionaba correctamente, por lo tanto lo compile, como ya todos sabemos, de la siguiente forma.
esteban@presario:~/Documents/ensamblador$ gcc hola.c -o hola
Y luego ejecute para ver la impresión.
esteban@presario:~/Documents/ensamblador$ ./hola
Hola Mundo!
esteban@presario:~/Documents/ensamblador$
Ahora que ya sabía que si hacía lo que debía, pase el código de C a ensamblador desde la terminal.
esteban@presario:~/Documents/ensamblador$ gcc -S hola.c
Lo cual generó el siguiente archivo con lenguaje en ensablador.


Y así como este ejemplo anterior probé con algunos otros más, y puse el anterior para explicar de alguna forma como obtener el código ensamblador.

Programa un poco más complejo


Desde hace mucho que ya tenía pensado hacer mi tarea del programa en C para obtener el factorial, cuando le di un vistazo a los demás blogs vi que Juan Carlos ya había hecho el factorial, aunque el lo hizo en forma recursiva, también Pedro Miguel hizo el ejemplo del factorial, pero aproveche que nuestro código en C no era el mismo para poder hacer también el mio del factorial, él usaba iteraciones diferentes y condiciones que que yo no necesite, por lo que considere que era suficientemente diferente como para que no fuera a ser tomado como copia.

El siguiente es el código que cree en C.


Luego con lo siguiente, pase el código a ensamblador.
esteban@presario:~/Documents/ensamblador$ gcc -S fact.c
Y me generó lo siguiente.


El código tiene 57 líneas para obtener el resultado del factorial, y el siguiente es el código minimizado a 41 líneas. Ahí mismo deje los comentarios que explican cada línea.


Luego lo siguiente.
esteban@presario:~/Documents/ensamblador$ gcc factorial.s -o factorial
esteban@presario:~/Documents/ensamblador$ ./factorial
Numero: 5
Factorial: 120
esteban@presario:~/Documents/ensamblador$ ./factorial
Numero: 7
Factorial: 5040
esteban@presario:~/Documents/ensamblador$ 

Y eso fue lo que hice como tarea de ensamblador, pero para completar un poco más, hice un programa que es sencillo, pero empece desde cero y sin necesidad de crear primero el código en C.

Programa que empecé desde cero

Este programa lo que hace al momento de ejecutarse, es pedirte un valor, la cual estaba pensando en que se ingrese una calificación de entre 0 y 100, y si es mayor o igual a 70 te dice "Vamos bien" y si es menor a 70 te dice "El payaso viene por ti".



No puse los comentarios de este último código en ensamblador, pero espero poder explicarlo en clase.

Documentos y páginas consultadas
Explicación de las directivas
Tabla de referencia de instrucciones en ensamblador
Lenguaje ensamblador

1 comentario:

Nota: solo los miembros de este blog pueden publicar comentarios.