viernes, 3 de agosto de 2007

/tarea de Arquitectura de Sistemas



Dejo una tarea que realizamos junto al Tata para la materia de Arquitectura de Sistemas, materia que consistía en ese entonces sobre circuitos lógicos, álgebra de boole, una introducción a la arquitectura de computadores, concepto de interrupciones, conocer assembler con el fin de programar a bajo nivel los componentes de la arquitectura 8086 (por medio de interrupciones, eventualmente recurrencia, etc), y una introducción a la arquitectura RISC y conceptos del lenguaje SPARC.

La tarea que realizamos fue una de las mejores que hice, tenía menos conciencia pero mas tiempo para dedicarle a facultad, y además porque en esta tarea se amalgaman una serie de conceptos: programación en assembler, manejo de la memoria de video y el manejo de interrupciones.

Objetivo de la tarea: implementar en ambiente DOS un controlador de un dispositivo de entrada/salida como es el mouse, y representar en la pantalla mediante un puntero los posibles movimientos que este hace, así como informar las coordenadas de dicho puntero cuando se presiona el botón izquierdo del mouse.

El trabajo fue realizado en ensamblador 8086, y está basado en la interrupción generada por el puerto serial COM1 o COM2.

Breve explicación:
El problema se divide en tres grandes tareas:

  • Recepción de datos
  • Procesamiento y detección de errores
  • Visualización en pantalla de información relativa al ratón

Un autómata finito muestra las diferentes instancias del problema, este diagrama nos sirvió a los efectos de construir el pseudocódigo de nuestro algoritmo principal.
(En la documentación se explica la semántica de cada estado)

Para abordar esta tarea debimos conocer algo más de lo que nos dieron sobre la UART (Universal Asynchronous receiver/transmitter), dispositivo de E/S que encapsula las funciones de transmisión y recepción empleadas en la comunicación en serie asíncrona
  • En serie porque los bits que representan un valor se transmiten uno a uno
  • Asíncrona porque se puede recibir/transmitir en cualquier momento
Si bien en la documentación hay una plantilla con mas especificaciones sobre el funcionamiento de la UART, sus registros, la forma en que recibe o envía señales, etc, a nosotros al menos no nos fue suficiente, y debimos googlear. De todos modos, la incluyo a modo de referencia rápida.

documentacion.rar
  • maquinas de estados.doc (descripción del problema, abordaje, rutinas)
  • uart.pdf (mini manual sobre UART)
  • arqoblig.pdf (letra del problema)
  • notas.txt (parámetros de la UART, notas generales)
fuentes.rar (contiene los fuentes en assembler del problema, el propósito de cada uno de los mismos está explicado en el archivo correspondiente)
  • macro.asm
  • setpic.asm
  • setuart.asm
  • vars.asm
  • rrssii.asm
  • const.asm
  • mouse.asm
utiliarios.rar (archivos necesarios para compliar, linkeditar, generar .com, etc)
  • compilo.bat
  • tasm.exe
  • td.exe
  • dosxnt.exe
  • tlink.exe

tasm
: "Turbo Assembler", ensamblador que genera un código objeto (.obj)
tlink: "Turbo Link", programa que linkedita el código objeto con otras rutinas ya compiladas, generando el programa ejecutable (.exe).
td: "Turbo Debbuger", programa que permite visualizar la ejecución de un programa, inspeccionando el valor de los registros en cada instancia del mismo en forma visual.
dosxnt: para trabajar en terminales Windows NT.

"Para ejecutar el Turbo Assembler en modo de compatibilidad con el código escrito para el Microsoft Macro Assembler, se le debe poner como parámetros:
tasm /jmasm archivo.asm
Como se debe generar un archivo ejecutable de dos .COM, al ejecutar el linker se le pasan los parámetros /t, o sea: tlink /t archivo.obj, luego de esto se habrá generado el archivo.com"

(Sobre el uso de los utilitarios está mas explicado en la letra de la tarea)

Paralelamente, no relacionado con la tarea pero sí con programación assembler, también hay un código que hicimos para preparar el examen y aprender a implementar recurrencia, implementamos el conocido problema de las Torres de Hanoi. (archivo: Hanoi.asm)

Lo pueden descargar desde la sección Fuckultad o aqui:


2 comentarios:

Anónimo dijo...

Muchas gracias por la informaci\'on

rog dijo...

si te es útil por lo que sea, me alegro.
saludos