Archive for julio, 2010

julio 29, 2010

Saludando al mundo con Ensamblador

por Josue Ortega

La semana pasada me dejaron una tarea introductoria al lenguaje ensamblador que consistía en explicar como se hace el famoso programa de «hola mundo». Asi que decidí subir el «how to» por que me gusto como quedo :P.
El «how» to esta escrito para ser compilado con GAS en la arquitectura IA-32 bueno aquí les va:

Para poder programar en lenguaje ensamblador en nuestro sistema operativo
gnu/linux necesitamos tener instalados GNU Binutils, en el cual estan contenidos
el compilador de ensamblador:as y el linker: ld.
Ya que tenemos instalado el binutils, ya podemos trabajar y hacer nuestros
programas en lenguaje ensamblador.
A continuación imprimiremos en pantalla “Hola Mundo” en ensamblador y lo
compilaremos con GAS.
El código es :

.text
.global _start
_start:
movl $len,%edx
movl $msg,%ecx
movl $1,%ebx
movl $4,%eax
int $0x80
movl $0,%ebx
movl $1,%eax
int $0x80
.data
msg:.ascii"hola mundo"
len=15

A continuación una breve explicacion de cada linea del codigo anterior:
Como se puede notar las directivas van antecedidas por un punto “.”.
Directiva text:
Esta directiva indica donde es el inicio de codigo en el arhivo .as
Directiva global:
Con esta directiva se indica que la etiqueta “_start” es visible para todas las
partes del programa.
Directiva data:
En esta sección se declaran las variables inicializadas, como en este caso la
variable msg que se especifica que es de tipo ascii y su contenido es la cadena
“hola mundo”.
También la variable len que se le asigna el numero 15.
_start: indica donde inicia el programa
A continuación detallare la acción de las lineas de código

movl $len,%edx # mueve el contenido de len al registro edx
movl $msg,%ecx #mueve el contenido de msg a el registro ecx
movl $1,%ebx #coloca el valor de 1 al registro ebx
movl $4,%eax #coloca el valor de 4 al registro eax
int $0x80 #hace la llamada al sistema para kernel mode
movl $0,%ebx #coloca el valor de 0 en el registro ebx
movl $1,%eax #coloca el valor de 1 en el registro eax
int $0x80# llamada al sistema para kernel mode

Básicamente lo que el código anterior hace es mandar de parámetros al kernel el
contenido de los registros para que las acciones correspondientes sean
ejecutadas.
En el registro eax se debe posicionar el codigo de la llamada al sistema que
deseamos ejecutar, en este caso para write, es el numero 4.
En el registro ebx se coloca el codigo de la llamada al sistema para la accion
que se debe realizar despues de imprimir en pantalla, en este caso 1 para que
salga.
En el registro ecx se coloca el valor del mensaje y en el edx el tamaño de la
cadena. El write en un HLL se veria: write(salir, mensaje, len)
Para salir del programa se coloca 0 en el registro ebx y 1 en el eax, y de
ultimo se hace la llamada al sistema.
Compilar el Archivo:
Para compilar el archivo se utiliza el comando as con el parametro -o que genera
una salida con extension .o que contiene codigo objeto.

    as -o hola.o hola.as

Linkear el archivo:
Una vez compilado y con nuestro archivo con codigo objeto necesitamos linkear
nuestro archivo para crear un ejecutable con todas las librerias necesarias

ld -s -o hola hola.o

Una vez creado el ejectable, nuestro programa ya esta listo para correr:

./hola

Y finalmente el output

josue@desktop:~/assembler$ ./hola
hola mundo
Anuncio publicitario
julio 10, 2010

Converciencia 2010

por Josue Ortega

Este 26 de julio arranca Converciencia 2010, un evento organizado por CONCYT, el cual tiene por objetivo que la sociedad guatemalteca conozca proyectos de Cientificos guatemaltecos que trabajan en investigacion tanto dentro como fuera de las fronteras de Guatemala.

El año pasado lamentablemente solo pude a asistir a una conferencia que fue impartida por el Dr. Quevedo, «Dimensiones Extra Exponencialmente Grandes» fue la unica que pude asistir debido a los estudios en la Universidad y la conferencia se llevo a cabo en el campus.

Esperando poder participar más este año aqui dejo la informacion del evento y su respectivo flyer 😉

En 2005 se llevó a cabo la primera edición de CONVERCIENCIA, que es un encuentro, en Guatemala, de científicos nacionales que trabajan en investigación fuera el país. Con esto se busca lograr varios objetivos:

• Interesar y estimular a jóvenes estudiantes de secundaria y de universidad, en el trabajo de investigación y en la ciencia en general.

• Hacer patente, ante diferentes sectores (académico, privado y público), así como al público en general, la necesidad y la urgencia de desarrollar la ciencia y la investigación en Guatemala, para alcanzar el bienestar que todos anhelamos.

• Dar a conocer el importante y apasionante trabajo que realizan en sus laboratorios, así como lo que está ocurriendo en la frontera del conocimiento en otros países.

• Dar a conocer que en Guatemala se forman profesionales de alto valor y capacidad, reconocidos internacionalmente, y que es necesario que el país genere los espacios y oportunidades para que, en el futuro, las personas que estén en ese caso, puedan permanecer en Guatemala y dar su valioso aporte al desarrollo científico, económico y social.

• Propiciar un intercambio de los científicos visitantes, con sus pares residentes en el país.

• Mantener activa la Red Internacional de Científicos Guatemaltecos, en la que participen todos los investigadores nacionales, tanto los que radican en el país, como quienes trabajan en el exterior.

• Recibir ideas para desarrollar con éxito algunas de las actividades del Plan Nacional de Ciencia, Tecnología e Innovación 2005-2015

El programa incluye conferencias y talleres ofrecidos por los científicos visitantes, sobre temas de ciencia, dirigidos a estudiantes y a público en general e intercambio de científicos visitantes con investigadores que radican en Guatemala.

En 2005, primer año en que se celebró CONVERCIENCIA, vinieron a Guatemala once doctores, científicos que hacen investigación en diferentes países. En los años subsiguientes, hasta la fecha, han participado 43 científicos guatemaltecos, que no solamente han presentado conferencias y propuestas de investigaciones y proyectos, sino que han promovido el establecimiento de importantes programas de cooperación con los científicos locales, especialmente en el campo de la formación de recursos humanos de alto nivel.

julio 9, 2010

En menos de 3 minutos, ¿Qué es Software Libre?

por Josue Ortega

Ya que llegaron las anheladas vacaciones, estoy de vuelta en el blog :), y hoy me encontré con un vídeo, en el cual se explica el Software Libre en menos de 3 minutos. Ideal para aquellos que no tienen idea de que es el Software Libre, y para los que ya sabemos lo que es nos da ideas de como explicarlo a las demas personas,

Les dejo el vídeo

: