Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Текст программы. /*-------Лабораторная работа N8----------------*/
/*-------Лабораторная работа 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(); } } Date: 2015-05-22; view: 542; Нарушение авторских прав |