public static void RRF(string commandAsString) // Carry Flag hier noch Falsch!!!!!!!!!!!!!!!!!!!!!!!!!! { 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(5, 7); //Argument, Adresse f auslesen string dLiteralbinary = binary.Substring(4, 1); // 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 ushort fWertvar = Registerspeicher.getRegisterWert(fAsByte); if (Registerspeicher.checkIfBitIsSet(Registerspeicher.STATUS, Registerspeicher.C)) { fWertvar |= 0x100; //Linkeste Bit wird gesetzt, wenn Carrybit gesetzt war Console.WriteLine("fWertvar+: " + fWertvar.ToString("X2")); } if ((fWertvar & 0x01) != 0) //Rechteste Bit wird ins Carryflag geschoben { Registerspeicher.speicher[Registerspeicher.STATUS] |= 0x01; // C-flag wird auf 1 gesetzt; Registerspeicher.labels[Registerspeicher.STATUS].Content = Registerspeicher.speicher[Registerspeicher.STATUS].ToString("X2"); //X2 prints the string as two uppercase hexadecimal characters mainWin.CLabel.Content = "1"; } else { Registerspeicher.speicher[Registerspeicher.STATUS] &= 0xFE; // C-flag wird auf 0 gesetzt; Registerspeicher.labels[Registerspeicher.STATUS].Content = Registerspeicher.speicher[Registerspeicher.STATUS].ToString("X2"); //X2 prints the string as two uppercase hexadecimal characters mainWin.CLabel.Content = "0"; } fWertvar >>= 1; //1 rechts schifften var result = (byte)fWertvar; if (dLiteralbinary == "0") { Registerspeicher.W = result; } else if (dLiteralbinary == "1") { Registerspeicher.setRegisterWert(fAsByte, result); } else { MessageBox.Show("Problem RRF - d is not defined"); } }