Файл: Изучение и исследование микропроцессорного тренажера.odt
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 22.11.2023
Просмотров: 55
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИФГАОУ ВО «Крымский федеральный университет имени В. И. Вернадского»Физико-технический институтКафедра компьютерной инженерии и моделированияЛабораторная работа №1по курсу «Системное программирование»на тему: «Изучение и исследование микропроцессорного тренажера»
Симферополь, 2022Лабораторная работа № 1Тема: Изучение и исследование микропроцессорного тренажера.Цель работы: 1. Практически закрепить знание теоретических сведений об архитектуре микропроцессоров серии КР580; 2. Изучить команды загрузки регистров МП КР580ИК80А и пересылки данных между ними; 3. Привить практические навыки написания программ и программирования операции загрузки регистров микропроцессоров и пересылки данных между ними.Ход работы:Для выполнения лабораторной работы необходимо выполнить следующие задания:Самостоятельная работа//Метод CountBits (int value) перебирает все биты в целом числе. Считает кол-во единиц в двоичном представлении числаusing System;namespace ЛР5_Овчинкина__Е.П._ИВТ_б_з_201{class Program{static void Main(string[] args){//Метод CountBits (int value) перебирает все биты в целом числе. Считает кол-во единиц в двоичном представлении числаint CountBits(int value){int count = 0;while (value != 0){count++;value &= value - 1;}return count;}int N = 12;int K = 0;int Dmin = 3;//Нахожу значность кода (длины кодовой комбинации k):
while (Math.Pow(2, N) > Math.Pow(2, K) / (K + 1)){K++;}//Нахожу количество проверочных разрядов (Проверочных бит):int P = K - N;//Заполняю рандомно число 0 и 1Random rand = new Random();int[] number = new int[K];for (int i = 0; i < K; i++){if (CountBits(i + 1) != 1){number[i] = rand.Next(0, 2);//number[i] = 1; // все 1//number[i] = 0; // все 0}}// Нахожу проверочные биты и записываю их в конецfor (int i = 1; i < K; i *= 2){int bit = 0;for (int j = i; j < K; j++){if ((i & (j + 1)) == 0)continue;bit ^= number[j];}number[i - 1] = bit;}//Вывожу в консоль на экран систематический кодConsole.WriteLine("Систематический код");Console.WriteLine("--------------------------");for (int i = 0; i < K; i++){Console.Write(number[i] + " ");}int[] sindrom = new int[P];Console.WriteLine();//Высчитываю синдром и вывожу его в консоль на экранfor (int y = 0; y < P; y++){int i = (1 << y);int bit = number[i - 1];for (int j = i; j < K; j++){if ((i & (j + 1)) == 0)continue;bit ^= number[j];}sindrom[y] = bit;}Console.WriteLine("Синдром");Console.WriteLine("--------------------------");for (int i = 0; i < P; i++){Console.Write(sindrom[i] + " ");}Console.WriteLine();//Пользователь выбрает бит, в котором будет допущена ошибкаConsole.WriteLine("Выберите любое число от 1 до " + K);int error = Convert.ToInt32(Console.ReadLine());number[error - 1] ^= 1;//Вывожу в консоль на экран код с ошибкойConsole.WriteLine();Console.WriteLine("Код с ошибкой");Console.WriteLine("--------------------------");for (int i = 0; i < K; i++){Console.Write(number[i] + " ");}Console.WriteLine();//Высчитываю синдром с ошибкой и вывожу его в консоль на экранfor (int y = 0; y < P; y++){int i = (1 << y);int bit = number[i - 1];for (int j = i; j < K; j++){if ((i & (j + 1)) == 0)continue;bit ^= number[j];}sindrom[y] = bit;}Console.WriteLine("Синдром");for (int i = 0; i < P; i++){Console.Write(sindrom[i] + " ");}Console.WriteLine();//Нахожу индекс бита, в котором допустили ошибку и вывожу его в консоль на экранerror = 0;for (int i = 0; i < P; i++){if (sindrom[i] == 0){continue;}error += 1 << i;}Console.WriteLine("Ошибка в: " + error + " Бите");Console.WriteLine("--------------------------");}}}
| | Выполнила: студентка 3 курса группы ИВТ-б-з-201 Овчинкина Е.П. |
| | Проверил: доцент кафедры компьютерной инженерии и моделирования Ислямов Р.И. |
while (Math.Pow(2, N) > Math.Pow(2, K) / (K + 1)){K++;}//Нахожу количество проверочных разрядов (Проверочных бит):int P = K - N;//Заполняю рандомно число 0 и 1Random rand = new Random();int[] number = new int[K];for (int i = 0; i < K; i++){if (CountBits(i + 1) != 1){number[i] = rand.Next(0, 2);//number[i] = 1; // все 1//number[i] = 0; // все 0}}// Нахожу проверочные биты и записываю их в конецfor (int i = 1; i < K; i *= 2){int bit = 0;for (int j = i; j < K; j++){if ((i & (j + 1)) == 0)continue;bit ^= number[j];}number[i - 1] = bit;}//Вывожу в консоль на экран систематический кодConsole.WriteLine("Систематический код");Console.WriteLine("--------------------------");for (int i = 0; i < K; i++){Console.Write(number[i] + " ");}int[] sindrom = new int[P];Console.WriteLine();//Высчитываю синдром и вывожу его в консоль на экранfor (int y = 0; y < P; y++){int i = (1 << y);int bit = number[i - 1];for (int j = i; j < K; j++){if ((i & (j + 1)) == 0)continue;bit ^= number[j];}sindrom[y] = bit;}Console.WriteLine("Синдром");Console.WriteLine("--------------------------");for (int i = 0; i < P; i++){Console.Write(sindrom[i] + " ");}Console.WriteLine();//Пользователь выбрает бит, в котором будет допущена ошибкаConsole.WriteLine("Выберите любое число от 1 до " + K);int error = Convert.ToInt32(Console.ReadLine());number[error - 1] ^= 1;//Вывожу в консоль на экран код с ошибкойConsole.WriteLine();Console.WriteLine("Код с ошибкой");Console.WriteLine("--------------------------");for (int i = 0; i < K; i++){Console.Write(number[i] + " ");}Console.WriteLine();//Высчитываю синдром с ошибкой и вывожу его в консоль на экранfor (int y = 0; y < P; y++){int i = (1 << y);int bit = number[i - 1];for (int j = i; j < K; j++){if ((i & (j + 1)) == 0)continue;bit ^= number[j];}sindrom[y] = bit;}Console.WriteLine("Синдром");for (int i = 0; i < P; i++){Console.Write(sindrom[i] + " ");}Console.WriteLine();//Нахожу индекс бита, в котором допустили ошибку и вывожу его в консоль на экранerror = 0;for (int i = 0; i < P; i++){if (sindrom[i] == 0){continue;}error += 1 << i;}Console.WriteLine("Ошибка в: " + error + " Бите");Console.WriteLine("--------------------------");}}}