/// <summary>Se llama cuando cambia el contenido de un registro.
        /// </summary>
        /// <param name="registro">El registro que ha cambiado.</param>
        /// <param name="newValue">El nuevo valor almacenado en
        /// <c>registro</c>.</param>

        public void RegisterChanged(int registro, short newValue)
        {
            if (registro != 3)
            {
                contenido[registro].Text =
                    Conversiones.ToHexString(newValue);
            }
            else
            {
                contenido[registro].Text =
                    Desensamblador.Desensamblar(newValue);
            }
        }
        /// <summary>Se llama cuando cambia el contenido de un registro.
        /// </summary>
        /// <param name="registro">El registro que ha cambiado.</param>
        /// <param name="newValue">El nuevo valor almacenado en
        /// <c>registro</c>.</param>

        public void RegisterChanged(int registro, short newValue)
        {
            regs[registro].SetText(
                BancoRegistros.GetNombreRegistro(registro) + " " +
                Conversiones.ToHexString(newValue));

            if (registro == BancoRegistros.IR)
            {
                regs[registro].SetText(
                    BancoRegistros.GetNombreRegistro(registro) + " " +
                    Desensamblador.Desensamblar(newValue));
                etiqueta_inst.SetText(
                    "Ejecutando:" + Desensamblador.Desensamblar(newValue));
            }
        }
Beispiel #3
0
 static void Main(string[] args)
 {
     if ((args.Length == 0) || (args.Length > 1))
     {
         System.Console.WriteLine("Wrong number of arguments.");
         System.Console.WriteLine("Usage: Minics <file.txt>");
     }
     else
     {
         InstructionSet instructionSet = new InstructionSet();
         Desensamblador desensamblador = new Desensamblador(ref instructionSet);
         desensamblador.desensamblar(args[0]);
         instructionSet.run();
     }
 }
Beispiel #4
0
 public void TestInstrucciones()
 {
     Assert.AreEqual("HALT", Desensamblador.Desensamblar(unchecked ((short)0xFFFF)));
     Assert.AreEqual("HALT", Desensamblador.Desensamblar(unchecked ((short)0xF800)));
     Assert.AreEqual("LODD 0", Desensamblador.Desensamblar(unchecked ((short)0x0800)));
     Assert.AreEqual("LODI 0", Desensamblador.Desensamblar(unchecked ((short)0x1000)));
     Assert.AreEqual("STOD 0", Desensamblador.Desensamblar(unchecked ((short)0x1800)));
     Assert.AreEqual("ADDD 0", Desensamblador.Desensamblar(unchecked ((short)0x2000)));
     Assert.AreEqual("ADDI 0", Desensamblador.Desensamblar(unchecked ((short)0x2800)));
     Assert.AreEqual("SUBD 0", Desensamblador.Desensamblar(unchecked ((short)0x3000)));
     Assert.AreEqual("SUBI 0", Desensamblador.Desensamblar(unchecked ((short)0x3800)));
     Assert.AreEqual("PUSH", Desensamblador.Desensamblar(unchecked ((short)0x4000)));
     Assert.AreEqual("POP", Desensamblador.Desensamblar(unchecked ((short)0x4800)));
     Assert.AreEqual("JNEG 0", Desensamblador.Desensamblar(unchecked ((short)0x5000)));
     Assert.AreEqual("JZER 0", Desensamblador.Desensamblar(unchecked ((short)0x5800)));
     Assert.AreEqual("JCAR 0", Desensamblador.Desensamblar(unchecked ((short)0x6000)));
     Assert.AreEqual("JUMP 0", Desensamblador.Desensamblar(unchecked ((short)0x6800)));
     Assert.AreEqual("CALL 0", Desensamblador.Desensamblar(unchecked ((short)0x7000)));
     Assert.AreEqual("RETN", Desensamblador.Desensamblar(unchecked ((short)0x7800)));
 }
Beispiel #5
0
 public void TestOpcodeInvalido()
 {
     Assert.AreEqual(";????", Desensamblador.Desensamblar(unchecked ((short)0x8000)));
 }
Beispiel #6
0
 public void TestParametros()
 {
     Assert.AreEqual("LODD 2047", Desensamblador.Desensamblar(unchecked ((short)0x0FFF)));
     Assert.AreEqual("JUMP 25", Desensamblador.Desensamblar(unchecked ((short)0x6819)));
 }