Файл: Изучение и исследование микропроцессорного тренажера.odt
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 22.11.2023
Просмотров: 16
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФГАОУ ВО «Крымский федеральный университет имени В. И. Вернадского»
Физико-технический институт
Кафедра компьютерной инженерии и моделирования
Лабораторная работа №1
по курсу «Системное программирование»
на тему: «Изучение и исследование микропроцессорного тренажера»
| Выполнила: студентка 3 курса группы ИВТ-б-з-201 Овчинкина Е.П. |
| Проверил: доцент кафедры компьютерной инженерии и моделирования Ислямов Р.И. |
Симферополь, 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 и 1
Random 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("--------------------------");
}
}
}