예제 #1
0
        protected override void incrementaInstruccionDirectiva(string[] codigo)
        {
            if (this.instruccionesFormato4.Keys.Contains(codigo[1]))
            {
                this.cp += 4;
            }
            else if (this.instruccionesFormato3.Keys.Contains(codigo[1]) || codigo[1].Equals("WORD"))
            {
                this.cp += 3;
            }
            else if (this.instruccionesFormato2.Keys.Contains(codigo[1]))
            {
                this.cp += 2;
            }
            else if (this.instruccionesFormato1.Keys.Contains(codigo[1]))
            {
                this.cp++;
            }
            else if (this.directiva.Contains(codigo[1]))
            {
                codigo[2] = codigo[2].ToUpper();
                switch (codigo[1])
                {
                case "BYTE":
                    if (codigo[2].Contains("X"))
                    {
                        cp += (long)Math.Ceiling((decimal)(codigo[2].Length - 3) / 2);
                    }
                    else if (codigo[2].Contains("C"))
                    {
                        cp += codigo[2].Length - 3;
                    }
                    break;

                case "RESW":
                    codigo[2] = codigo[2].ToUpper();
                    if (codigo[2].Contains("H"))
                    {
                        cp += 3 * MetodosAuxiliares.hexadecimalADecimal(codigo[2].Replace("H", ""));
                    }
                    else
                    {
                        cp += 3 * long.Parse(codigo[2]);
                    }
                    break;

                case "RESB":
                    codigo[2] = codigo[2].ToUpper();
                    if (codigo[2].Contains("H"))
                    {
                        cp += MetodosAuxiliares.hexadecimalADecimal(codigo[2].Replace("H", ""));
                    }
                    else
                    {
                        cp += long.Parse(codigo[2]);
                    }
                    break;
                }
            }
        }
        private bool relativoContador(ref string operando, string cpSig)
        {
            bool band;
            long desp;
            long dir;
            band = false;
            if (tabSim.TryGetValue(operando, out dir))
            {
                desp = dir - MetodosAuxiliares.hexadecimalADecimal(cpSig);
                if (desp >= (-2048) & desp <= 2047)
                {
                    operando = MetodosAuxiliares.decimalAHexadecimal(desp);
                    if (desp < 0)
                    {
                        operando = MetodosAuxiliares.ajustaOperando(operando, 3, "F");
                    }
                    else
                    {
                        operando = MetodosAuxiliares.ajustaOperando(operando, 3, "0");
                    }
                    band = true;
                }
            }
            return band;

        }
예제 #3
0
        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);
        }
예제 #4
0
        public static long calculaTamañoMemoria(string v)
        {
            string tamaño;

            tamaño = v.Substring(13, 6);
            return((MetodosAuxiliares.hexadecimalADecimal(tamaño) / 16) + 1);
        }
예제 #5
0
        public string BuscaDireccion3(string m)
        {
            long   cp    = MetodosAuxiliares.hexadecimalADecimal(m);
            string Valor = "";
            int    i     = (int)ObtenFila(m);
            int    j     = (int)MetodosAuxiliares.hexadecimalADecimal(m.Last().ToString());

            Valor = this.mapa[i, j];
            j++;
            if (j > 16)
            {
                i++;
                j = 0;
            }
            Valor += this.mapa[i, j];
            j++;
            if (j > 16)
            {
                i++;
                j = 0;
            }
            j++;
            Valor += this.mapa[i, j];

            return(Valor);
        }
예제 #6
0
        private string[] obtenOperando(string direccion)
        {
            long i;
            long j;

            string[] m;
            m    = new string[3];
            i    = this.memoria.ObtenFila(direccion);
            j    = MetodosAuxiliares.hexadecimalADecimal(direccion.Last().ToString());
            m[0] = this.memoria.Mapa[i, j];
            j++;
            if (j > 16)
            {
                i++;
                j = 0;
            }
            m[1] = this.memoria.Mapa[i, j];
            j++;
            if (j > 16)
            {
                i++;
                j = 0;
            }
            m[2] = this.memoria.Mapa[i, j];
            return(m);
        }
예제 #7
0
 public long ObtenFila(string direccion)
 {
     char[] aux;
     aux = direccion.ToCharArray();
     aux[aux.Length - 1] = '0';
     return((MetodosAuxiliares.hexadecimalADecimal(new string(aux)) - MetodosAuxiliares.hexadecimalADecimal(this.inicio)) / 16);
 }
예제 #8
0
 private string JEQ(string m)
 {
     if (cc.Equals("="))
     {
         this.cp = MetodosAuxiliares.hexadecimalADecimal(m);
     }
     return("CP <- m si CC esta en =");
 }
예제 #9
0
        public static long calculaTamaño(string first, string last)
        {
            long inicio;
            long final;

            inicio = MetodosAuxiliares.hexadecimalADecimal(first.Split('\t').First());
            final  = MetodosAuxiliares.hexadecimalADecimal(last.Split('\t').First());
            return(final - inicio);
        }
예제 #10
0
        private string JSUB(string m)
        {
            string mensaje;

            mensaje = "L ← (CP); CP ← m\n";
            mensaje = "\t\t L ← " + MetodosAuxiliares.decimalAHexadecimal(this.cp) + ";  CP ← " + m;
            this.l  = this.cp;
            cp      = MetodosAuxiliares.hexadecimalADecimal(m);
            return(mensaje);
        }
예제 #11
0
        internal string BuscaFinal(string m)
        {
            long   cp    = MetodosAuxiliares.hexadecimalADecimal(m);
            string Valor = "";
            int    i     = (int)ObtenFila(m);
            int    j     = (int)MetodosAuxiliares.hexadecimalADecimal(m.Last().ToString());

            Valor = this.mapa[i, j];

            return(Valor);
        }
예제 #12
0
        private string LDL(string m)
        {
            string sentencia = "";
            long   valorL;

            sentencia = memoria.BuscaDireccion3(m);
            valorL    = MetodosAuxiliares.hexadecimalADecimal(sentencia);
            this.l    = valorL;

            return("L <- (m...m+2)");
        }
예제 #13
0
        private string LDX(string m)
        {
            string mensaje;

            string[] operando;
            operando = this.obtenOperando(m);
            mensaje  = "Efecto X ← (m, m+1, m+2)\n";
            mensaje  = "\t\t X ← " + operando[0] + operando[1] + operando[2];
            this.x   = MetodosAuxiliares.hexadecimalADecimal(operando[0] + operando[1] + operando[2]);
            return(mensaje);
        }
예제 #14
0
        private void cargaRegistroT(string registro)
        {
            int    bytesVaciados;
            long   filaInicio;
            long   columnaInicio;
            long   bytes;
            string direccioInicio;
            string contenido;

            bytesVaciados  = 0;
            direccioInicio = registro.Substring(1, 6);
            bytes          = MetodosAuxiliares.hexadecimalADecimal(registro.Substring(7, 2));
            contenido      = registro.Substring(9);
            if (!direccioInicio.Last().Equals('0'))
            {
                char[] aux;
                aux = direccioInicio.ToCharArray();
                aux[aux.Length - 1] = '0';
                filaInicio          = MetodosAuxiliares.CalculaFilaMemoria(new string(aux), inicio, filas);
                columnaInicio       = MetodosAuxiliares.hexadecimalADecimal(direccioInicio.Last().ToString());
            }
            else
            {
                filaInicio    = MetodosAuxiliares.CalculaFilaMemoria(direccioInicio, inicio, filas);
                columnaInicio = 0;
            }
            for (int i = 0; i < 16; i++)
            {
                if (bytesVaciados == bytes | columnaInicio + i == 16)
                {
                    break;
                }
                this.mapa[filaInicio, ((int)(columnaInicio)) + i] = contenido[(i * 2)].ToString() + contenido[(i * 2) + 1].ToString();
                bytesVaciados++;
            }
            while (bytesVaciados != bytes)
            {
                filaInicio++;
                int desplazamiento;
                desplazamiento = bytesVaciados;
                for (int i = 0; i < 16; i++)
                {
                    string bite;
                    bite  = contenido[(desplazamiento * 2) + (i * 2)].ToString();
                    bite += contenido[(desplazamiento * 2) + (i * 2) + 1].ToString();
                    this.mapa[filaInicio, i] = bite;
                    bytesVaciados++;
                    if (bytesVaciados == bytes)
                    {
                        break;
                    }
                }
            }
        }
예제 #15
0
        private string DIV(string m)
        {
            long   valorTemp;
            string sentencia = "";

            sentencia = this.memoria.BuscaDireccion3(m);
            valorTemp = MetodosAuxiliares.hexadecimalADecimal(sentencia);

            this.a = this.a / valorTemp;
            return("(A) <- (A)/(m..m+2)");
        }
예제 #16
0
        private string SUB(string m)
        {
            string mensaje;

            string[] operando;
            operando = this.obtenOperando(m);
            mensaje  = "Efecto: A ← (A) – (m, m+1, m+2)\n";
            mensaje  = "\t A ← " + MetodosAuxiliares.decimalAHexadecimal(this.a) + "+" + operando[0] + operando[1] + operando[2];
            this.a   = this.a - MetodosAuxiliares.hexadecimalADecimal(operando[0] + operando[1] + operando[2]);
            mensaje  = "\t\t A ← " + MetodosAuxiliares.decimalAHexadecimal(this.a);
            return(mensaje);
        }
예제 #17
0
        public string ObtenCodOp(ref long cp)
        {
            int    i;
            int    j;
            string codOp;
            string cpHex;

            cpHex = MetodosAuxiliares.decimalAHexadecimal(cp);
            i     = (int)this.ObtenFila(cpHex);
            j     = (int)MetodosAuxiliares.hexadecimalADecimal(cpHex.Last().ToString());
            codOp = this.mapa[i, j];
            cp++;
            return(codOp);
        }
예제 #18
0
        private string LDCH(string m)
        {
            string cadena      = "";
            string aux         = "";
            string hexadecimal = "";
            string valorA      = MetodosAuxiliares.decimalAHexadecimal(this.a);

            aux         = valorA.Substring(0, 4);
            hexadecimal = MetodosAuxiliares.hexadecimalABinario(m);
            cadena      = memoria.BuscaFinal(m);
            aux        += cadena;
            this.a      = MetodosAuxiliares.hexadecimalADecimal(aux);
            return("A[el byte de mas a la derecha ] <- (m)");
        }
예제 #19
0
        public void almacenaDatos(string[] operando, int v, string m)
        {
            int  i;
            int  j;
            long decM;

            for (int k = 0; k < v; k++)
            {
                i = (int)this.ObtenFila(m);
                j = (int)MetodosAuxiliares.hexadecimalADecimal(m.Last().ToString());
                this.mapa[i, j] = operando[k];
                decM            = MetodosAuxiliares.hexadecimalADecimal(m) + 1;
                m = MetodosAuxiliares.decimalAHexadecimal(decM);
            }
        }
예제 #20
0
        public static long CalculaFilaMemoria(string direccioInicio, string inicio, long filas)
        {
            long indice;

            indice = -1;
            for (long i = 0; i < filas; i++)
            {
                if (MetodosAuxiliares.hexadecimalADecimal(direccioInicio) == (MetodosAuxiliares.hexadecimalADecimal(inicio) + (i * 16)))
                {
                    indice = i;
                    break;
                }
            }
            return(indice);
        }
예제 #21
0
        private string JGT(string m)
        {
            string mensaje;

            mensaje = "Efecto: CP ← m si CC está en <\n";
            if (cc.Equals(">"))
            {
                this.cp  = MetodosAuxiliares.hexadecimalADecimal(m);
                mensaje += "\t\t CP ← " + this.cp;
            }
            else
            {
                mensaje += "\t\t No cumple con las condiciones, el CP no fue alterado";
            }
            return(mensaje);
        }
예제 #22
0
        public long vaciaRegistrosT()
        {
            long cp;

            cp = 0;
            foreach (string registro in this.registros)
            {
                switch (registro.First())
                {
                case 'E':
                    cp = MetodosAuxiliares.hexadecimalADecimal(registro.Substring(1));
                    break;

                case 'T':
                    this.cargaRegistroT(registro);
                    break;
                }
            }
            return(cp);
        }
예제 #23
0
 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;
 }
예제 #24
0
        public string ObtenM(ref long cp)
        {
            int    i;
            int    j;
            string m;
            string cpHex;

            cpHex = MetodosAuxiliares.decimalAHexadecimal(cp);
            i     = (int)this.ObtenFila(cpHex);
            j     = (int)MetodosAuxiliares.hexadecimalADecimal(cpHex.Last().ToString());
            m     = this.mapa[i, j];
            j++;
            if (j > 16)
            {
                i++;
                j = 0;
            }
            m  += this.mapa[i, j];
            cp += 2;
            return(m);
        }
예제 #25
0
        private string COMP(string m)
        {
            long   valorTemp;
            string sentencia = "";

            sentencia = this.memoria.BuscaDireccion3(m);
            valorTemp = MetodosAuxiliares.hexadecimalADecimal(sentencia);
            if (this.a < valorTemp)
            {
                this.cc = "<";
            }
            else if (this.a > valorTemp)
            {
                this.cc = ">";
            }
            else if (this.a == valorTemp)
            {
                this.cc = "=";
            }

            return("(A) : (m..m+2)");
        }
예제 #26
0
 public static long FinalPrograma(string inicio, string tamaño)
 {
     return(MetodosAuxiliares.hexadecimalADecimal(inicio) + MetodosAuxiliares.hexadecimalADecimal(tamaño));
 }
예제 #27
0
        private string J(string m)/////
        {
            this.cp = MetodosAuxiliares.hexadecimalADecimal(m);

            return("CP<-m");
        }
        protected override void generaRegistrosT()
        {
            int i;
            int j;
            string registroT;
            string aux;
            string bytes;
            aux = "";
            i = 1;
            while (!this.archivo[i].Contains("END"))
            {
                registroT = "T" + MetodosAuxiliares.ajustaDireccion(this.intermedio[i].Split('\t').First());
                for (j = i; j < this.codigoObj.Length - 1; j++)
                {
                    if (!this.codigoObj[j].Contains("Error"))
                    {
                        if (this.codigoObj[j].Contains("*"))
                        {
                            string cpHex;
                            cpHex = MetodosAuxiliares.decimalAHexadecimal(MetodosAuxiliares.hexadecimalADecimal(this.intermedio[j].Split('\t').First()) +1); 
                            this.relocalizables.Add(MetodosAuxiliares.ajustaOperando(cpHex,6,"0"));
                            this.codigoObj[j] = this.codigoObj[j].Replace("*", "");
                        }
                        if (((aux.Length + this.codigoObj[j].Length) / 2) > 30)
                        {
                            break;
                        }
                        else if (this.codigoObj[j].Equals("---") & !this.archivo[j].Contains("BASE"))
                        {
                            break;
                        }
                        else if(!this.archivo[j].Contains("BASE"))
                        {
                            aux += this.codigoObj[j];
                        }
                    }

                }
                bytes = MetodosAuxiliares.decimalAHexadecimal(aux.Length / 2);
                if (bytes.Length < 2)
                {
                    bytes = "0" + bytes;
                }
                registroT += bytes;
                registroT += aux;
                aux = "";
                if (registroT.Length > 9)
                {
                    this.archivoObj.Add(registroT);
                }
                for (int k = j; k < this.codigoObj.Length; k++)
                {
                    if (!codigoObj[k].Equals("---") | this.intermedio[k].Contains("END"))
                    {
                        i = k;
                        break;
                    }
                }

            }
        }
예제 #29
0
        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);
        }
예제 #30
0
        public override 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 SICExtendidaLexer(new AntlrInputStream(this.Archivo[i]));
                tokens        = new CommonTokenStream(lexer);
                parser        = new SICExtendidaParser(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") & !codigo[1].Equals("BASE"))
                        {
                            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") | codigo[1].Equals("BASE"))
                        {
                            //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.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "Simbolo");
                        this.incrementaInstruccionDirectiva(codigo);
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(this.Archivo[i]))
                    {
                        if (this.instruccionesFormato1.Keys.Contains(codigo[1]) ||
                            this.instruccionesFormato2.Keys.Contains(codigo[1]) ||
                            this.instruccionesFormato3.Keys.Contains(codigo[1]) ||
                            this.Directivas.Contains(codigo[1]))
                        {
                            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 de sintaxis no debe haber lineas vacias");
                        codigo = new string[] { "\t", "\t", "\t" };
                        this.ensamblaIntermedio(dataGridViewIntermedio, codigo, i, "Vacia");
                    }
                }
            }
            this.paso1Logrado = true;
        }