Запис за начално зареждане: Разлика между версии

Изтрито е съдържание Добавено е съдържание
Редакция без резюме
Ред 2:
 
{{Обработка|превеждане на термините на български}}
 
== Общо описание ==
Master Boot Record - Запис за начално зареждане (съкратено MBR). Термин използван за първият сектор на носители на информация (медия), които са разделни на дялове (Partitioned). Характерен предимно за хард дискови устройства, наличен и при USB FLASH драйв устройства. Състои се от изпълнима част и информационна част. Изпълнимата част представлява код/програма която намира активният дял върху устройството, прочита съответстващият му зареждащ сектор (Boot Sector) в паметта и предава управлението на последния. Ако не бъде намерен активен дял процесът на зареждане се прекратява. Ако не бъде намерен зареждащ сектор върху активният дял зареждането отново се прекратява. Главният зареждащ запис се прочита от [[BIOS]] веднага след изпълнението на главната процедура по проверка на паметта, дисковете и периферните устройства. Информационната част се състои от идентификатор на диска (сериен номер) и таблица на дяловете. Таблицата на дяловете съдържа четири записа с дялова информация. В края на описаната структура се намира сигнатурата <b style='color:#6a7eaf'>0xAA55</b> (в шестнадесетична бройна система), която валидира че това е зареждащ запис/сектор. При грешка в таблицата на дяловете зареждането се преустановява и се изписва съответстващо съобщение на екрана.
 
== Структура ==
{| class="wikitable"
{| {{prettytable}}
! colspan="2" | Адрес
! rowspan="2" valign="top" colspan="2" | Функционалност / Съдържание
Line 13 ⟶ 14:
! шестнадесетично || десетично
|-
| 0x0000 || align="right" | 0 || colspan="2" | Зареждащ код || align="right" | макс. 440
|-
| 0x01B8 || align="right" | 440 || colspan="2" | Сериен номер на диска<br />(Използван от [[Windows 2000]] и по-нови) || align="right" | 4
|-
| 0x01BC || align="right" | 444 || colspan="2" | Нули<br />(0x0000) || align="right" | 2
|-
| 0x01BE || align="right" | 446 || Запис на дялова инф || rowspan="4" | Таблица на дяловете||align="right" | 16
|-
| 0x01CE || align="right" | 462 || Запис на дялова инф || align="right" | 16
|-
| 0x01DE || align="right" | 478 || Запис на дялова инф || align="right" | 16
|-
| 0x01EE || align="right" | 494 || Запис на дялова инф || align="right" | 16
|-
| 0x01FE || align="right" | 510 ||0x55|| rowspan="2" | MBR сигнатура<br />(0xAA55) || rowspan="2" align="right" | 2
Line 32 ⟶ 33:
|}
Общ размер 512 [[байт]]а
 
==== MBR Сигнатура ====
Тази сигнатура представлява ''магическо число'' състоящо се от 2 [[байт|Байта]] 55<sub>hex</sub> и AA<sub>hex</sub>. За Little Endian системи това се интерпретира като 16-битово число AA55<sub>hex</sub>
Line 39 ⟶ 41:
----
цилиндър: 0; глава: 0; сектор: 1; ([[CHS]]: 0/0/1).
 
==== Позиция на зареждане в паметта ====
----
0000:7C00
 
== Прочитане ==
==== Код за прочитане ([[Асемблер]], [[x86]]) ====
----
<pre>
mov ah,0x02 ; Функция за четене
mov al,0x01 ; Брой сектори за прочитане
mov bx,0x0000 ; Относителен адрес на буфера за четене
mov cx,0x0001 ; Начална позиция за четене (сектор, цилиндър)
mov dh,0x00 ; Номер на главата
mov dl,0x80 ; Номер на устройството/диска
int 0x13 ; Прекъсване за четене
ret ; Връщане на управлението
</pre>