private string J(string m)///// { this.cp = MetodosAuxiliares.hexadecimalADecimal(m); return("CP<-m"); }
public string ejecutaPaso() { string mensaje; mensaje = ""; try { if (ejecutable) { string codOp; string m; codOp = this.memoria.ObtenCodOp(ref this.cp); m = this.memoria.ObtenM(ref this.cp); m = this.indexaM(m); if (this.cp < MetodosAuxiliares.FinalPrograma(this.memoria.Inicio, this.memoria.Tamaño)) { if (MetodosAuxiliares.hexadecimalADecimal(m) <= MetodosAuxiliares.FinalPrograma(this.memoria.Inicio, this.memoria.Tamaño)) { switch (codOp) { case "18": //ADD mensaje = this.ADD(m); break; case "40": //AND mensaje = this.AND(m); break; case "28": //COMP mensaje = this.COMP(m); break; case "24": //DIV mensaje = this.DIV(m); break; case "3C": //J mensaje = this.J(m); break; case "30": //JEQ mensaje = this.JEQ(m); break; case "34": //JGT mensaje = this.JGT(m); break; case "38": //JLT mensaje = this.JLT(m); break; case "48": //JSUB mensaje = this.JSUB(m); break; case "00": //LDA mensaje = this.LDA(m); break; case "50": //LDCH mensaje = this.LDCH(m); break; case "08": //LDL mensaje = this.LDL(m); break; case "04": //LDX mensaje = this.LDX(m); break; case "20": //MUL mensaje = this.MUL(m); break; case "44": //OR mensaje = this.OR(m); break; case "D8": //RD mensaje = this.RD(m); break; case "4C": //RSUB mensaje = this.RSUB(); break; case "0C": //STA mensaje = this.STA(m); break; case "54": //STCH mensaje = this.STCH(m); break; case "14": //STL mensaje = this.STL(m); break; case "E8": //STSW mensaje = this.STSW(m); break; case "10": //STX mensaje = this.STX(m); break; case "1C": //SUB mensaje = this.SUB(m); break; case "E0": //TD //mensaje = this.TD(m); break; case "2C": //TIX mensaje = this.TIX(m); break; case "DC": //WD //mensaje = this.WD(m); break; } } else { throw new EndProgramException("Error se intento acceder a una localidad de memoria inexistente"); } } else { throw new EndProgramException("Se acabaron las intrucciones a ejecutar, por lo tanto el programa finalizo"); } } } catch (EndProgramException e) { this.ejecutable = false; MessageBox.Show(e.Message, "El programa ah finalizado", MessageBoxButtons.OK, MessageBoxIcon.Information); } return(mensaje); }
private void llenaDataGrid() { this.limpiaDatagrid(); string[] fila; fila = new string[17]; for (int i = 0; i < sicEstandar.Memoria.Filas; i++) { fila[0] = MetodosAuxiliares.decimalAHexadecimal(MetodosAuxiliares.hexadecimalADecimal(sicEstandar.Memoria.Inicio) + (i * 16)); for (int j = 0; j < sicEstandar.Memoria.Columnas; j++) { fila[j + 1] = sicEstandar.Memoria.Mapa[i, j]; } this.dataGridViewMapaDeMemoria.Rows.Add(fila); } this.dataGridViewRegistros.Rows.Add("CP", CP, MetodosAuxiliares.ajustaDireccion(MetodosAuxiliares.decimalAHexadecimal(this.sicEstandar.CP))); this.dataGridViewRegistros.Rows.Add("A", A, MetodosAuxiliares.ajustaDireccion(MetodosAuxiliares.decimalAHexadecimal(this.sicEstandar.A))); this.dataGridViewRegistros.Rows.Add("X", X, MetodosAuxiliares.ajustaDireccion(MetodosAuxiliares.decimalAHexadecimal(this.sicEstandar.X))); this.dataGridViewRegistros.Rows.Add("L", L, MetodosAuxiliares.ajustaDireccion(MetodosAuxiliares.decimalAHexadecimal(this.sicEstandar.L))); this.dataGridViewRegistros.Rows.Add("CC", this.sicEstandar.CC, ""); this.label1.Text = "Tamaño del programa:" + this.sicEstandar.Memoria.Tamaño; }
private string TIX(string m) { string mensaje; string[] operando; long decM; mensaje = "Efecto: X ← (X) + 1; (X) : (m..m+2) \n" + "Incrementa el valor de X en 1 y lo compara con una \n" + "palabra en memoria y establece el código de \n" + "condición para indicar el resultado(<, = o >) \n"; operando = this.obtenOperando(m); mensaje = "\t X ← " + MetodosAuxiliares.decimalAHexadecimal(this.x) + " + 1; " + MetodosAuxiliares.decimalAHexadecimal(this.x) + " : " + operando[0] + operando[1] + operando[2] + "\n"; decM = MetodosAuxiliares.hexadecimalADecimal(operando[0] + operando[1] + operando[2]); this.x++; if (this.x == decM) { this.cc = "="; } else if (this.x > decM) { this.cc = ">"; } else if (this.x < decM) { this.cc = "<"; } mensaje += "\t\t Resultado: X ← " + MetodosAuxiliares.decimalAHexadecimal(this.x) + "; CC ← " + this.cc; return(mensaje); }
private void creaArchivoObj() { string linea; string[] instruccion; this.archivoObj = new List <string>(); instruccion = this.intermedio.First().Split('\t'); linea = instruccion[3].Replace("H", ""); linea = linea.Replace("h", ""); linea = "H" + MetodosAuxiliares.ajustaCadena(instruccion[1], 6) + MetodosAuxiliares.ajustaDireccion(linea) + MetodosAuxiliares.ajustaDireccion(MetodosAuxiliares.decimalAHexadecimal(this.tamaño)); this.archivoObj.Add(linea); this.generaRegistrosT(); instruccion = this.intermedio.Last().Split('\t'); linea = "E" + this.calculaDireccionEnd(instruccion[3]); this.archivoObj.Add(linea); }
public void paso2(DataGridView dataGridViewIntermedio) { bool x; int resto; string aux; char[] cadena; string[] linea; this.codigoObj = new string[this.intermedio.Count]; for (int i = 0; i < this.intermedio.Count; i++) { linea = this.intermedio[i].Split('\t'); if (!string.IsNullOrEmpty(linea[2])) { if (!this.lineasError[i]) { if (this.instrucciones.Keys.Contains(linea[2]) | linea[2].Equals("WORD") | linea[2].Equals("BYTE")) { switch (linea[2]) { case "BYTE": #region Byte if (linea[3].Contains("X") | linea[3].Contains("x")) { //FE codigoObj[i] = linea[3].Replace("X'", ""); codigoObj[i] = codigoObj[i].Replace("x'", ""); codigoObj[i] = codigoObj[i].Replace("'", ""); } else { codigoObj[i] = linea[3].Replace("C'", ""); codigoObj[i] = codigoObj[i].Replace("c'", ""); codigoObj[i] = codigoObj[i].Replace("'", ""); codigoObj[i] = MetodosAuxiliares.ASCIIToHexadecimal(codigoObj[i]); } #endregion break; case "WORD": #region WORD x = linea[3].Contains("H") | linea[3].Contains("h"); codigoObj[i] = linea[3].Replace("h", ""); codigoObj[i] = linea[3].Replace("H", ""); if (!x) { codigoObj[i] = MetodosAuxiliares.decimalAHexadecimal(int.Parse(codigoObj[i])); } if (codigoObj[i].Length < 6) { resto = 6 - codigoObj[i].Length; aux = ""; for (int j = 0; j < resto; j++) { aux += "0"; } codigoObj[i] = aux + codigoObj[i]; } else if (codigoObj[i].Length > 6) { codigoObj[i] = codigoObj[i].Substring(0, 6); } #endregion break; default: #region Instrucciones if (!linea[2].Equals("RSUB")) { linea[3] = linea[3].Replace(" ", ""); x = linea[3].Contains(",X") | linea[3].Contains(",x"); linea[3] = linea[3].Replace(",X", ""); linea[3] = linea[3].Replace(",x", ""); if (this.tabSim.Keys.Contains(linea[3])) { codigoObj[i] = this.instrucciones[linea[2]] + MetodosAuxiliares.decimalAHexadecimal(this.tabSim[linea[3]]); } else { codigoObj[i] = this.instrucciones[linea[2]] + "7FFF"; } if (x) { codigoObj[i] = MetodosAuxiliares.hexadecimalABinario(codigoObj[i]); cadena = codigoObj[i].ToCharArray(); cadena[8] = '1'; codigoObj[i] = new string(cadena); codigoObj[i] = MetodosAuxiliares.decimalAHexadecimal(MetodosAuxiliares.binarioADecimal(codigoObj[i])); } } else { codigoObj[i] = this.instrucciones[linea[2]] + "0000"; } #endregion break; } } else { codigoObj[i] = "---"; } } else { codigoObj[i] = "Error: de Sintaxis"; } } else { this.codigoObj[i] = "Error: Linea vacia"; } } this.ensamblaIntermedio(dataGridViewIntermedio); this.creaArchivoObj(); }
public void paso1(DataGridView dataGridViewIntermedio) { string[] codigo; MyErrorListener errorListener; this.lineasError = new List <bool>(); this.errores = new List <string>(); this.intermedio = new List <string>(); this.tabSim = new Dictionary <string, long>(); for (int i = 0; i < this.Archivo.Count; i++) { lexer = new SICEstandarLexer(new AntlrInputStream(this.Archivo[i])); tokens = new CommonTokenStream(lexer); parser = new SICEstandarParser(tokens); errorListener = new MyErrorListener(i + 1); parser.AddErrorListener(errorListener); parser.prog(); codigo = this.Archivo[i].Split('\t'); this.lineasError.Add(errorListener.ExisteError); if (!errorListener.ExisteError) { try { if (!codigo[1].Equals("START") && !codigo[1].Equals("END")) { this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "No"); if (!string.IsNullOrEmpty(codigo[0])) { this.TabSim.Add(codigo[0], this.cp); } this.incrementaInstruccionDirectiva(codigo); } else if (codigo[1].Equals("START")) { codigo[2] = codigo[2].ToUpper(); if (codigo[2].Contains("H")) { this.cp = MetodosAuxiliares.hexadecimalADecimal(codigo[2].Replace("H", "")); this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "No"); } else { this.cp = long.Parse(codigo[2]); this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "no"); } } else if (codigo[1].Equals("END")) { //this.intermedio.Add(this.cp.ToString() + "\t" + this.archivo[i]); this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "no"); } } catch (ArgumentException) { this.errores.Add("Linea" + (i + 1).ToString() + ": Error Simbolo repetido"); dataGridViewIntermedio.Rows.Remove(dataGridViewIntermedio.Rows[dataGridViewIntermedio.Rows.Count - 1]); this.intermedio.Remove(this.intermedio.Last()); //this.intermedio.Add(this.cp.ToString() + "\t" + this.archivo[i] + "*"); this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "Simbolo"); this.incrementaInstruccionDirectiva(codigo); } } else { if (!string.IsNullOrEmpty(this.Archivo[i])) { if (this.instrucciones.Keys.Contains(codigo[1]) || this.Directivas.Contains(codigo[1]) || codigo[1].Equals("WORD")) { if (this.instrucciones.Keys.Contains(codigo[0]) || this.Directivas.Contains(codigo[0]) || codigo[0].Equals("WORD")) { this.errores.Add("Linea" + (i + 1).ToString() + ": Error de sintaxis la etiqueta no puede ser la palabra reservada \"" + codigo[0] + "\""); this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "Syntax"); } else { this.errores.Add("Linea" + (i + 1).ToString() + ": Error de sintaxis el operando: \"" + codigo[2] + "\" Esta mal escrito"); this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "Syntax"); } } else { this.errores.Add("Linea" + (i + 1).ToString() + ": Error instruccion \"" + codigo[1] + "\" no existe"); this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "Instruccion"); } } else { this.errores.Add("Linea" + (i + 1).ToString() + ": Error de sintaxis no debe haber lineas vacias"); codigo = new string[] { "\t", "\t", "\t" }; this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "Vacia"); } } } this.paso1Logrado = true; }
private AcessoSteps() { Auxiliar = new MetodosAuxiliares(); HomePage = new HomePageObj(); }
private CadastrarSteps() { Cadastrar = new CadastroPageObj(); Auxiliar = new MetodosAuxiliares(); HomePage = new HomePageObj(); }