Скачиваний:
10
Добавлен:
16.05.2015
Размер:
367.1 Кб
Скачать

Загрузочная запись boot

Самый первый сектор логического диска (и самый первый сектор на системной дискете) занимает загрузочная запись (Boot Record). Эта запись считывается из активного раздела диска программой главной загрузочной записи (Master Boot Record) и запускается на выполнение. Задача загрузочной записи - выполнить загрузку операционной системы. Каждый тип операционной системы имеет свою загрузочную запись. Даже для разных версий одной и той же операционной системы программа загрузки может выполнять различные действия.

Кроме программы начальной загрузки операционной системы в загрузочной записи находятся параметры, описывающие характеристики данного логического диска. Все эти параметры располагаются в самом начале сектора, в его так называемой форматированной области.

FAT

Сразу после загрузочного сектора на логическом диске находятся сектора, содержащие таблицу размещения файлов FAT (File Allocation Table). Существуют два формата FAT - 12-битовый и 16-битовый. Эти форматы используют, соответственно, 12 и 16 битов для хранения информации об одном кластере диска. 12-битовый формат удобен для дискет с небольшим количеством секторов.

3. Структура программы.

Вся программа состоит из трех модулей. Что в них находится описано ниже.

Title.Asm

Этот модуль содержит в себе процедуру выводящую на экран при запуске программы титульный лист с информацией о теме, студенте выполнившим работу и преподавателе. Происходит очистка экрана, затем выводится титульный лист и ожидается нажатие клавиши чтобы продолжить работу программы и перейти в меню.

;-----------------------------------

TitleScreen proc

pusha

;clearscreen

mov ax, 0003h ;установка видео режима

int 10h

mov dx, offset TitleText

mov ah, 09h ; вывод строки на экран

int 21h

mov ah, 00h ;ожидание нажатия клавиши

int 16h

popa

ret

TitleScreen endp

TitleText: ;содержит выводимые строки

………………

………………

Menu.Asm

Данный модуль содержит процедуры отрисовки меню состоящего из трех пунктов и курсор. При нажатие клавиш клавиатуры курсор перемещяется в зависимости от указанного направления .

;--------------------------------------

Menu proc

TextColor equ 03h

CursorColor equ 0Bh

PositionY equ 03h

; сохранение регистров

pushbx

pushcx

push dx

push si

push bp

mov si, ax

; clear screen

mov ax, 0003h

int 10h

Перерисовка меню при каждом перемещение курсора

RedrawMenu:

; отрисовка всех элементов меню

movbp,offsetMenuText+ 04 ; адрес текстовой строки

movbl,TextColor; цвет

xorbh,bh; обнуление

mov cx, word ptr [MenuText + 02] ; размер строки

movdh,PositionY; позиция поY

xordl,dl; позиция поX, необходимо обнулить

mov ax, 1300h

int 10h

; отрисовка курсора

mov ax, si

xor dl, dl

mov dh, PositionY

add dh, al

mov bp, offset MenuCursor

mov bl, CursorColor

xor bh, bh

mov cx, 3

mov ax, 1300h

int 10h

Ожидание нажатия клавищи и перемещение курсора

WaitKey:

mov ah, 00h

int 16h

; выбор действия

cmp ah, 48h

je BackwardMenuItem

cmp ah, 4Bh

je BackwardMenuItem

cmp ah, 4Dh

je ForwardMenuItem

cmp ah, 50h

je ForwardMenuItem

cmp ax, 1C0Dh ;Enter

je EndWait

jmp WaitKey

BackwardMenuItem:

dec si

jns RedrawMenu

mov si, word ptr [MenuText + 00]

dec si

jmp RedrawMenu

ForwardMenuItem:

inc si

cmp si, word ptr [MenuText + 00]

jb RedrawMenu

xor si, si

jmp RedrawMenu

EndWait:

mov ax, si

; возвращение регистров

pop bp

pop si

pop dx

pop cx

pop bx

ret

Пункты меню и курсор

MenuText:

dw 003

dw 039

db ' Дамп ', 0Dh, 0Ah

db ' Автор ', 0Dh, 0Ah

db ' Выход ', 0Dh, 0Ah

MenuCursor db ' ->'

Menu endp

Соседние файлы в папке Курсовая работа - Дамп произвольного сектора магнитного носителя( в формате Hex-ASCII ) в файл