Файл: Изучение и исследование микропроцессорного тренажера.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("--------------------------");

}

}

}