Instrucciones:
1.- Revisa los apuntes, así como las lecturas sugeridas del bloque.
2.- Revisa el archivo de apoyo.
3.- Analiza el código que contiene el archivo de apoyo.
4.- Ejecuta el programa en el compilador en línea: https://www.jdoodle.com/compile-
assembler-nasm-online/ y analiza los resultados.
5.- Realiza un reporte que incluya los siguientes elementos:
a) Un análisis detallado que incluya la descripción del problema propuesto, la
identificación de los procedimientos necesarios o técnicas (explicación del
código utilizado para el desarrollo del programa en ensamblador) que se
requieren para encontrar la solución del problema propuesto, los datos
considerados esenciales para resolver el problema.
b) El procedimiento realizado que incluya las técnicas o metodologías
empleadas que resuelven el problema propuesto (incluyendo capturas de
pantalla), seguir un orden congruente del manejo de los datos para hallar la
solución de forma clara.
c) Los resultados obtenidos de forma clara incluyendo los datos esenciales y
la manera en que se obtuvieron.
6.- Sube tu evidencia de aprendizaje en el espacio indicado en la plataforma.
7.- Revisa el instrumento de evaluación para conocer los aspectos que te serán
evaluados.
5.- Realiza un reporte que incluya los siguientes elementos:
a) Un análisis detallado que incluya la descripción del problema propuesto, la
identificación de los procedimientos necesarios o técnicas (explicación del
código utilizado para el desarrollo del programa en ensamblador) que se
requieren para encontrar la solución del problema propuesto, los datos
considerados esenciales para resolver el problema.
b) El procedimiento realizado que incluya las técnicas o metodologías
empleadas que resuelven el problema propuesto (incluyendo capturas de
pantalla), seguir un orden congruente del manejo de los datos para hallar la
solución de forma clara.
c) Los resultados obtenidos de forma clara incluyendo los datos esenciales y
la manera en que se obtuvieron.
Primero. Se solicitó usar el siguiente código del archivo de apoyo y ejecutarlo en el
compilador https://www.jdoodle.com/compile-assembler-nasm-online/.
section .data
ingresoa db 10,'Número 1: '
len_a equ $ - ingresoa
ingresob db 10,'Numero 2: '
len_b equ $ - ingresob
resultado db 10,'Suma: '
len equ $ - resultado
section .bss
a resb 1
b resb 1
suma resb 1
section .text
global _start
_start:
; Imprimimos en pantalla el mensaje 2
mov eax, 4
mov ebx, 1
mov ecx, ingresoa
mov edx, len_a
int 80h
; Obtenemos el numero 1
mov eax, 3
mov ebx, 0
mov ecx, a
mov edx, 2
int 80h
; Imprimimos en pantalla el mensaje 3
mov eax, 4
mov ebx, 1
mov ecx, ingresob
mov edx, len_b
int 80h
; Obtenemos el numero 2
mov eax, 3
mov ebx, 0
mov ecx, b
mov edx, 2
int 80h
mov ax,[a]
mov bx,[b]
sub ax,'0'
sub bx,'0'
add ax,bx
add ax,'0'
mov [suma],ax
mov eax,4
mov ebx,1
mov ecx,resultado
mov edx,len
int 80h
mov eax,4
mov ebx,1
mov ecx,suma
mov edx,1
int 80h
Este código permite al usuario ingresar dos números, realizar la suma de dichos
números y mostrar el resultado en pantalla.
Utiliza las siguientes instrucciones:
1.- mov: Transfiere datos entre registros, memoria y constantes.
2.- int 80h: Realiza llamadas al sistema en Linux para interactuar con el
kernel. Se utiliza con diferentes valores en eax para escribir en la consola
(sys_write) y leer datos del teclado (sys_read).
3.- sub y add: Realizan operaciones aritméticas, como la conversión de ASCII
a valores numéricos y la suma de los números ingresados.
4.- db y resb: Definen datos estáticos y reservan memoria para variables en
las secciones .data y .bss.
Segundo. El programa está dividido en tres secciones principales:
1. Sección .data: Contiene los mensajes predefinidos y sus longitudes:
Ingreso a: Mensaje que solicita el primer número.
Ingreso b: Mensaje que solicita el segundo número.
resultado: Mensaje que indica el resultado de la suma.
2. Sección .bss: Define las variables para almacenar:
Los números ingresados (a y b).
El resultado de la suma (suma).
3. Sección .text: Contiene las instrucciones para ejecutar el programa:
Mostrar mensajes en pantalla.
Leer los números desde el teclado.
Convertir y sumar los números.
Mostrar el resultado en pantalla.
Tercero. Descripción del problema: El programa permite al usuario ingresar dos
números, sumarlos y mostrar el resultado en pantalla. Este proceso requiere gestionar
entradas y salidas mediante llamadas al sistema y realizar operaciones aritméticas en
registros estos son los procedimientos necesarios:
1. Capturar datos desde el teclado.
2. Convertir caracteres ASCII a valores numéricos.
3. Realizar la suma aritmética en registros.
4. Convertir el resultado numérico a formato ASCII.
5. Mostrar el mensaje de salida y el resultado.
Cuarto. Procedimiento Realizado:
Inicialización: Se preparan los mensajes y las variables necesarias en las
secciones .data y .bss.
Mostrar el primer mensaje: Con sys_write (int 80h y eax = 4), se muestra el
mensaje que solicita al usuario el primer número.
Leer el primer número: Con sys_read (int 80h y eax = 3), se captura el número
ingresado desde el teclado y se almacena en la variable a.
Mostrar el segundo mensaje: Con sys_write (int 80h y eax = 4), se muestra el
mensaje que solicita al usuario el segundo número.
Leer el segundo número: Con sys_read (int 80h y eax = 3), se captura el
número ingresado desde el teclado y se almacena en la variable b.
Realizar la suma:
o Los valores ASCII se convierten a números restando el código ASCII de
'0'.
o Se suman los valores numéricos en los registros ax y bx.
o El resultado se convierte nuevamente a formato ASCII sumando el código
ASCII de '0'.
Mostrar el resultado: Se utiliza sys_write para mostrar el mensaje de resultado y
el valor calculado.
Resultado al compilar el código en https://www.jdoodle.com/compile-assembler-nasm-
online.
Conclusión.
El código propuesto nos muestra el uso de llamadas al sistema en ensamblador para
solicitar entradas, realizar operaciones aritméticas y mostrar resultados. La estructura
clara y eficiente demuestra cómo ensamblador permite sumar dos números y mostrar en
pantalla el resultado de manera precisa.
Bibliografía.
Abel, Peter. (2001). “Escritura de macros” en Lenguaje ensamblador y programación
para PC IBM y compatibles. México: Prentice-Hall, pp. 393-410.
Material compilado con fines académicos, se prohíbe su reproducción total o parcial
sin la autorización de cada autor.
Dirty Code. (2021, marzo 12). Curso Ensamblador 20 [Video]. YouTube.
https://www.youtube.com/watch?v=Dl72XrHum7c