Codi senyal "1"
Codi senyal "0"
Bus de dades
Mode binari
0 1 2 3 PC +1 MUX1-0 M → A ALU A: 0 B: 0 D F CO 16 16 16 16 16 16 7 7 7 7 7 7 RAM L/E M → B M → IR Z → FZ ALU 1-0 CO 1-0 @+1 → PC L/E FZ DADES Sortida Entrada (@): 0  @: 0 @D: 0 @F:  0 PC: 0 0 00 0 0 0 0 0 00 00
0


Benvinguts a la consola del simulador de la màquina senzilla. Presteu-li atenció!

Memòria

Etiqueta Adreça Instrucció
Etiqueta Adreça Dades

Manual d'ús

Compatibilitats amb el navegador

Els navegadors en què s'han fet proves de visualització han estat Google Chrome, Mozilla Firefox, Opera, Microsoft Edge i Safari.


Resolució del navegador

Pel que fa a la resolució mínima per a una visualització correcta, s’ha optat per 1024x768. Si la resolució és més baixa, pot ser que la visualització de l’aplicació no sigui del tot correcta.

Qualsevol error visual a partir d'aquesta resolució i per a qualsevol navegador suportat, notifiqueu-lo. Gràcies.


Botons de control de l'aplicació

Clock -: Retrocedeix el flux de dades fins al flanc de rellotge anterior. Ho pot fer fins a l'estat inicial del programa.

Clock +: Simula el flanc de pujada de la màquina senzilla. Aquest botó fa que es visualitzi el flux de dades per pantalla.

Reset: Aquest botó reinicia la màquina però no la memòria.

Kill: Inicialitza tota la màquina senzilla, incloent-hi la memòria.

Seleccionar fitxer: Ens permet carregar un fitxer amb extensió ".txt" amb instruccions i dades per carregar a la memòria.

Editar memòria: Ens permet editar la memòria directament.

Llegenda de colors: Botons que ens permeten canviar els colors dels senyals de control i del bus de dades.

Mode binari: Casella que ens permet visualitzar en binari el contingut de la màquina.


Manual de la Màquina Senzilla

Càrrega del fitxer de configuració i edició de la memòria

Per a l'entrada d'INSTRUCCIONS, la nova aplicació de la màquina senzilla processarà línia per línia les instruccions entrants, que tindran una sintaxi específica:

  • Etiqueta o número (Opcional): Serà un string seguit de dos punts ":" (ex.: "inici:"). També podrà ser un enter seguit de dos punts; en aquest cas, ens guardarà la instrucció a la posició d'aquest enter (ex.: "15:").

    Sense el marcador s'aniran omplint automàticament els espais buits per a instruccions lliures.

  • Tipus d'operació: Les normals de la màquina senzilla (add | mov | cmp | beq).

  • Operador font (no necessari a "beq"): Pot ser un enter que apunta a una adreça de memòria o un string que apunta a una etiqueta. En el cas de "beq", es pot ignorar. Si hi és, ha d'estar separat sempre amb la coma "," per després definir l'operador destí. En base decimal.

  • Operador destí: Igual que l'operador font, pot ser un enter o un string, però aquest és sempre obligatori. En base decimal.

  • El punt i coma ";" (Opcional): Serveix per finalitzar la instrucció, però també pot ser opcional.

Exemples:

inici: add 100, 111     # Etiqueta a la primera posició lliure d'instruccions
5:     cmp 110, 110;    # Escriu la instrucció a la posició 5 de memòria
       add 100, un      # Escriu a la primera posició lliure i resol l'adreça de l'etiqueta
       beq inici;       # Branca cap a l'etiqueta inici
final:                  # S'interpretarà igual que final: add 0 0

Per a l'entrada de DADES, la sintaxi és més senzilla.

  • Etiqueta o número (Opcional): Serà un string seguit de dos punts ":" (ex.: "zero:"). També podrà ser un enter seguit de dos punts; en aquest cas, ens guardarà el valor a la posició d'aquest enter (ex.: "100:").

    Sense el marcador s'aniran omplint automàticament els espais buits per a les dades.
  • Valor: El valor de la dada en base decimal.

Exemples:

      245       # Dada a la primera posició lliure de dades
zero: 0         # Dada etiquetada amb el valor 0
110:  4         # Escriu el valor 4 a la posició 110

Finalment, hi ha dues maneres de carregar el programa: des d'un fitxer de text o editant-lo directament amb el botó d'edició de memòria.

Contacte

Projecte original (2017)

Autor: Bryan Pierre Dalet

Repositori original: GitHub

LinkedIn: Bryan Pierre Dalet

Versió actualitzada (2026)

Mantenidor: Antonio Bueno

Repositori actual: Codeberg

Correu: antonio.bueno@udg.edu

Historial de versions

v1.0.9 Documentació i neteja visual
  • [Documentació] Corregeix errades gramaticals i de format al manual integrat.
  • [Interfície] Simplifica la presentació del manual, el peu de pàgina i altres elements visuals de l'SPA.
  • [Neteja] Elimina estils i codi visual obsolets que ja no s'utilitzen a la interfície.
v1.0.8 Senyals i preparació del simulador
  • [Interfície] Canvi de nom del mode "Assemblador" a "Mode binari".
  • [Senyals] Fa explícits diversos senyals interns per facilitar la seva observació i reutilització futura a la interfície.
v1.0.7 Correccions del simulador
  • [Simulador] Corregeix CMP perquè generi correctament els senyals R (resultat) i Z (flag) de la ALU.
  • [Mode binari] Corregeix l'aparició de valors NaN a la RAM quan es visualitzen instruccions amb etiquetes en mode binari.
v1.0.6 Importació de la versió històrica
  • [Històric] Punt de referència de la darrera versió original del projecte de 2017, importada a Codeberg el 2026.
v1.0.5 Actualització
  • [Visualització] S'ha afegit un mode de vista "assemblador".
v1.0.4 Correcció
  • [Personalització] S'han canviat les biblioteques del selector de colors, que donaven problemes en carregar i no suportaven el tàctil de tauletes i mòbils.
v1.0.3 Actualització
  • [Memòria RAM] S'ha separat la memòria RAM en dues parts per a una visualització i una utilització més còmodes, i també es marquen les instruccions executades i els resultats guardats.
  • [Personalització] S'ha afegit una llegenda amb els colors de representació dels senyals i del bus, editable per poder-ne canviar els colors.
v1.0.2 Correcció
  • [Visualització] El senyal de Z→FZ no es pintava correctament quan li tocava.
  • [Visualització] S'ha tret el remarcatge del requadre de FZ quan s'executava la fase de descodificació.
v1.0.1 Correcció
  • [Entrada de dades] No deixava afegir una etiqueta sense instrucció al darrere. Ara es pot fer i serà considerada una instrucció amb valor "add 0 0".
  • [Etiquetes] Ara l'aplicació resol correctament les instruccions amb etiquetes. Les converteix en l'adreça corresponent en carregar-les a l'IR.