русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Текст программы


Дата добавления: 2015-06-12; просмотров: 556; Нарушение авторских прав


/*-------Лабораторная работа N8----------------*/

/*---"Главная загрузочная запись"--------------*/

/* Стандартные заголовки */

#include <dos.h>

#include <conio.h>

 

/* Типы данных */

 

#define byte unsigned char

#define word unsigned int

#define dword unsigned long

void read_MBR(void); /* Чтение MBR */

/* Получение из упакованного SecTrk # сектора */

#define SECT(x) x&0x3f

/* Получение из упакованного SecTrk # дорожки */

#define TRK(x) (x>>8)|((x<<2)&0x300)

 

/* структура элемента раздела */

struct Part {

byte ActFlag; /* признак активного раздела */

/* физический адрес начала раздела */

byte Begin_Hd; /* # головки */

word Begin_SecTrk; /* # сектора и дорожки */

byte SysCode; /* код системы */

/* физический адрес конца раздела */

byte End_Hd; /* # головки */

word End_SecTrk; /* # сектора и дорожки */

dword RelSec; /* # сектора початку */

dword Size; /* количество секторов */

};

/* стpуктуpа главной загрузочной записи */

struct MBR {

char LoadCode[0x1be]; /* пpогpамма загрузки */

struct Part rt[4]; /* 4 эл-та pазделов */

word EndFlag; /* подпись MBR */

} mbr;

/* дополнительные переменные */

int x=10,y; /* экpанные кооpдинаты */

byte head=0; /* номеp головки (0) */

word Sect_Trk=1; /* номеp доpожки и сектоpа (0,1) */

int ndrive=0; /* номеp логического диска */

word *EndList; /* указатель на подпись */

union REGS rr;

struct SREGS sr;

word i;

/*-----------------------------------------------*/

main()

{

textbackground(0);

clrscr();

textattr(0x0a);

cprintf(" Лабораторная работа N8");

gotoxy(1,2);

cprintf(" Главная загрузочная запись");

textattr(12);

gotoxy(30,4);

cprintf("Разделы жесткого диска:\n");



gotoxy(1,6);

textattr(11);

cprintf("Лог.диск -----> \n\r");

cprintf("Признак ------> \n\r");

cprintf("Код системы --> \n\r");

cprintf("Начало: гол.--> \n\r");

cprintf(" дор.--> \n\r");

cprintf(" сект.-> \n\r");

cprintf("Конец: гол.--> \n\r");

cprintf(" дор. -> \n\r");

cprintf(" сект.-> \n\r");

cprintf("Нач.сектор ---> \n\r");

cprintf("Размер -------> \n\r");

textcolor(11);

NEXT:

read_MBR();

for (EndList=(word *)&mbr.rt[(i=0)];

(*EndList!=0xaa55)&&(mbr.rt[i].Size>0L);

EndList=(word *)&mbr.rt[++i])

{

/* кооpдинаты куpсоpа */

y=6;

x+=7;

gotoxy(x,y++);

if (mbr.rt[i].SysCode==5)

{textattr(13);

cprintf("Ext ");

 

}

else

textattr(12);

cprintf("%-7c",'C'+ndrive++);

 

gotoxy(x,y++); textattr(14);

cprintf("%02xH ",mbr.rt[i].ActFlag);

gotoxy(x,y++); textattr(15);

cprintf("%-7d",mbr.rt[i].SysCode);

gotoxy(x,y++); textattr(14);

cprintf("%-7d",mbr.rt[i].Begin_Hd);

gotoxy(x,y++); textattr(15);

cprintf("%-7u",TRK(mbr.rt[i].Begin_SecTrk));

gotoxy(x,y++); textattr(14);

cprintf("%-7u",SECT(mbr.rt[i].Begin_SecTrk));

gotoxy(x,y++); textattr(15);

cprintf("%-7d",mbr.rt[i].End_Hd);

gotoxy(x,y++); textattr(14);

cprintf("%-7u",TRK(mbr.rt[i].End_SecTrk));

gotoxy(x,y++); textattr(15);

cprintf("%-7u",SECT(mbr.rt[i].End_SecTrk));

gotoxy(x,y++); textattr(14);

cprintf("%-7lu",mbr.rt[i].RelSec);

gotoxy(x,y++); textattr(15);

cprintf("%-7lu",mbr.rt[i].Size);

if (mbr.rt[i].SysCode==5)

{

/* если код системы 5, pаздел содержит свою таблицу pазделов; определяется ее дисковый адpес, и новая таблица считывается в память */

head=mbr.rt[i].Begin_Hd;

Sect_Trk=mbr.rt[i].Begin_SecTrk;

goto NEXT;

}

}

gotoxy(x,y++);

textattr(10+128);

gotoxy(29,18);

 

cprintf("Нажмите любую клавишу...");

getch();

}

 

/*-----------Читання MBR------------------------*/

void read_MBR(void)

{

rr.h.ah=2; /* Чтение */

rr.h.al=1; /* Секторов 1 */

rr.h.dl=0x80; /* Жесткий диск */

rr.h.dh=head; /* Головка */

rr.x.cx=Sect_Trk; /* Дорожка, сектор */

sr.es=FP_SEG(&mbr); /* Адрес буфера в ОП */

rr.x.bx=FP_OFF(&mbr);

int86x(0x13,&rr,&rr,&sr);

/* Проверка ошибок чтения */

if (rr.x.cflag)

{

printf("Ошибка чтения: %x. ",rr.h.ah);

printf("Нажмите любую клавишу...\n\7");

getch();

exit();

}

}



<== предыдущая лекция | следующая лекция ==>
Текст программы | Результаты работы программы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.253 сек.