- •Федеральное агентство по образованию Брянский государственный технический университет
- •1.Постановка задачи.
- •2.Краткое введение. Головки, цилиндры, сектора дискеты.
- •Загрузочная запись boot
- •3. Структура программы.
- •Title.Asm
- •Menu.Asm
- •Dump.Asm
- •4. Работа программы.
- •4. При выборе «Дамп» программа запрашивает ввод информации
Загрузочная запись boot
Самый первый сектор логического диска (и самый первый сектор на системной дискете) занимает загрузочная запись (Boot Record). Эта запись считывается из активного раздела диска программой главной загрузочной записи (Master Boot Record) и запускается на выполнение. Задача загрузочной записи - выполнить загрузку операционной системы. Каждый тип операционной системы имеет свою загрузочную запись. Даже для разных версий одной и той же операционной системы программа загрузки может выполнять различные действия.
Кроме программы начальной загрузки операционной системы в загрузочной записи находятся параметры, описывающие характеристики данного логического диска. Все эти параметры располагаются в самом начале сектора, в его так называемой форматированной области.
FAT
Сразу после загрузочного сектора на логическом диске находятся сектора, содержащие таблицу размещения файлов FAT (File Allocation Table). Существуют два формата FAT - 12-битовый и 16-битовый. Эти форматы используют, соответственно, 12 и 16 битов для хранения информации об одном кластере диска. 12-битовый формат удобен для дискет с небольшим количеством секторов.
3. Структура программы.
Вся программа состоит из трех модулей. Что в них находится описано ниже.
Title.Asm
Этот модуль содержит в себе процедуру выводящую на экран при запуске программы титульный лист с информацией о теме, студенте выполнившим работу и преподавателе. Происходит очистка экрана, затем выводится титульный лист и ожидается нажатие клавиши чтобы продолжить работу программы и перейти в меню.
;-----------------------------------
TitleScreen proc
pusha
; clear screen
mov ax, 0003h ;установка видео режима
int 10h
mov dx, offset TitleText
movah, 09h; вывод строки на экран
int 21h
mov ah, 00h ;ожидание нажатия клавиши
int 16h
popa
ret
TitleScreen endp
TitleText: ;содержит выводимые строки
………………
………………
Menu.Asm
Данный модуль содержит процедуры отрисовки меню состоящего из трех пунктов и курсор. При нажатие клавиш клавиатуры курсор перемещяется в зависимости от указанного направления .
;--------------------------------------
Menu proc
TextColor equ 03h
CursorColor equ 0Bh
PositionYequ03h
; сохранение регистров
pushbx
push cx
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
; отрисовка курсора
movax,si
xordl,dl
mov dh, PositionY
add dh, al
mov bp, offset MenuCursor
mov bl, CursorColor
xor bh, bh
mov cx, 3
movax, 1300h
int10h
Ожидание нажатия клавищи и перемещение курсора
WaitKey:
mov ah, 00h
int 16h
; выбор действия
cmpah, 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:
movax,si
; возвращение регистров
pop bp
pop si
pop dx
popcx
popbx
ret
Пункты меню и курсор
MenuText:
dw 003
dw 039
db ' Дамп ', 0Dh, 0Ah
db ' Автор ', 0Dh, 0Ah
db ' Выход ', 0Dh, 0Ah
MenuCursor db ' ->'
Menu endp