Esempio n. 1
0
        private int OdczytajWartosc(rejestrIJegoCzesc argument)
        {
            int zmienna = 0;

            if (argument.Liczba == true)
            {
                zmienna = argument.x;
            }
            else
            {
                switch (argument.nazwaRejestru)
                {
                case Rejestry.AX:
                    zmienna = AX;
                    break;

                case Rejestry.BX:
                    zmienna = BX;
                    break;

                case Rejestry.CX:
                    zmienna = CX;
                    break;

                case Rejestry.DX:
                    zmienna = DX;
                    break;
                }
                switch (argument.czescRejestru)
                {
                case Czesc.Calosc:
                    break;

                case Czesc.Dolna:
                    zmienna = zmienna & 0xFF;
                    break;

                case Czesc.Gorna:
                    zmienna = (zmienna & 0xFF) << 8;
                    break;
                }
            }

            return(zmienna);
        }
Esempio n. 2
0
        private static rejestrIJegoCzesc CzytajRejestr(string split)
        {
            rejestrIJegoCzesc nowyRejestr = new rejestrIJegoCzesc();

            if (split[0] == '[' && split[split.Length - 1] == ']')
            {
                split             = split.Substring(1, split.Length - 2);
                nowyRejestr.Adres = true;
            }
            else
            {
                nowyRejestr.Adres = false;
            }


            switch (split)
            {
            case "AX":
                nowyRejestr.nazwaRejestru = Rejestry.AX;
                nowyRejestr.czescRejestru = Czesc.Calosc;
                break;

            case "AH":
                nowyRejestr.nazwaRejestru = Rejestry.AX;
                nowyRejestr.czescRejestru = Czesc.Gorna;
                break;

            case "AL":
                nowyRejestr.nazwaRejestru = Rejestry.AX;
                nowyRejestr.czescRejestru = Czesc.Dolna;
                break;

            case "BX":
                nowyRejestr.nazwaRejestru = Rejestry.BX;
                nowyRejestr.czescRejestru = Czesc.Calosc;
                break;

            case "BH":
                nowyRejestr.nazwaRejestru = Rejestry.BX;
                nowyRejestr.czescRejestru = Czesc.Gorna;
                break;

            case "BL":
                nowyRejestr.nazwaRejestru = Rejestry.BX;
                nowyRejestr.czescRejestru = Czesc.Dolna;
                break;

            case "CX":
                nowyRejestr.nazwaRejestru = Rejestry.CX;
                nowyRejestr.czescRejestru = Czesc.Calosc;
                break;

            case "CH":
                nowyRejestr.nazwaRejestru = Rejestry.CX;
                nowyRejestr.czescRejestru = Czesc.Gorna;
                break;

            case "CL":
                nowyRejestr.nazwaRejestru = Rejestry.CX;
                nowyRejestr.czescRejestru = Czesc.Dolna;
                break;

            case "DX":
                nowyRejestr.nazwaRejestru = Rejestry.DX;
                nowyRejestr.czescRejestru = Czesc.Calosc;
                break;

            case "DH":
                nowyRejestr.nazwaRejestru = Rejestry.DX;
                nowyRejestr.czescRejestru = Czesc.Gorna;
                break;

            case "DL":
                nowyRejestr.nazwaRejestru = Rejestry.DX;
                nowyRejestr.czescRejestru = Czesc.Dolna;
                break;

            default:
                nowyRejestr.x      = Int32.Parse(split);
                nowyRejestr.Liczba = true;
                break;
            }
            return(nowyRejestr);
        }
Esempio n. 3
0
        private void Metoda(int a)
        {
            string[] textBox = richTextBox1.Lines;
            if (textBox.Length != 0 && a < textBox.Length)
            {
                string   theText = textBox[a].ToUpper();
                string[] split   = theText.Split(new Char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries);


                rejestrIJegoCzesc czescLewa = new rejestrIJegoCzesc();
                if (split.Length > 1)
                {
                    czescLewa = CzytajRejestr(split[1]);
                }
                rejestrIJegoCzesc czescPrawa = new rejestrIJegoCzesc();
                if (split.Length > 2)
                {
                    czescPrawa = CzytajRejestr(split[2]);
                }
                int zmienna  = 0;
                int zmienna2 = 0;

                switch (split[0])
                {
                case "INT":
                    if (!czescLewa.Liczba)
                    {
                        return;
                    }
                    switch (czescLewa.x)
                    {
                    case 1:
                        HDD();
                        break;

                    case 2:
                        PrintScreen();
                        break;

                    case 3:
                        PodajCzasZegaraRTC();
                        break;

                    case 4:
                        OdczytPozycjiKursora();
                        break;

                    case 5:
                        ZmienRozmairKursora();
                        break;

                    case 6:
                        StworzNowyFolder();
                        break;

                    case 7:
                        UtworzPlik();
                        break;

                    case 8:
                        ZmienNazwePliku();
                        break;

                    case 9:
                        UsunPlik();
                        break;
                    }
                    break;

                case "ADD":
                    if (split.Length < 3)
                    {
                        return;
                    }
                    zmienna = OdczytajWartosc(czescPrawa);
                    if (czescPrawa.Adres == true)
                    {
                        zmienna = pamiec[zmienna];
                    }

                    zmienna2 = 0;
                    if (czescLewa.Adres == true)
                    {
                        zmienna2         = OdczytajWartosc(czescLewa);
                        pamiec[zmienna2] = (ushort)zmienna;
                    }
                    else
                    {
                        if (czescLewa.Liczba == true)
                        {
                            MessageBox.Show("blad");
                        }
                        else
                        {
                            switch (czescLewa.nazwaRejestru)
                            {
                            case Rejestry.AX:
                                switch (czescLewa.czescRejestru)
                                {
                                case Czesc.Calosc:
                                    AX = (ushort)(AX + ((ushort)zmienna));
                                    break;

                                case Czesc.Dolna:
                                    ushort dol = (ushort)((AX & 0xFF) + ((ushort)zmienna & 0xFF));
                                    AX  = (ushort)(AX & 0xFF00);
                                    AX |= dol;
                                    break;

                                case Czesc.Gorna:
                                    ushort gora = (ushort)(((AX & 0xFF00) >> 8) + ((ushort)zmienna & 0xFF));
                                    AX  = (ushort)(AX & 0xFF);
                                    AX |= (ushort)((gora) << 8);
                                    break;
                                }
                                break;

                            case Rejestry.BX:
                                switch (czescLewa.czescRejestru)
                                {
                                case Czesc.Calosc:
                                    BX = (ushort)(BX + ((ushort)zmienna));
                                    break;

                                case Czesc.Dolna:
                                    ushort dol = (ushort)((BX & 0xFF) + ((ushort)zmienna & 0xFF));
                                    BX  = (ushort)(BX & 0xFF00);
                                    BX |= dol;
                                    break;

                                case Czesc.Gorna:
                                    ushort gora = (ushort)(((BX & 0xFF00) >> 8) + ((ushort)zmienna & 0xFF));
                                    BX  = (ushort)(BX & 0xFF);
                                    BX |= (ushort)((gora) << 8);
                                    break;
                                }
                                break;

                            case Rejestry.CX:
                                switch (czescLewa.czescRejestru)
                                {
                                case Czesc.Calosc:
                                    CX = (ushort)(CX + ((ushort)zmienna));
                                    break;

                                case Czesc.Dolna:
                                    ushort dol = (ushort)((CX & 0xFF) + ((ushort)zmienna & 0xFF));
                                    CX  = (ushort)(CX & 0xFF00);
                                    CX |= dol;
                                    break;

                                case Czesc.Gorna:
                                    ushort gora = (ushort)(((CX & 0xFF00) >> 8) + ((ushort)zmienna & 0xFF));
                                    CX  = (ushort)(CX & 0xFF);
                                    CX |= (ushort)((gora) << 8);
                                    break;
                                }
                                break;

                            case Rejestry.DX:
                                switch (czescLewa.czescRejestru)
                                {
                                case Czesc.Calosc:
                                    DX = (ushort)(DX + ((ushort)zmienna));
                                    break;

                                case Czesc.Dolna:
                                    ushort dol = (ushort)((DX & 0xFF) + ((ushort)zmienna & 0xFF));
                                    DX  = (ushort)(DX & 0xFF00);
                                    DX |= dol;
                                    break;

                                case Czesc.Gorna:
                                    ushort gora = (ushort)(((DX & 0xFF00) >> 8) + ((ushort)zmienna & 0xFF));
                                    DX  = (ushort)(DX & 0xFF);
                                    DX |= (ushort)((gora) << 8);
                                    break;
                                }

                                break;
                            }
                        }
                    }

                    break;

                case "SUB":
                    if (split.Length < 3)
                    {
                        return;
                    }
                    zmienna = OdczytajWartosc(czescPrawa);
                    if (czescPrawa.Adres == true)
                    {
                        zmienna = pamiec[zmienna];
                    }

                    zmienna2 = 0;
                    if (czescLewa.Adres == true)
                    {
                        zmienna2         = OdczytajWartosc(czescLewa);
                        pamiec[zmienna2] = (ushort)zmienna;
                    }
                    else
                    {
                        if (czescLewa.Liczba == true)
                        {
                            MessageBox.Show("blad");
                        }
                        else
                        {
                            switch (czescLewa.nazwaRejestru)
                            {
                            case Rejestry.AX:
                                switch (czescLewa.czescRejestru)
                                {
                                case Czesc.Calosc:
                                    AX = (ushort)(AX - ((ushort)zmienna));
                                    break;

                                case Czesc.Dolna:
                                    ushort dol = (ushort)((AX & 0xFF) - ((ushort)zmienna & 0xFF));
                                    AX  = (ushort)(AX & 0xFF00);
                                    AX |= dol;
                                    break;

                                case Czesc.Gorna:
                                    ushort gora = (ushort)(((AX & 0xFF00) >> 8) - ((ushort)zmienna & 0xFF));
                                    AX  = (ushort)(AX & 0xFF);
                                    AX |= (ushort)((gora) << 8);
                                    break;
                                }
                                break;

                            case Rejestry.BX:
                                switch (czescLewa.czescRejestru)
                                {
                                case Czesc.Calosc:
                                    BX = (ushort)(BX - ((ushort)zmienna));
                                    break;

                                case Czesc.Dolna:
                                    ushort dol = (ushort)((BX & 0xFF) - ((ushort)zmienna & 0xFF));
                                    BX  = (ushort)(BX & 0xFF00);
                                    BX |= dol;
                                    break;

                                case Czesc.Gorna:
                                    ushort gora = (ushort)(((BX & 0xFF00) >> 8) - ((ushort)zmienna & 0xFF));
                                    BX  = (ushort)(BX & 0xFF);
                                    BX |= (ushort)((gora) << 8);
                                    break;
                                }
                                break;

                            case Rejestry.CX:
                                switch (czescLewa.czescRejestru)
                                {
                                case Czesc.Calosc:
                                    CX = (ushort)(CX - ((ushort)zmienna));
                                    break;

                                case Czesc.Dolna:
                                    ushort dol = (ushort)((CX & 0xFF) - ((ushort)zmienna & 0xFF));
                                    CX  = (ushort)(CX & 0xFF00);
                                    CX |= dol;
                                    break;

                                case Czesc.Gorna:
                                    ushort gora = (ushort)(((CX & 0xFF00) >> 8) - ((ushort)zmienna & 0xFF));
                                    CX  = (ushort)(CX & 0xFF);
                                    CX |= (ushort)((gora) << 8);
                                    break;
                                }
                                break;

                            case Rejestry.DX:
                                switch (czescLewa.czescRejestru)
                                {
                                case Czesc.Calosc:
                                    DX = (ushort)(DX - ((ushort)zmienna));
                                    break;

                                case Czesc.Dolna:
                                    ushort dol = (ushort)((DX & 0xFF) - ((ushort)zmienna & 0xFF));
                                    DX  = (ushort)(DX & 0xFF00);
                                    DX |= dol;
                                    break;

                                case Czesc.Gorna:
                                    ushort gora = (ushort)(((DX & 0xFF00) >> 8) - ((ushort)zmienna & 0xFF));
                                    DX  = (ushort)(DX & 0xFF);
                                    DX |= (ushort)((gora) << 8);
                                    break;
                                }

                                break;
                            }
                        }
                    }
                    break;

                case "MOV":
                    if (split.Length < 3)
                    {
                        return;
                    }
                    zmienna = OdczytajWartosc(czescPrawa);
                    if (czescPrawa.Adres == true)
                    {
                        zmienna = pamiec[zmienna];
                    }

                    zmienna2 = 0;
                    if (czescLewa.Adres == true)
                    {
                        zmienna2         = OdczytajWartosc(czescLewa);
                        pamiec[zmienna2] = (ushort)zmienna;
                    }
                    else
                    {
                        if (czescLewa.Liczba == true)
                        {
                            MessageBox.Show("blad");
                        }
                        else
                        {
                            switch (czescLewa.nazwaRejestru)
                            {
                            case Rejestry.AX:
                                switch (czescLewa.czescRejestru)
                                {
                                case Czesc.Calosc:
                                    AX = (ushort)(((ushort)zmienna));
                                    break;

                                case Czesc.Dolna:
                                    ushort dol = (ushort)(((ushort)zmienna & 0xFF));
                                    AX  = (ushort)(AX & 0xFF00);
                                    AX |= dol;
                                    break;

                                case Czesc.Gorna:
                                    ushort gora = (ushort)(((ushort)zmienna & 0xFF));
                                    AX  = (ushort)(AX & 0xFF);
                                    AX |= (ushort)((gora) << 8);
                                    break;
                                }
                                break;

                            case Rejestry.BX:
                                switch (czescLewa.czescRejestru)
                                {
                                case Czesc.Calosc:
                                    BX = (ushort)(((ushort)zmienna));
                                    break;

                                case Czesc.Dolna:
                                    ushort dol = (ushort)(((ushort)zmienna & 0xFF));
                                    BX  = (ushort)(BX & 0xFF00);
                                    BX |= dol;
                                    break;

                                case Czesc.Gorna:
                                    ushort gora = (ushort)(((ushort)zmienna & 0xFF));
                                    BX  = (ushort)(BX & 0xFF);
                                    BX |= (ushort)((gora) << 8);
                                    break;
                                }
                                break;

                            case Rejestry.CX:
                                switch (czescLewa.czescRejestru)
                                {
                                case Czesc.Calosc:
                                    CX = (ushort)(((ushort)zmienna));
                                    break;

                                case Czesc.Dolna:
                                    ushort dol = (ushort)(((ushort)zmienna & 0xFF));
                                    CX  = (ushort)(CX & 0xFF00);
                                    CX |= dol;
                                    break;

                                case Czesc.Gorna:
                                    ushort gora = (ushort)(((ushort)zmienna & 0xFF));
                                    CX  = (ushort)(CX & 0xFF);
                                    CX |= (ushort)((gora) << 8);
                                    break;
                                }
                                break;

                            case Rejestry.DX:
                                switch (czescLewa.czescRejestru)
                                {
                                case Czesc.Calosc:
                                    DX = (ushort)((ushort)zmienna);
                                    break;

                                case Czesc.Dolna:
                                    ushort dol = (ushort)((ushort)zmienna & 0xFF);
                                    DX  = (ushort)(DX & 0xFF00);
                                    DX |= dol;
                                    break;

                                case Czesc.Gorna:
                                    ushort gora = (ushort)((ushort)zmienna & 0xFF);
                                    DX  = (ushort)(DX & 0xFF);
                                    DX |= (ushort)((gora) << 8);
                                    break;
                                }

                                break;
                            }
                        }
                    }
                    break;
                }
                label1.Text = "Rejestr AX: " + AX.ToString();
                label2.Text = "Rejestr BX: " + BX.ToString();
                label3.Text = "Rejestr CX: " + CX.ToString();
                label4.Text = "Rejestr DX: " + DX.ToString();

                string binarneAX = Convert.ToString(Convert.ToInt32(AX), 2);
                label5.Text = "binarnie " + binarneAX;

                string binarneBX = Convert.ToString(Convert.ToInt32(BX), 2);
                label6.Text = "binarnie " + binarneBX;

                string binarneCX = Convert.ToString(Convert.ToInt32(CX), 2);
                label7.Text = "binarnie " + binarneCX;

                string binarneDX = Convert.ToString(Convert.ToInt32(DX), 2);
                label8.Text = "binarnie " + binarneDX;
            }
            else
            {
                MessageBox.Show("Koniec");
                counter = -1;
            };
        }