Список используемых источников. 1. Березин Б.И., Березин С.Б




 

1. Березин Б.И., Березин С.Б. Начальный курс С и С++. - М.: Диалог-МИФИ, 1996.

2. Питерсон У., Уэлдон Э. Коды, исправляющие ошибки: Пер. с англ. - М.: Мир, 1976. - 594 с.

3. Шеннон К.Э. Теория связи в секретных системах. В кн. К.Э. Шеннона. «Работы по теории информации и кибернетике». - М.: ИЛ, 1963.

 


ПРИЛОЖЕНИЯ

Приложение А

 

Листинг программы

<h11.c>

#include <stdio.h>

#include <dir.h>

#include <conio.h>

#include <process.h>

#include <string.h>

#include <alloc.h>

extern void far hem1511(const char far*, char far*); // функция перекодировки

extern void far unhem1511(const char far*, char far*); // функция перекодировкиrabota(int);()

{ch,end;(C80);

_setcursortype(_NOCURSOR);(WHITE);();("1. Закодировать файл\r\n2. Раскодировать файл\r\nВыход - Esc");=1;(end!=0)

{=getch();(ch)

{'1': rabota(1); clrscr();("1. Закодировать файл\r\n2. Раскодировать файл\r\nВыход - Esc");break;'2': rabota(2); clrscr();("1. Закодировать файл\r\n2. Раскодировать файл\r\nВыход - Esc");break;27: end=0;

}

}0;

}rabota(int mode)

{char *in_buffer[6],*out_buffer[6],in_name[MAXPATH],out_name[MAXPATH];*file_in, *file_out;int num;_in=NULL; file_out=NULL;(file_in==NULL)

{(WHITE);("\r\nВведите имя входного файла: ");(YELLOW);_name[0] = 254;

_setcursortype(_SOLIDCURSOR);(in_name);(in_name[1]==0)

{

_setcursortype(_NOCURSOR);(WHITE);1;

}

_setcursortype(_NOCURSOR);_in = fopen(&in_name[2], "rb");(file_in==NULL)

{(LIGHTRED);("\r\nНе могу открыть файл с именем %s",&in_name[2]);(WHITE);

}

}(file_out==NULL)

{(WHITE);("\r\nВведите имя выходного файла: ");(LIGHTMAGENTA);_name[0] = 254;

_setcursortype(_SOLIDCURSOR);(out_name);(out_name[1]==0)

{

_setcursortype(_NOCURSOR);(WHITE);1;

}

_setcursortype(_NOCURSOR);_out = fopen(&out_name[2], "wb");(file_out==NULL)

{(LIGHTRED);("\r\nНе могу открыть файл с именем %s",&out_name[2]);(WHITE);

}

}

{(mode==2)

{=fread(in_buffer, 6, 1, file_in); // чтение буфера(num) {((char far*)in_buffer, (char far*)out_buffer); // конвертация буфера(out_buffer, 4, 1, file_out);

}

}

{=fread(in_buffer, 4, 1, file_in); // чтение буфера(num) {((char far*)in_buffer, (char far*)out_buffer); // конвертация буфера(out_buffer, 6, 1, file_out);

}

}

}(!feof(file_in));(file_out); fclose(file_in);(LIGHTCYAN);("\r\nФайл %s успешно перекодирован в %s",&in_name[2],&out_name[2]);

_setcursortype(_NOCURSOR); textcolor(WHITE);();0;

}

 


Приложение Б

 

Листинг функции перекодирования

<h11a.asm>

.modelSMALL

.code

_hem1511, _unhem1511

_hem1511proc far; функция закодированияinbuf:dword, outbuf:dword; аргументы функции - два дальних указателя, sp; адресуем стек через bp; сохраняем используемые регистры, [inbuf], [outbuf], eax, ebx, ecx; формируем информационные биты, 3:, ebx, eax, 1, 1, 1, eax, 3, 3, 1, eax, 7, 7, 17; функция определения проверочных битов, ax, dl, ax; устанавливаем первый проверочный бит, dh, 1, ax; второй, cl, 3, ax; четвертый, ch, 7, ax; восьмой, bx; восстанавливаем регистры

_hem1511endp

_unhem1511proc far; функция раскодированияinbuf:dword, outbuf:dword; в параметрах - два указателя, sp, [inbuf], [outbuf], ebp, eax, 3:, ax, ax, bx, 1; формируем биты синдрома, 1, 15, al; нулевой, al, bx, 1, 2, 15, al; первый, al, bx, 1, 4, 15, al; второй, al, bx, 1, 8, 15, al; третий, ax, dl; формируем синдром из полученных битов, 1, dh, 2, cl, 3, ch, al; если синдром равен 0, то переходим на normal, cx; помещаем синдром в cl, al, cl, 1; исправляем ошибку, cl:, ax, 2, bx, 1, 2, bx, 3, 4, bx, 7, 5, eax, 10

;loop num2, ebp; восстанавливаем регистры

_unhem1511endpnear

; bx - входные 16 бит

; в регистрах dl, dh, cl, ch, - проверочные биты

; dl - первый, dh - второй, cl - четвертый, ch - восьмой

; получаем по очереди каждый бит и складываем с необходимыми проверочными битами, ax, cx, dx, 2, bx, 1; получаем 3 бит, 15, al; складываем с первым битом, al; складываем со вторым битом, al, 2, bx, 1;5, 15, al, al, al, 1, bx, 1;6, 15, al, al, al, 1, bx, 1;7, 15, al, al, alal, al, 2, bx, 1;9, 15, al, alal, al, 1, bx, 1;10, 15, al, al, al, 1, bx, 1;11, 15, al, al, al, al, 1, bx, 1;12, 15, al, al, al, 1, bx, 1;13, 15, al, al, al, al, 1, bx, 1;14, 15, al, al, al, al, 1, bx, 1;15, 15, al, al, al, al

 


Приложение В

 

Алгоритм работы программы

 

 


Приложение Г

 

Алгоритм работы внешних функций преобразования

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-03-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: