Пример #1
0
        public static void BCF(string commandAsString)
        {
            int    myLiteralAsNum = Convert.ToInt32(commandAsString, 16); // string zu int konvertieren
            string binary         = Convert.ToString(myLiteralAsNum, 2);  // int zu Binärstring konvertieren
            string fLiteralbinary = binary.Substring(6, 7);               //Argument, Adresse f auslesen
            string bLiteralbinary = binary.Substring(3, 3);               // Argument d auslesen ob 1 oder 0

            int  fAsInt           = Convert.ToInt32(fLiteralbinary, 2);   //Binäradresse wird als Int gespeichert
            byte fAsByteUnchecked = Convert.ToByte(fAsInt);

            byte fAsByte = CheckIndirectAddressing(fAsByteUnchecked); //Indirekte Adressierung wird überprüft

            byte fWert = Registerspeicher.getRegisterWert(fAsByte);

            int  bAsInt = Convert.ToInt32(bLiteralbinary, 2); //B-binär wird als Int gespeichert
            byte result = 0;

            if (bAsInt == 0)
            {
                result = (byte)(fWert & 0xFE);
            }
            else if (bAsInt == 1)
            {
                result = (byte)(fWert & 0xFD);
            }
            else if (bAsInt == 2)
            {
                result = (byte)(fWert & 0xFB);
            }
            else if (bAsInt == 3)
            {
                result = (byte)(fWert & 0xF7);
            }
            else if (bAsInt == 4)
            {
                result = (byte)(fWert & 0xEF);
            }
            else if (bAsInt == 5)
            {
                result = (byte)(fWert & 0xDF);
            }
            else if (bAsInt == 6)
            {
                result = (byte)(fWert & 0xBF);
            }
            else if (bAsInt == 7)
            {
                result = (byte)(fWert & 0x7F);
            }
            else
            {
                MessageBox.Show("Problem BCF - b is not defined");
            }
            Registerspeicher.setRegisterBCF(fAsByte, result);
        }