Práctica 4

LENGUAJE Y ARQUITECTURA

objetivo de la práctica

En el proyecto 4 se plantea como principal objetivo el trabajar la programación de bajo nivel en lenguaje de maquina y adquirir conocimientos sobre Hack Computing System. Se busca que al realizar este proyecto se logre una familiarización con el proceso de lenguaje ensamblador, lo que significa traducción de lenguaje simbólico a lenguaje de máquina. Además, de evaluar la manera cómo se ejecuta el código binario nativo en la plataforma hardware de destino. Para cumplir con esto, se trabajará sobre dos programas: multi.asm y fill.asm, en donde para ambos se realiza su respectivo código y prueba de funcionamiento según los requerimientos exigidos.

En proyectos previos, hemos construido los dispositivos básicos de almacenamiento y procesamiento informático (ALU y RAM, respectivamente). En este proyecto 5, uniremos todo para crear una plataforma de hardware de piratería completa. El resultado será una computadora de uso general capaz de ejecutar programas escritos en el lenguaje de la máquina de hacking. Por ello, el principal objetivo será completar la construcción de la CPU Hack y la plataforma de hardware Hack, hasta llegar al chip informático superior.

Desarrollo

Proyecto 4

Multiplicación (programa Mult.asm)

Este programa es bastante simple. Consta de 3 memorias ram (R0, R1 y R2), en donde en R0 y R1 se van a colocar los números a multiplicar (R0*R1) y el ram 2 (R2) es quien multiplicará. La forma en la que se multiplican esos números es haciendo sumas repetitivas en un ciclo.

Código en Assembler
En esta herramienta cargamos el archivo .asm y lo ejecutamos para obtener las instrucciones binarias de hack.
Ejecución en el programa cpu emulator
En este se carga el programa .hack obtenido de Assembler y aquí es donde se realiza la multiplicación.

I/O handling (programa fill.asm)

Este programa ofrece la capacidad de manejar hardware de pantalla y teclado de bajo nivel. Para ello, el programa ejecuta un ciclo infinito para escuchar la entrada del teclado. cuando presiona cualquier tecla, el programa atenúa la pantalla, es decir, escribirá "negro" en cada píxel; La pantalla permanecerá completamente negra hasta que se presione la tecla. Cuando no se presiona ninguna tecla, el programa limpia la pantalla, es decir, escribe "vacío" para cada píxel; La pantalla estará completamente en blanco mientras no se presione ninguna tecla.

Código en assembler
Continuación del código en assembler
Ejecución en el programa cpu emulator

Desarrollo

Proyecto 5

Memory:

Se trata de un circuito integrado capaz de almacenar datos durante una determinada cantiadad de tiempo y transmitirlo para posteriormente ser procesada en código. Dicho proceso se realiza mediante la transmisión de señales electronicas por los componentes del chip.

Ejecución en pantalla
En este punto espera una entrada por teclado la cual tras compararla permitirá la continuación del programa
Resultados esperados
Se muestran las salidas que se deberían obtener al realizar de manera correcta la operación

CPU (Central Processing Unit)

Se trata de un componente de hardware compueto de un circuito electronico capaz de interpretar instrucciones mediante la realización de operaciones aritméticas, lógicas y externas.

Pantalla de programa en Funcionamiento
Se observa de manera gráfica el proceso del chip de la CPU
Resultados Esperados
Notése como las instrucciones de una CPU se reciben en un lenguaje de máquina binario

Computer:

Este chip tiene como objetivo ser un chip de computadora de alto nivel. Tiene la capacidad de ejecutar programas en lenguaje Hack y mostrar su funcionamiento. Para su funcionamiento se utilizarán 3 programas:

  • Add.hack

  • Max.hack

  • Rect.hack

Código para el chip Computer

Add.hack

Add.hack es un programa escrito en en el lenguaje Hack, su finalidad es probar el Chip Computer. Se agregan dos constantes 2 y 3, y se escribe el resultado en la RAM[0].

Resultado de prueba realizada en el programa

Max.hack

Max.hack es un programa utilizado para probar y demostrar el funcionamiento del chip de la computadora, este programa calcula el maximo de RAM[0] y RAM[1], describe el resultado en RAM[2].

Resultado de prueba realizada en el programa

Rect.hack

Rect.hack es el programa que demuestra la interaccion del chip computer con la pantalla, este dibuja un rectángulo de 16 pixeles de ancho y RAM[0] de largo, este está ubicado en la parte izquierda de la pantalla.

Resultado de prueba realizada en el programa