0% encontró este documento útil (0 votos)
46 vistas6 páginas

Programación en Ensamblador: "Hello, World!"

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
46 vistas6 páginas

Programación en Ensamblador: "Hello, World!"

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

NOMBRE: MARCO ANTONIO DE JESÚS MARQUINA

MATRICULA: 178859

GRUPO: K119

MATERIA: (15) ESTRUCTURAS EN LENGUAJE


ENSAMBLADOR

DOCENTE: EDUARDO BERRA VILLASEÑOR

NUMERO Y TEMA DE ACTIVIDAD: 2.- PROGRAMACIÓN EN


ENSAMBLADOR

SAN PEDRO CHOLULA, PUEBLA, 17 DE JUNIO DEL 2024

1
Introducción

En este reporte podremos ver de forma detallada el desarrollo de un programa


escrito en lenguaje ensamblador que tiene como objetivo imprimir: "Hello, world!" en la
consola.

A través de un análisis exhaustivo de las instrucciones empleadas, la estructura del


programa, y los procedimientos utilizados, se ofrece una visión completa del proceso de
programación en ensamblador.

Se identifican las técnicas necesarias para resolver el problema propuesto, así como
los datos esenciales considerados para su implementación.

Instrucciones del Programa

1. section .text: Esta línea especifica la sección de código del programa.


2. global _start: Indica que _start es el punto de entrada del programa y que es
global, lo que permite que el enlazador pueda encontrarlo.
3. _start: Etiqueta que marca el comienzo del código ejecutable.
4. mov edx, len: Mueve la longitud del mensaje a edx. len es una etiqueta definida
más adelante que representa la longitud de la cadena de caracteres.
5. mov ecx, msg: Mueve la dirección de memoria donde comienza la cadena de
caracteres a ecx. msg es una etiqueta definida más adelante que representa la
cadena de caracteres que se imprimirá.
6. mov ebx, 1: Mueve el descriptor del archivo stdout (salida estándar) a ebx. Este
descriptor indica que el mensaje se imprimirá en la consola.
7. mov eax, 4: Mueve el número de la llamada al sistema para la función sys_write a
eax. Esta función se encarga de escribir datos en un archivo.
8. int 0x80: Realiza una llamada al kernel para ejecutar la función sys_write, que
imprime el mensaje en la consola.
9. mov eax, 1: Mueve el número de la llamada al sistema para la función sys_exit a
eax. Esta función indica al sistema operativo que el programa ha terminado y
devuelve un valor de salida.
10. int 0x80: Realiza una llamada al kernel para ejecutar la función sys_exit,
terminando el programa.
11. section .data: Esta línea especifica la sección de datos del programa.
12. msg db 'Hello, world!',0xa: Define la cadena de caracteres que se imprimirá. db
significa "define byte". La cadena de caracteres es: "Hello, world!" seguido de un
carácter de nueva línea (0xa en hexadecimal).
13. len equ $ - msg: Define una constante llamada len que representa la longitud de
la cadena de caracteres. $ representa la dirección actual en el ensamblador.
Entonces, $ - msg calcula la diferencia entre la dirección actual y la dirección
donde comienza la cadena msg, que equivale a la longitud de la cadena.

2
Estructura del Programa

El programa sigue una estructura organizada, dividida en dos secciones claramente


definidas: ".text" y ".data". La sección ".text" alberga el código ejecutable, siendo
encabezada por la etiqueta "_start" que señala el inicio de la ejecución del programa.

Aquí es donde se llevan a cabo las operaciones necesarias para imprimir: "Hello,
world!" en la consola, utilizando llamadas al sistema para escribir en la salida estándar y
para finalizar la ejecución del programa.

Por otro lado, en la sección ".data" se define la cadena de caracteres a imprimir,


etiquetada como "msg", y se calcula su longitud, proporcionando así los datos esenciales
para la correcta ejecución del programa.

3
Análisis del Programa

El problema propuesto es imprimir el mensaje: “Hello, world!” en la consola. Para


resolver este problema, el programa necesita:

• Un lugar para almacenar el mensaje: Esto se logra con la variable msg en la


section .data.
• Una forma de escribir el mensaje en la consola: Esto se logra con la llamada al
sistema sys_write, que es invocada con la interrupción int 0x80.

Procedimiento Realizado

El programa sigue los siguientes pasos para resolver el problema:

1. Se define la cadena de caracteres a imprimir y se calcula su longitud en la sección


de datos.
2. En la sección de texto, se mueve la longitud del mensaje y la dirección de memoria
donde comienza la cadena de caracteres a los registros adecuados.
3. Se realiza una llamada al sistema para escribir la cadena en la salida estándar.
4. Se realiza una llamada al sistema para salir del programa.

Resultados Obtenidos

El resultado del programa es la impresión del mensaje: “Hello, world!” en la consola.


Este resultado se obtiene mediante la llamada al sistema sys_write, que escribe el mensaje
en la salida estándar. La longitud del mensaje y un puntero al mensaje son pasados a
sys_write a través de los registros edx y ecx, respectivamente.

Conclusión

El "¡Hola, mundo!" El mensaje se imprime en la salida estándar (stdout) como parte


del ejercicio de programación del ensamblador modificado que completa. Luego daré un
análisis sucinto del código y la experiencia.

El código que proporcionó es una excelente ilustración de cómo imprimir un mensaje


en la pantalla mediante una llamada al sistema en un programa ensamblador.

Aunque puede parecer sencillo, este programa cubre una serie de conceptos
esenciales de programación ensambladora y proporciona información útil sobre cómo
interactuar con el sistema operativo y el hardware a un nivel muy básico.

La programación ensambladora se distingue por el uso de registros como eax, ebx,


ecx y edx para pasar parámetros y realizar llamadas al sistema.

4
El sistema operativo y el programa intercambian información a través de estos
registros, que están inextricablemente vinculados a la arquitectura de la CPU.

La cadena que se imprimirá está definida por la línea msg db "¡Hola, mundo!", 0xa,
que también agrega un nuevo carácter de línea (0xa) al final para garantizar el formato
adecuado.

El aspecto más interesante de esta actividad es cómo una cantidad tan pequeña de
código puede afectar directamente la ejecución del sistema.

Ejecutar el programa y ver el resultado "¡Hola mundo!" es un ejemplo de cómo la


programación de ensamblaje está conectada con la interacción de software y hardware.

A través de esta actividad también se obtiene una comprensión más profunda de la


efectividad y el control del lenguaje ensamblador sobre el hardware de la computadora.

Aunque escribir y comprender programas en ensamblador puede ser difícil al


principio, cualquier persona que desee comprender completamente cómo funcionan los
sistemas informáticos descubrirá que trabajar en este nivel de bajo nivel es una experiencia
valiosa.

En resumen, la programación ensambladora es una habilidad especializada pero


potente que proporciona una comprensión clara de cómo interactúan el software y el
hardware. Has tenido la oportunidad de experimentar estas ideas básicas de forma útil
gracias a esta actividad.

5
Bibliografía

Abel, Peter. (2001). “Instrucciones y direccionamiento del procesador” en Lenguaje


ensamblador y programación para PC IBM y compatibles. México: Prentice-Hall, pp. 88-
101.

Abel, Peter. (2001). “Áreas de datos e interrupciones del BIOS” en Lenguaje ensamblador
y programación para PC IBM y compatibles. México: Prentice-Hall, pp. 469-475.

También podría gustarte