20948

Запис і читання інформації диска с зміною чергуванням секторів

Лабораторная работа

Информатика, кибернетика и программирование

h Номер форматируемой дорожки define TRK 20 Код размера сектора 1024 байт define SEC_SIZE 2 таблица параметров дискеты typedef struct _DPT_ { unsigned char srt_hut; unsigned char dma_hlt; unsigned char motor_w; unsigned char sec_size; unsigned char eot; unsigned char gap_rw; unsigned char dtl; unsigned char gap_f; unsigned char fill_char; unsigned char hst; unsigned char mot_start; } DPT; union REGS inregs outregs; char _far diskbuf[1024]; void mainvoid; void mainvoid { struct diskinfo_t di; unsigned status; unsigned char...

Украинкский

2013-08-01

51.33 KB

6 чел.

Міністерство освіти, науки, молоді та спорту України

Національний технічний Університет “ХПІ”

“ХАРКІВСКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”

Кафедра “ Обчислювальна техніка та програмування ”

Лабораторна робота №3

по курсу “Захист інформації у комп’ютерних системах та мережах”

 

                                                                                                Виконав:

                                                                                                      ст. гр КІТ 39

 Родін С.І

                                                                                                 Перевірив:

Межерицький С.Г

Харків 2012

“Запис і читання інформації диска с зміною чергуванням секторів”

за курсом “Захист інформації у комп’ютерних системах та мережах”

Ціль роботи : придбання навичок роботи з нестандартними можливостями дисків на низькому рівні. Використання зміни чергування секторів на гнучкому диску.

Постановка задачі: необхідно розробити і налагодити програму що дозволяє виконати форматування інженерних секторів дискети зі зміненим чергуванням секторів, запис, читання і перевірку якості виконання мітки з цими секторами.

Індивідуальні завдання

Програма форматування доріжки дискети з нестандартним чергуванням секторів і запис інформації в заданий сектор, виконана на низькому рівні.

 Порядок проходження секторів

 

1,9,4,3,6,7,2,8

Номер доріжки

Сторона

Довжна сектора

81\43

1

1024

Номер сектора в який виконується запис СЕКТ

СЕКТ = 1

#include <stdio.h>

#include <conio.h>

#include <dos.h>

#include <stdlib.h>

#include <bios.h>

#include "sysp.h"

// Номер форматируемой дорожки

#define TRK 20

// Код размера сектора - 1024 байт

#define SEC_SIZE 2

/* таблица параметров дискеты */

typedef struct _DPT_ {

unsigned char srt_hut;

unsigned char dma_hlt;

unsigned char motor_w;

unsigned char sec_size;

unsigned char eot;

unsigned char gap_rw;

unsigned char dtl;

unsigned char gap_f;

unsigned char fill_char;

unsigned char hst;

unsigned char mot_start;

} DPT;

union REGS inregs, outregs;

char _far diskbuf[1024];

void main(void);

void main(void) {

struct diskinfo_t di;

unsigned status;

unsigned char old_sec_size, old_fill_char, old_eot;

int i, j;

DPT _far *dpt_ptr;

printf("\nПрограмма уничтожит содержимое"

"\n20-й дорожки диска А:."

"\nЖелаете продолжить? (Y,N)\n");

// Ожидаем ответ оператора и анализируем его

i = getch();

if((i != 'y') && (i != 'Y')) exit(-1);

// Получаем адрес таблицы параметров дискеты

dpt_ptr = get_dpt();

// Сохраняем старые значения из таблицы параметров

old_sec_size = dpt_ptr->sec_size;

old_fill_char = dpt_ptr->fill_char;

old_eot = dpt_ptr->eot;

// Устанавливаем в таблице параметров дискеты

// код размера сектора, символ заполнения при

// форматировании, количество секторов на дорожке

dpt_ptr->sec_size = SEC_SIZE;

dpt_ptr->fill_char = 0xf6;

dpt_ptr->eot = 15;

// Устанавливаем тип диска

inregs.h.ah = 0x17;

inregs.h.al = 3;

inregs.h.dl = 0;

int86(0x13, &inregs, &outregs);

// Устанавливаем среду для форматирования

inregs.h.ah = 0x18;

inregs.h.ch = TRK;

inregs.h.cl = dpt_ptr->eot;

inregs.h.dl = 0;

int86(0x13, &inregs, &outregs);

// Подготавливаем параметры для функции форматирования

di.drive = 0;

di.head = 0;

di.track = TRK;

di.sector = 1;

di.nsectors = 15;

di.buffer = diskbuf;

// Подготавливаем буфер формата для 15-ти секторов

// Используем обратный порядок расположения секторов

// на дорожке

for(i=0, j=15; j>0; i += 4, j--) {

diskbuf[i] = TRK;

diskbuf[i+1] = 0;

diskbuf[i+2] = j;

diskbuf[i+3] = SEC_SIZE;

}

// Вызываем функцию форматирования дорожки

status = _bios_disk(_DISK_FORMAT, &di) >> 8;

printf("\nФорматирование завершилось с кодом: %d",status);

// Восстанавливаем старые значения в

// таблице параметров дискеты

dpt_ptr->sec_size = old_sec_size;

dpt_ptr->fill_char = old_fill_char;

dpt_ptr->eot = old_eot;

exit(0);

}

 

Висновки: придбав навички роботи з нестандартними можливостями дисків на низькому рівні. Використав зміни чергування секторів на гнучкому диску.


 

А также другие работы, которые могут Вас заинтересовать

61988. Истинные и ложные ценности в рассказе О. Генри «Дары волхвов» 26.88 KB
  The topic of our lesson is next: “True and false values in the O. Henry novel “The Gift of the Magi”. In the end of the lesson we have to answer the main question: what values are true and false, and who is really happy and wise to the writer’s opinion.
61989. Реформы Ивана ІV и Избранной рады 19.02 KB
  Почему Царь отказывается от системы кормления в местном управлении Учебные тексты для работы 1й группы Слово митрополита Филиппа при торжественном возведении его в сан предстоятеля русской Церкви 25 июля 1566 г. Наиболее важные дела стали решать в Москве царь и Боярская дума...
61990. Добровольное комплексное страхование имущества и гражданской ответственности его пользователей 199.5 KB
  Страхование имущества - это отрасль страхования, где объектом страхования являются имущественные интересы граждан, которым может быть причинен ущерб (вред) вследствие кого-либо действия или бездействия страхователя.
61995. Unsere deutschen Freunde bereiten sich auf Weihnachten vor 478.59 KB
  Unsere deutschen Freunde freuen sich auch über den Winter. Und warum? Im Winter feiern sie das Weihnachtsfest. Das ist sehr lustig. Die Kinder schreiben Weihnachtskarten, basteln Geschenke selbst...