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