0% encontró este documento útil (0 votos)
3 vistas5 páginas

Programa Array

Cargado por

Sheily Borja
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)
3 vistas5 páginas

Programa Array

Cargado por

Sheily Borja
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
Está en la página 1/ 5

FACULTAD DE INDUSTRIAS AGROPECUARIAS Y CIENCIAS

AMBIENTALES
CARRERA DE COMPUTACIÓN
DATOS INFORMATIVOS:
DOCENTE: MSc. Jiménez Stalin
PERÍODO ACADÉMICO: PAO 2024A
NIVEL: tercero

FECHA: 02/06/2024
INTEGRANTES: Oliva Tutalchá María José

PRÁCTICA N°: 4

TEMA: Suma de Números en un Array


INTRODUCCIÓN:

El lenguaje ensamblador es un lenguaje de bajo nivel que proporciona un


control precioso sobre el hardware de una computadora. A diferencia de los
lenguajes de alto nivel, como C+ o Java, en esta practica vamos a escribir
un programa en ensamblador para una arquitectura que calcule la suma de
los elementos de un array de números enteros almacenaos en la memoria.
Este tipo de programas es útil para comprender somo se maneja los datos de
nivel de hardware y como se realizan operaciones básicas utilizando los
registros del procesador.

OBJETIVOS DEL PROGRAMA:


1. El programa debe contener un array de números enteros en
la sección de datos.

2. Utilizar los registros del procesador para recorrer cada


elemento del array.
3. Guardar los resultados de la suma en un registro específico y
finalizar el programa.

Detalles del Programa

- Array de Números Enteros: El array contiene cinco elementos


de 32 bits (DWORDs).

- Uso de Registros: Los registros eax, ecx y esi se utilizan para


realizar operaciones de suma y control del bucle.

- Bucle de Suma: Se emplea un bucle para iterar a través de


cada elemento del array y acumular la suma.

- Salida del Programa: Al finalizar, el programa almacena el


resultado de la suma en el registro eax y termina con una
llamada al sistema para salir.

DESARROLLO:

Código array

section .data
; Definición del array de 5 elementos (DWORDs)
array dd 10, 20, 30, 40, 50 ; Array con 5 elementos

section .bss
; Sección de datos no inicializados (no se requiere para este programa)

section .text
global _start

_start:
; Inicializar registros
mov ecx, 5 ; Número de elementos en el array
mov esi, array ; Puntero al inicio del array
xor eax, eax ; Limpiar registro eax para usarlo como acumulador (sum)

sum_loop:
; Sumar cada elemento del array
add eax, [esi] ; Sumar el valor apuntado por esi a eax
add esi, 4 ; Mover el puntero al siguiente elemento (DWORD = 4
bytes)
loop sum_loop ; Decrementar ecx y saltar a sum_loop si ecx no es cero

; Resultado de la suma está en eax

; Salida del programa (exit)


mov ebx, eax ; Pasar el resultado (suma) a ebx (valor de salida)
mov eax, 1 ; Código de salida del sistema (sys_exit)
int 0x80 ; Llamada al sistema (interrupción 0x80)

; Nota: El código de salida (ebx) puede ser usado por el sistema operativo

Explicación del Código


1- Sección de Datos (section .data):

- array dd 10, 20, 30, 40, 50 define un array de 5 elementos DWORD (32
bits) con valores predefinidos.
2- Sección de Texto (section .text):

- global _start indica el punto de entrada del programa.


3- Inicialización de Registros:
- mov ecx, 5 carga el número de elementos del array en el registro ecx.
- mov esi, array carga la dirección del inicio del array en el registro esi.
- xor eax, eax limpia el registro eax para usarlo como acumulador de la
suma.
4- Bucle de Suma (sum_loop):

- add eax, [esi] suma el valor en la dirección apuntada por esi al registro
eax.
- add esi, 4 incrementa esi para apuntar al siguiente elemento del array.
- loop sum_loop decrementa ecx y repite el bucle si ecx no es cero.
5- Salida del Programa:

- mov ebx, eax pasa el resultado de la suma al registro ebx.


- mov eax, 1 establece el código de salida del sistema en eax (1 para
sys_exit).
- int 0x80 realiza la llamada al sistema para salir del programa.

Este programa recorrerá el array, sumará sus elementos y almacenará el


resultado en el registro eax. La suma total se pasa luego al registro ebx antes
de salir del programa, permitiendo que el valor de salida sea verificado por
el sistema operativo.
CONCLUSIONES:

1- Este ejercicio proporciona una base sólida para la


programación a nivel de hardware y entender los
fundamentos del funcionamiento interno de un procesador.

2- El ejercicio nos muestra como manipular datos a nivel de


hardware, sino que también refuerza la importancia de
entender las operaciones básicas de bajo nivel.

3- Los programas en ensamblador pueden ser mas eficientes en


el uso de recursos del sistema ya que permiten una gestión
directa y optimizable de los registros y la memoria.

BIBLIOGRAFÍA:

- De Lobos, M. E. (2010). Aprende a programar. Disponible en URL:


http://www. mailxmail. com/curso-aprende-programar/tipos-
estructuras-programacion-estructuras-basicas-secuencial. Consultado:
febrero, 24.

- Mano, M. M. (1994). Arquitectura de computadoras. Pearson


Educación.
- Medina, R. (1992). Programación Avanzada en Lenguaje Ensamblador.

También podría gustarte