Вы находитесь на странице: 1из 20

TÍTULO

Codificación ensamblador y programas de aplicación ensamblador: suma y


promedio, ordenamiento de 4 y 10 números
CRÉDITOS
Espinoza Garcia Brayan (20140519).
Escuela Profesional de Ingeniería Electrónica-UNSA
Huillca Nuñez Freddy (20121577).
Escuela Profesional de Ingeniería Electrónica-UNSA
Turpo Condori Danny (20143100).
Escuela Profesional de Ingeniería Electrónica-UNSA
RESUMEN
En el presente paper mostraremos la manera de realizar programas de suma
promedio y ordenamiento de 5 y 10 números en lenguaje ensamblador. Para
esta utilizaremos el program debug y también el programa emu8086.
ABSTRACT
In this document we will show how to perform the average addition and ordering
programs of 5 and 10 numbers in the assembly language. To see the debug program
and also the program emu8086.
PALABRAS CLAVE
Ensamblador – Metodo burbuja – Emu8086 - Debug
INTRODUCCIÓN
En este proyecto utilizaremos los programas emu8086 y debug para poder realizar
los programas de suma y promedio y ordenamiento. Para poder realizar el programa
de suma y promedio utilizaremos las instrucciones add y div. Mientras que para el
programa de ordenamiento utilizaremos el método burbuja.
Cuando utilicemos el programa emu8086 veremos lo que son la creación de
vectores y además aprenderemos a utilizar la librera emu8086.inc.
PROGRAMA DEBUG
SUMA PROMEDIO CINCO NÚMEROS
El programa que realizamos en debug nos permite sumar los valores de las direcciones
0200h, 0201h, 0202h, 0203h, 0204h y almacenar la suma en la dirección 0205h y el
promedio en la dirección 0206h.
DIAGRAMA DE FLUJO

Para esto se realizaron los siguientes pasos:


Inicializando el programa debug mediante DOSBox:
Insertando valores (01, 02, 03, 04, 01) en la dirección 0200h, 0201h, 0202h, 0203h,
0204h de la memoria:

Programa en Debug:
Para insertar el código se utilizó el comando a.

Compilando:
Para copilar el programa se utilizó el comando u.

Resultado final
Verificamos que el puntero de programa este en 0100
Corremos con el comando t 100 y verificamos nuestro resultado con el comando d:

Como vimos la suma de los valores es 0Bh lo cual es 11 en sistema decimal y está
almacenado en la posición 0205h.
También podemos observar que el promedio es 02 en decimal y hexadecimal y que además
está almacenado en la posición 0206h como habíamos indicado.
SUMA PROMEDIO DIEZ NÚMEROS
A continuación mostramos el programa empleado para la suma y promedio de 10 números:
Insertando valores a sumar

Código empleado
Resultado:

Como vimos la suma de los valores es 18h lo cual es 24 en sistema decimal y está
almacenado en la posición 020Ah.
También podemos observar que el promedio es 02 en decimal y hexadecimal y que además
está almacenado en la posición 020Bh como habíamos indicado.
PROGRAMA EMU8086
SUMA PROMEDIO CINCO NÚMEROS
A continuación presentamos el diagrama de flujo del código que utilizaremos el programa
Emu8086, el cual nos permite realizar aplicaciones más complejas para el lenguaje
ensamblador.
Las funciones que se utilizaron para la elaboración de este programa son:
 INT16h: Interrupción por teclado.
 ADD: Permite sumar registros.
 MOV: Mover el valor de memoria/ registro a memoria/registro.
 DIV: Dividir registro al entre el registro cl.
 INT21h: Permite llamar a la pantalla de comandos CMD.
 CALL: Permite llamar procedimientos.
 ADD: Permite sumar entre registros.

Funciones añadidas por la librería emu8086.inc

 PRINT ” ”: Permite mostrar textos en la ventana de comandos.


 PRINT_NUM: Permite imprimir el número almacenado en Ax.
 SCAN_NUM: Permite identificar el número que se ha ingresado a la pantalla de comandos
y lo almacena en Cl.
DIAGRAMA DE FLUJO:
A continuación presentamos el diagrama de flujo del programa, el cual explica la lógica
empleada y que puede aplicarse a la suma y promedio de n números.
CODIGO ENSAMBLADOR
A continuación pasaremos a mostrar el código en lenguaje ensamblador:

NOTAS:

 Se crea un vector “Suma” con los números ingresados.


 La división para hallar el promedio se realiza en la línea 14 (div cl).
SIMULACIÓN DEBUG

El programa nos abrirá una ventana CMD, la cual nos pedirá que ingresemos los cinco números. Una
vez terminado de ejecutarse nos devolverá la suma y el promedio de estos números.

Como vemos simulamos con los mismos valores que utilizamos en el programa hecho en Debug y
obtuvimos los mismos resultados.
SUMA PROMEDIO DIEZ NÚMEROS
Utilizando la lógica anterior pasaremos a mostrar el código de suma y promedio para diez
números.
SIMULACION EN EMU8086

Como podemos observar tenemos los mismos resultados que los obtenidos con el programa
empleado en Debug.

PROGRAMA ORDENAMIENTO

El presente programa se basa en el algoritmo burbuja, el cual mostraremos a continuación:

ALGORTMO BURBUJA
Este método consiste en acomodar el vector moviendo el mayor hasta la última casilla
y comenzando desde la casilla cero del vector hasta haber acomodado el número más
grande en la última posición.
Una vez acomodado el más grande, prosigue a encontrar y acomodar el siguiente más
grande comparando de nuevo los números desde el inicio del vector, y así sigue hasta
ordenar todo los elementos el arreglo.
Una manera simple de expresar el ordenamiento de burbuja en pseudocódigo es la
siguiente:
Es basado en este algoritmo que procedimos a armar nuestro código, el cual tiene como
finalidad devolvernos los numero entregados debidamente ordenados de mayor a menor.

LISTADO DE INSTRUCCIONES UTILIZADAS


PROGRAMA DEBUG

PROGRAMA ORDENAMIENTO 5 NÚMEROS

Basados en el método burbuja pasaremos a mostrar un programa que realiza el ordenamiento de


5 números.

Ingresando datos a memoria

Ingresando código mediante el comando a


Copilando código

Resultados

Verificando que el puntero de programa este en 0106 que es donde inicia nuestro programa
Antes

Después

PROGRAMA ORDENAMIENTO 10 NÚMEROS

Este programa también fue realizado utilizando el método de ordenamiento burbuja

Ingresando datos a memoria

Copilando código
Resultados

Antes:

Después:
Se puede observar que ambos programas son iguales, solo varían el número de iteraciones del
bucle que compara los valores de los casilleros de memoria.

PROGRANA EMU8086

Para poder realizar el programa de ordenamiento en emu8086 procedimos a crear un vector de n


elementos, los cuales serán ordenados mediante nuestro programa y serán mostrados en una
pantalla mediante una interrupción de DOS.

ORDENAMIENTO 5 NÚMEROS

Para realizar el ordenado de 5 números se utilizaron, además de las antes mencionadas, las
siguientes instrucciones:

IDENTIFICACION LAS INTRUCCIONES UTILIZADAS

 INT16h: Interrupción de teclado


 INT21h: Permite llamar a la pantalla de comandos CMD.
 CMP: Compara dos valores mediante resta.
 LOOP: Crea un loop que tiene como contador a Cx.
 JNGE: Salto si menor
 DIV: Divide el registro Ax y el resultado lo almacena en Ax.
 CALL: Permite llamar procedimientos.
 ADD: Permite sumar entre registros.

FUNCIONES AÑADIDAS POR EMU8086.INC

 PRINT ”_”: Permite mostrar textos en la ventana de comandos.


 PRINT_NUM: Permite imprimir el numero almacenado en Ax.
 SCAN_NUM: Permite identificar el número que se ha ingresado a la pantalla de comandos
y lo almacena en Cl.

A continuación pasaremos a mostrar el código que realizamos en el programa emu8086


SIMULACIÓN DEBUG

El programa al iniciarse nos pedirá que ingresemos cinco números, luego este los ordenara y nos
retornara los números de menor a mayor.

Como podemos observar tenemos el mismo resultado que el que obtuvimos utilizando el programa
debug.

ORDENAMIENTO 10 NÚMEROS

A continuación pasaremos a mostrar el código empleado para el ordenamiento de 10 números. Es


importante aclarar que este es el mismo utilizado anteriormente, solo que se ha variado el número
de iteraciones del bucle.
SIMULACIÓN DEBUG

El programa al iniciarse nos pedirá que ingresemos cinco números, luego este los ordenara y nos
retornara los números de menor a mayor.

Como podemos observar tenemos el mismo resultado que el que obtuvimos utilizando el programa
debug.

Вам также может понравиться