Você está na página 1de 9

Repblica Bolivariana de Venezuela

Ministerio del poder popular para la Educacin Superior


Universidad de Carabobo
Facultad Experimental de Ciencias y Tecnologa






























Arquitectura del Computador Integrantes:
Seccin #02 (Mircoles) - Andrea Da Silva
Profesor: C.I: 84.438.575
Pedro Linares - Daniel Ospino
C.I: 22.421.759


16 de Julio del 2014
Arquitectura del Computador
Practica#2
Bsqueda De Burbuja
INTRODUCCIN




En el siguiente informe podr ser visualizado un contenido breve, donde sern
explicados algunos elementos que son utilizados al momento de implementar el mtodo de
bsqueda de burbuja bajo el lenguaje de assembler; se podrn observar algunos aspectos
importantes como el uso de memoria o las direcciones de memoria a utilizar, escribir y leer
en los espacios de memoria definidos (es decir que los elementos tengan un lmite superior
e inferior) entre otras caractersticas de este lenguaje. Algo importante para poder
comprender la implementacin realizada es tener claro cmo funciona el mtodo de
bsqueda de burbuja el cual revisa cada elemento de la lista que va a ser ordenada con el
siguiente elemento, intercambindolos de posicin si estn en el orden equivocado. Es
necesario revisar varias veces toda la lista hasta que no se necesiten ms intercambios, lo
cual significa que la lista est ordenada.


























MARCO TERICO



Planteamiento del problema
El problema consiste en realizar en lenguaje assembler 8051 un programa que implemente
en memoria, dado un vector compuesto de n caracteres ASCII en el rango A-Z, el algoritmo
de ordenamiento de burbuja. El primer elemento del vector a ordenar estar ubicado en la
direccin 30H de la memoria RAM, validando que la cantidad de elementos a ordenar (n) no
supera la direccin 7FH, es decir la cantidad mxima de elementos aceptados es 4FH
(hexadecimal) lo cual equivale a una cantidad de 79 elementos (enteros). Adems, se tiene
que validar que los elementos del vector se encuentren en el rango de letras maysculas A-
Z. A su vez, se debe tener en cuenta que el parmetro n estar localizado en el registro R5
y que el programa intercambie posiciones de los elementos del vector original en el mismo
lugar donde el vector reside. Por ltimo, se debe guardar en las direcciones 2E y 2FH el
nmero total de intercambios realizados durante el proceso de ordenamiento como un
nmero de 16 bits.

Objetivos
El objetivo de la prctica consiste en realizar comparaciones entre los elementos del vector
a ordenar, identificar los modos de direccionamiento de los registros R0 y R1, y utilizar dichos
modos de direccionamiento, y operar con cdigos BCD y ASCII, simulando el mtodo de
bsqueda de burbuja.

Aspectos tericos
Los aspectos tericos que fundamentan esta investigacin son:

Lenguaje ensamblador. (assembly language) es un lenguaje de programacin de
bajo nivel que implementa una representacin simblica de los cdigos de mquina binarios
y otras constantes necesarias para programar una arquitectura dada de CPU. Constituye la
representacin ms directa del cdigo mquina especfico para cada arquitectura legible por
un programador.
Algoritmo de ordenamiento burbuja. (bubble sort) algoritmo de ordenamiento.
Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente,
intercambindolos de posicin si estn en el orden equivocado. Es necesario revisar varias
veces toda la lista hasta que no se necesiten ms intercambios, lo cual significa que la lista
est ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista
los elementos durante los intercambios, como si fueran pequeas "burbujas".
Memoria RAM. La memoria de acceso aleatorio (random-access memory) se utiliza
como memoria de trabajo para el sistema operativo, los programas y la mayor parte del
software. Es all donde se cargan todas las instrucciones que ejecutan el procesador y otras
unidades de cmputo. Se denominan de acceso aleatorio porque se puede leer o escribir
en una posicin de memoria con un tiempo de espera igual para cualquier posicin, no
siendo necesario seguir un orden para acceder a la informacin de la manera ms rpida
posible.
Vector de caracteres. Un vector de caracteres es una estructura de
almacenamiento de datos de tipo carcter, cada uno de los valores contenidos tiene una
posicin asociada que se usar para accederlos. Est posicin o ndice ser siempre un
nmero entero positivo.
N: es la cantidad de elementos que contiene el vector.
Direccin 30H. Es una direccin especfica de la memoria RAM, que se visualiza en
el rea 2 (marco azul) del simulador del microcontrolador DOSBox 8051. Representa la
primera posicin del vector de caracteres.
Direccin 7FH. Es una direccin especfica de la memoria RAM que se puede
visualizar en el simulador del microcontrolador DOSBox 8051. Esta direccin representa el
lmite superior del vector por el cual la cantidad de elementos a ordenar no debe superar
dicha direccin.
Registro R5. Es una registro especfico de la memoria RAM, se encuentra ubicado
en el rea 1 (marco amarillo) del simulador del microcontrolador DOSBox 8051. En dicho
registro se almacena el valor de N el cual puede ser validado tambin en la direccin 05H
ya que est asociada R5.
Direcciones 2EH/2FH. Son direcciones de memoria especficas de la memoria
RAM, se encuentran ubicadas en el rea 2 (marco azul) del simulador del microcontrolador
DOSBox 8051. En las direcciones 2EH y 2FH se almacena el nmero total de intercambios
realizados durante el proceso de ordenamiento como un nmero de 16 bits.
Bits: Es el acrnimo de dgito binario (binary digit). Un bit es un dgito del sistema
de numeracin binario. Las unidades de almacenamiento tienen por smbolo bit.
Ordenamiento in-place. Se refiere a que el ordenamiento y cambios posteriores
se realizarn en el vector original, en el mismo lugar donde el vector reside.
Pseudo-instrucciones. Es una instruccin del lenguaje ensamblador que no tiene
un reflejo en una instruccin en lenguaje mquina. Son rdenes que se dan al programa
ensamblador que carecen de importancia una vez realizadas.












PARTE EXPERIMENTAL



Materiales, mtodos, procedimientos
Utilizamos como plataforma de hardware-software el simulador del microcontrolador 8051
AVSIM51 en mquinas del laboratorio #7 de la facultad con ambiente Linux, distribucin
CentOS.

Se dispuso de los siguientes materiales para llevar a cabo la investigacin:
Software de ensamblaje y simulacin de programas. Subdirectorio AVSIM51.
Software opcional para edicin de los programas. Subdirectorio EDITORES.
Documentacin tcnica del microprocesador 8051. Subdirectorio DOC.
Este documento. Archivo Practi_2.DOC.
Documentacin completa del microprocesador 8051. Archivo INTEL2.PDF


Procedimiento
Primeramente se esboz en pseudocdigo del algoritmo de ordenamiento de burbuja
para manejar la dinmica de cmo trabaja el algoritmo. Previamente se estudi
detalladamente el conjunto de entradas en el programa de simulacin de ordenamiento de
burbuja, como lo son el tamao del vector (N) ubicado en el registro R5, el tamao del
vector-1 (N-1=M) ubicado en el registro R6, los registros R2 y R3 para simular los ndices i
y j respectivamente que sirven para ir iterando y desplazndose por todo el vector, los
registros 2EH/2FH para almacenar el nmero de intercambios realizados en el proceso de
ordenamiento, y cada una de las direcciones del vector asignndole caracteres en el rango
A-Z.

Detalladamente realizaremos una explicacin de las etiquetas ms importantes del cdigo:

- VALI. En esta etiqueta se valida que N este dentro del rango de la cantidad de
elementos del vector (4FH es la cantidad de elementos como mximo del vector) de
no ser as, salta a la etiqueta ERROR.
- RANGO. En esta etiqueta se valida que cada elemento del vector este en el rango
de maysculas de A-Z. Primero se resta el elemento de la direccin de inicio del
vector+J (#30H+J) que se supone es el elemento X del vector, con el elemento A
(#41H), si el acarreo C se activa (1), es
decir, que la resta dio un elemento negativo porque el elemento X es menor que A (X<A),
de ser as, salta a la etiqueta ERROR porque X no puede ser menor que A. Luego continua
a verificar que se reste el elemento de la direccin de inicio del vector+J (#30H+J) que se
supone es el elemento X del vector, con el elemento Z (#5BH), si el acarreo C se apaga
(0), es decir, que la resta dio un elemento positivo porque el elemento X es mayor que Z
(X>Z), de ser as, salta a la etiqueta ERROR porque X no puede ser mayor que Z. As
sucesivamente, con cada elemento del vector.
- COND. En esta etiqueta se evala la condicin interna de los ciclos for anidados
donde se verifica la resta del elemento J y el elemento J+1. Si la resta dio un
elemento negativo entonces el acarreo C se activa (1) y salta a la etiqueta INTER,
esto quiere decir que el elemento J es mayor que el elemento J+1 (J>J+1), sino
salta a la etiqueta INCRJ.
- INTER. En esta etiqueta se realiza el intercambio de un par de elementos con ayuda
de un auxiliar, cuando el elemento J es mayor que el elemento J+1.


Resultados y Anlisis

Al momento de iniciar el programa en lenguaje assembler burbuja.asm,
Se puede observar:
1. De la posicin 30H (donde inicia el vector) a la posicin 3FH se encuentran N
elementos los cuales no se encuentran ordenados.
2. Este N se encuentra en el registro R5 que expresado en base hexadecimal por lo
cual para este ejemplo tiene una cantidad de 10H y su equivalencia seria 16 elementos en
base decimal; en el registro R6 se encuentra M (N-1).
3. Se pueden validar los ndices 'I' y 'J' en las direcciones R2 Y R3 inicialmente se
encuentran en (00H).

Al finalizar el programa en lenguaje assembler burbuja.asm,
Se puede observar:
1. Se puede verificar que los elementos del vector ubicados desde la posicin 30H
hasta la posicin 3FH ya se encuentran de manera ordenada.
2. Se pueden validar los ndices 'I' y 'J' en las direcciones R2 Y R3 (indican las dos
ltimas posiciones que fueron tomadas para la comparacin).
3. Se puede validar la cantidad de intercambios realizados en la posicin (2EH) y (2FH).
















CONCLUSIONES




En esta ocasin con la implementacin del mtodo de bsqueda de burbuja en el
lenguaje assembler, podemos ver como se trabaja y como nos movemos por la memoria y
los distintos tipos de datos que esta trabaja como lo son nmeros en base decimal o
hexadecimal; al tratar de implementar la bsqueda de burbuja se investigaron algunas
instrucciones que utiliza el lenguaje assembler para poder obtener el resultado deseado; se
pudieron observar detalles muy importantes en el lenguaje assembler; Ejemplo: las
conversiones de hexadecimal a decimal con el ajuste a BCD implementando la instruccin
DA para realizar la transformacin, sin embargo este ajuste trabaja con el acumulador (A)
y el auxiliar de acumulador (AC) por tal motivo para cada iteracin al realizar este ajuste se
deben limpiar estos acumuladores con las instrucciones (CLR A) y (CLR AC). Para la
implementacin de esta prctica hay que tener en cuenta que el proceso de ordenamiento
se realizara solo si son validados ciertos aspectos, como por ejemplo que los elementos del
vector se encuentren en el rango de las letras maysculas A-Z (Se realiza la comparacin
con el valor asociado a estas letras en la tabla ASCII), que el nmero de elementos se
encuentre en el rango de posiciones 30H a 7FH, es decir, un total de 4FH elementos (79
elementos en base decimal). Por ltimo, podemos notar que en la ejecucin del programa
para un vector de elementos desordenados de manera aleatoria y que a su vez cumpla con
los requisitos previos (es decir, las validaciones que se especifican en el enunciado de la
practica 2), se puede visualizar en los campos de registros 2EH y 2FH el nmero de
intercambios que el programa realiza por cada par de elementos desordenados en dicho
vector.

















REFERENCIAS BIBLIOGRFICAS



Documentacin tcnica del microprocesador 8051.
Documentacin completa del microprocesador 8051.
Wikipedia. es.wikipedia.org/wiki/Ordenamiento_de_burbuja
http://www.alciro.org/alciro/microcontroladores-8051_24/microcontroladores-
8051_278.htm

Você também pode gostar