示例#1
0
 public static string getInstrucao(int endereco)
 {
     foreach (var item in codigo)
     {
         if (CalculadoraBinario.BinarioParaInt(item.Substring(41, 9)) == endereco)
         {
             return(item);
         }
     }
     return(null);
 }
示例#2
0
        public int LinhaCodigoAtual()
        {
            var pc = CalculadoraBinario.BinarioParaInt(Registradores.PC.getConteudo()) - 1;
            int r  = -1;

            try
            {
                r = _linhaBinarioXCodigo[pc];
            }
            catch (Exception)
            {}
            return(r);
        }
示例#3
0
        private string getMemoria(string endereco)
        {
            var enderecoInt = CalculadoraBinario.BinarioParaInt(endereco);


            var dado = Conteudo.Where(c => c.Endereco == enderecoInt).FirstOrDefault();

            if (dado == null)
            {
                return("".PadLeft(Palavras.LeitorPalavra.TamanhoPalavra, '0'));
            }
            return(dado.Conteudo);
        }
示例#4
0
        private void AddOuEditaMemoria(string endereco, string conteudo)
        {
            var enderecoInt = CalculadoraBinario.BinarioParaInt(endereco);

            var dado = Conteudo.Where(c => c.Endereco == enderecoInt).FirstOrDefault();

            if (dado == null)
            {
                Conteudo.Add(new Dado
                {
                    Conteudo = conteudo,
                    Endereco = enderecoInt
                });
            }
            else
            {
                dado.Conteudo = conteudo;
            }
        }
示例#5
0
        public void Rodar()
        {
            _logger.AddLog("----------------");
            var codigoFirmware = Firmware.getInstrucao(_enderecoFirmware);

            _icc = CalculadoraBinario.BinarioParaInt(codigoFirmware[30].ToString() + codigoFirmware[31].ToString());
            var comando = Palavras.LeitorPalavra.Ler(IR.getConteudo());

            // indirecao
            if (_icc == 1)
            {
                _enderecoFirmware = Decodificador.DecodificaInstrucaoIndirecao(comando);
                codigoFirmware    = Firmware.getInstrucao(_enderecoFirmware);
            }
            // execucao
            if (_icc == 2)
            {
                _enderecoFirmware = Decodificador.DecodificaInstrucaoExecucao(comando);
                codigoFirmware    = Firmware.getInstrucao(_enderecoFirmware);
            }


            if (codigoFirmware[26] == '1')
            {
                codigoFirmware = codigoFirmware.ChangeCaracter(Decodificador.DecodificaPorta(comando.P1Valor), '1');
            }

            if (codigoFirmware[27] == '1')
            {
                codigoFirmware = codigoFirmware.ChangeCaracter(Decodificador.DecodificaPorta(comando.P2Valor), '1');
            }

            BarramentoA.Ciclo(codigoFirmware);
            Memoria.Ciclo(codigoFirmware);
            Ula.Ciclo(codigoFirmware);


            _enderecoFirmware = CalculadoraBinario.BinarioParaInt(codigoFirmware.Substring(32, 9));
        }