/// <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)); } }
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(); } }
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))); }
public void TestOpcodeInvalido() { Assert.AreEqual(";????", Desensamblador.Desensamblar(unchecked ((short)0x8000))); }
public void TestParametros() { Assert.AreEqual("LODD 2047", Desensamblador.Desensamblar(unchecked ((short)0x0FFF))); Assert.AreEqual("JUMP 25", Desensamblador.Desensamblar(unchecked ((short)0x6819))); }