예제 #1
0
        static void Main(string[] args)
        {
            RAM       ram       = new RAM();
            AddresBus addresBus = new AddresBus(ram);
            DataBus   dataBus   = new DataBus(addresBus);
            CPU       cPU       = new CPU(dataBus);
            ALU       aLU       = new ALU(cPU);
            double    element;

            Console.WriteLine("Добро пожаловать в эмулятор работы ЦП по сложению двух чисел. Далее эмуляция работы всех компонентов будет следующая: процессор - синий, шина данных - красная, шина адреса - желтая, АЛУ - зеленая, оперативная память - фиолетовая, весь вспомогательный функционал - белый. Введите входные данные в соответствии с требованиями");

            Console.WriteLine();
            for (int i = 1; i < 3; i++)
            {
                Console.Write("Введите {0} операнд в десятичном виде: ", i);
                element = double.Parse(Console.ReadLine());
                ram.AddNumber(element);
            }
            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.DarkMagenta; // RAM work
            Console.WriteLine("Ваши данные хранятся в Оперативной памяти следующим образом ");
            ram.ShowMass();

            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Blue;// CPU work
            cPU.GetCommand();

            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.DarkYellow; // Addres Bus work
            Console.Write(" Адрес операнда:  " + addresBus.AddresBusData());
            cPU.Reg();
            ram.AddresChange();
            Console.ForegroundColor = ConsoleColor.Blue;// CPU work
            Console.WriteLine();

            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Red; // Data Bus work
            Console.Write(" На шину данных поступило и передается " + dataBus.Number() + " : ");
            dataBus.GetIntBinaryNumber(dataBus.Number());
            //dataBus.ShowBus();
            Console.WriteLine();

            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.DarkYellow; // Addres Bus work
            Console.Write(" Адрес операнда: " + addresBus.AddresBusData());
            cPU.Reg();
            ram.AddresChange();
            Console.WriteLine();

            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Red; // Data Bus work
            Console.Write(" На шину данных поступило и передается " + dataBus.Number() + " : ");
            dataBus.GetIntBinaryNumber(dataBus.Number());
            //dataBus.ShowBus();
            Console.WriteLine();

            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.Write(" Нормализация чисел");
            Console.WriteLine();

            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.Write(" Числа из регистров процессора извлекаются в АЛУ");

            Console.WriteLine();

            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Green;// ALU work
            Console.Write(" Сумма равна АЛУ " + aLU.Summ());
            cPU.SetSummCPU(aLU.Summ());
            cPU.Reg();
            Console.WriteLine();

            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Blue;// CPU work
            double getSum = cPU.GetSum();

            Console.Write(" Сумма в регистре процессора " + getSum);
            Console.WriteLine();

            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Red; // Data Bus work
            Console.Write(" На шину данных поступило и передается " + getSum + " : ");
            dataBus.GetIntBinaryNumber(getSum);
            //dataBus.ShowBus();
            Console.WriteLine();

            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.DarkMagenta; // RAM work
            Console.Write(" В оперативную память поступил результат суммы " + getSum);
            Console.WriteLine();


            Console.ReadKey();
        }
예제 #2
0
        int comandCounter         = 0;             // Counter of comand

        public CPU(DataBus dataBus)                // Getting of data from Data Bus
        {
            this.dataBus = dataBus;
        }