Anda di halaman 1dari 8

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA

FACULTAD DE INGENIERÍA
ESCUELA DE CIENCIAS Y SISTEMAS
ARQUITECTURA DE COMPUTADORES Y ENSAMBLADORES 1
PRIMER SEMESTRE 2019
ING. OTTO ESCOBAR
TUTOR ACADÉMICO SECCIÓN A: RICARDO MENCHÚ
TUTOR ACADÉMICO SECCIÓN B: OSCAR CUELLAR

PRACTICA 6

Objetivo General:
● Aplicar los conocimientos adquiridos en el curso sobre el lenguaje ensamblador.

Objetivos Específicos:
● Aplicar el conocimiento de operaciones básicas a nivel ensamblador.
● Conocer el funcionamiento de las interrupciones.
● Comprender el uso de la memoria en los programas informáticos.
● Consolidar el uso del modo video en lenguaje a bajo nivel.
● Emplear y manipular la paleta de colores del modo video.
● Realizar cálculos para implementar los delays en bajo nivel.

_________________________________________________________________________

Descripción:
Con el fin de comprender el uso de las banderas, delays, modo de video y operaciones
aritméticas, se le solicita realizar un programa el cual leerá un archivo de entrada con cierta
cantidad de números desordenados, el programa deberá analizarlos y almacenarlos en
memoria para su posterior manejo, con estos números se espera que el programa sea
capaz de ordenarlos en 3 tipos diferentes de ordenamientos. Durante este ordenamiento
deberá ir reproduciendo distintos tonos que más adelante se especifican.
El programa tendrá las siguientes opciones al inicio:

● Menú Principal:
El menú principal es lo primero que se muestra al usuario, el cual contiene el
encabezado con los datos mostrados en la siguiente imagen y una serie de opciones
las cuales son:

- Cargar Archivo
- Ordenar
- Generar Reporte
- Salir

Encabezado:

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA


FACULTAD DE INGENIERIA
ESCUELA DE CIENCIAS Y SISTEMAS
ARQUITECTURA DE COMPUTADORES Y ENSAMBLADORES 1
SECCION A|B
NOMBRE: OSCAR RENE CUELLAR MANCILLA
CARNET: 201503712
PRACTICA 6

● Menú Cargar Archivo

Al seleccionar esta opción en el menú principal, el programa solicitará el ingreso de


la ruta de un archivo de texto con extensión “.xml”, el programa debe validar que el
archivo existe, en caso de no existir el archivo o poseer una extensión incorrecta se
debe preguntar nuevamente la ruta​. La ruta se ingresará con el siguiente formato:

- Carnet Pares
%\ruta\entrada.xml%
%entrada.xml%
- Carnet Impares
&\ruta\entrada.xml&
&entrada.xml&

El archivo contendrá una lista de números con un rango desde el 1-99.


Ejemplo:
<Numeros>
<Numero>43</Numero>
<Numero>80</Numero>
<Numero>25</Numero>
<Numero>58</Numero>
<Numero>77</Numero>
<Numero>88</Numero>
<Numero>87</Numero>
<Numero>80</Numero>
<Numero>91</Numero>
<Numero>1</Numero>
</Numeros>

Considerar:
- La lista tendrá al menos 10 números y como máximo 25 números.
- Únicamente vendrán números positivos.

● Menú Ordenar:

En este menú se desplegarán 3 opciones las cuales son las siguientes:

- Ordenamiento BubbleSort.
- Ordenamiento QuickSort.
- Ordenamiento ShellSort.

Al seleccionar cualquiera de las 3 opciones se le pedirá al usuario un nivel de


velocidad entre 0-9.

Cada alumno deberá implementar su función de delays que haga referencia a la


velocidad ingresada, la velocidad debe notarse.

Luego se pedirá al usuario seleccionar una de las siguientes opciones:


● 1) Descendente
● 2) Ascendente

En donde estas hacen referencia al modo en que quedarán ordenados los números
● Video:

Encabezado: En el encabezado se deberá mostrar el tipo de ordenamiento que está


en proceso en ese momento, el tiempo que lleva ordenando y el nivel de velocidad
en que se está ejecutando.

Barras: Cada número leído del archivo representará una barra en el cuadro de video,
el ​alto​ de estas barras deberán ajustarse tomando en cuenta el mayor número leído.
Por ejemplo si se lee un archivo cuyo número más grande es el 80, la barra que
representa al número 80 deberá ocupar todo el máximo de alto y con respecto a este
tamaño se ajustan las demás barras de los números que son menores a él. El ​ancho
de estas barras dependerá de la cantidad de números leídos, por ejemplo si se leen
20 números deberán ocupar todo el ancho del cuadro. Igualmente si se leen solo 10,
el ancho de las barras aumentará para ocupar el ancho del cuadro.

Números: Cada barra tendrá abajo el número al cual hace referencia.

Colores: Los colores de cada barra dependerá del número al cual hacen referencia,
la tabla que se muestra más adelante describe esto.

Sonidos: Se deberá ejecutar un tono durante el cambio entre las barras,


dependiendo del rango en el que se encuentre la barra a cambiar de posición. La
frecuencia del tono se describe en la siguiente tabla.

Color Rango de Números Sonido (Hz)

Rojo 1-20 100

Azul 21-40 300

Amarillo 41-60 500

Verde 61-80 700

Blanco 81-99 900


● Ejecución:

Luego de seleccionar uno de los 3 tipos de ordenamiento se deberá poder ver el


estado de cada barra pintada sin iniciar el ordenamiento.

Al presionar la barra espaciadora el ordenamiento deberá comenzar, comenzará el


conteo de tiempo y el movimiento de las barras hacia su nueva posición,
dependiendo del tipo de ordenamiento que se está ejecutando.

El tiempo que detiene el proceso el delay con respecto al nivel seleccionado para
simular el movimiento queda a discreción del estudiante, pero deberá notarse la
diferencia entre los 10 niveles de velocidad siendo 0 el más bajo y 9 el más alto.

Al finalizar el ordenamiento, deberá quedar pausado el tiempo para así poder


analizar cuánto fue lo que demoró en ordenar.
Al presionar ESC, regresará al menú principal para poder analizar un nuevo archivo
con lista de números o seguir Ordenando con la lista previamente leída.

Aclaraciones:
● No debe mostrarse solo el resultado final, debe mostrarse cada iteración
durante el ordenamiento, se debe poder visualizar el cambio de posición de
las barras, para esto se solicita que el manejo de la velocidad sea de una
buena manera.

● Menú Generar Reporte

Al seleccionar esta opción se deberá crear archivo con formato xml con nombre
(reporte.xml).
El contenido del archivo será el siguiente:

<Arqui>
<Encabezado>
<Universidad>Universidad de San Carlos de Guatemala</Universidad>
<Facultad>Facultad de Ingenieria</Facultad>
<Escuela>Ciencias y Sistemas</Escuela>
<Curso>
<Nombre>Arquitectura de Computadores y Ensambladores 1</Nombre>
<Seccion>Seccion B</Seccion>
</Curso>
<Ciclo>Primer Semestre 2019</Ciclo>
<Fecha>
<Dia>26</Dia>
<Mes>03</Mes>
<Año>2019</Año>
</Fecha>
<Hora>
<Hora>08</Hora>
<Minutos>00</Minutos>
<Segundos>55</Segundos>
</Hora>
<Alumno>
<Nombre>Oscar Rene Cuellar Mancilla</Nombre>
<Carnet>201503712</Carnet>
</Alumno>
</Encabezado>
<Resultados>
<Tipo>Ascendente</Tipo>
<Lista_Entrada>43,80,25,58,77,88,87,80,91,1</Lista_Entrada>
<Lista_Ordenada>1,25,43,58,77,80,80,87,88,91</Lista_Ordenada>
<Ordenamiento_BubbleSort>
<Velocidad>5</Velocidad>
<Tiempo>
<Minutos>00</Minutos>
<Segundos>5</Segundos>
<Milisegundos>52</Milisegundos>
</Tiempo>
</Ordenamiento_BubbleSort>
<Ordenamiento_Quicksort>
<Velocidad>5</Velocidad>
<Tiempo>
<Minutos>00</Minutos>
<Segundos>3</Segundos>
<Milisegundos>52</Milisegundos>
</Tiempo>
</Ordenamiento_Quicksort>
<Ordenamiento_Shellsort>
<Velocidad>5</Velocidad>
<Tiempo>
<Minutos>00</Minutos>
<Segundos>2</Segundos>
<Milisegundos>52</Milisegundos>
</Tiempo>
</Ordenamiento_Shellsort>
</Resultados>
</Arqui>

Es indispensable que en el reporte se muestre la fecha y la hora


correctamente, ya que con eso se asegura que no sea un archivo “quemado”,
caso contrario no se podrá calificar.

● Salir
Al seleccionar esta última opción el programa finalizará y saldrá al sistema de
DosBox.
Referencias
La idea de la práctica se tomó del siguiente video, se espera que sea algo similar para este
programa.

Ordenamientos videos:
https://www.youtube.com/playlist?list=PLZh3kxyHrVp_AcOanN_jpuQbcMVdXbqei
Documentación de ordenamientos:
https://mega.nz/#!FwIUySwS!s6YWcgXYdue026pisHr3EhClEtNV7gjrQvP63nKrOSg

Observaciones y Restricciones:
● Se realizará de manera individual.
● Copias totales o parciales tendrán una nota de 0 y serán reportadas a escuela.
● El código del programa debe ser estrictamente ensamblador, no se permite el uso de
alguna librería.
● El entorno de pruebas a utilizar debe ser DOSBox, el ensamblador a utilizar queda a
discreción del estudiante, por ejemplo: MASM, NASM, TASM, FASM, etc.
● El día de la calificación se harán preguntas sobre aspectos utilizados en la
elaboración del proyecto, las cuales se considerarán en la nota final.
● Utilizar el modo de video 13h.

Requerimientos Mínimos
● Para tener derecho a calificación:
- Se debe presentar el proyecto en DOSBox.
- Se debe haber entregado manual de usuario y manual técnico, de lo contrario
se asumirá que el estudiante copió.
- Lectura de archivo
- Ordenamiento BubbleSort
- Al menos dos niveles de velocidad.
- Números representando cada barra.
- Creación de Reporte.

● Enviar archivo con el código utilizado para la práctica y manual técnico antes de las
21:59 horas del jueves 04 de Abril de 2019.
➢ nombre: [ARQ1]TP6_#Carnet.rar
➢ medio: Classroom.

Fecha de Calificación:
, el horario y lugar se informará en los días próximos a la fecha de entrega.
SIN PRÓRROGA.

Anda mungkin juga menyukai