Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ZI-LR&PZ / LR_1-2

.pdf
Скачиваний:
16
Добавлен:
02.02.2015
Размер:
260.68 Кб
Скачать

Методичні вказівки до лабораторної роботи 1-2

“Запис і читання інформації в інженерні циліндри диска” за курсом “Захист інформації у комп’ютерних системах та мережах”

1. Ціль роботи Придбання навичок роботи з нестандартними можливостями дисків на низькому рівні.

2.Теми для попереднього пророблення. Структура диска.

Способи захисту дискет.

Запис даних у інженерних циліндрах.

Робота з перериваннями (зокрема переривання 13Н, 1ЕН). Керування контролером дисководів.

3.Постановка задачі

Необхідно розробити і налагодити програму що дозволяє виконати форматування інженерних секторів дискети, запис, читання і перевірку якості виконання операція з цими секторами.

4. Індивідуальні завдання Виконати запис ідентифікаційної інформації:

-s1 – прізвище студента

-s2 – група студента.

узазначений сектор на доріжці, який відформотована відповідно до індивідуального завдання.

Таблиця форматування доріжки

 

 

 

Вибір сторони і доріжки

S * K

1024

512

256

 

№ (+) 4

доріжка

сторона

 

№ (+) 9

 

 

 

 

 

 

 

 

 

0

1

 

8

 

0

 

80(40)

0

 

1

1

4

 

 

1

 

80(40)

1

 

2

2

2

4

 

2

 

81(41)

0

 

3

2

3

2

 

3

 

81(41)

1

 

4

2

1

6

 

 

 

 

 

 

5

3

1

4

 

 

 

 

 

 

6

3

2

4

 

 

 

 

 

 

7

4

1

2

 

 

 

 

 

 

8

4

 

4

 

 

 

 

 

 

напрямок нумерації секторів

де № - номер по журналі групи

(+) – операція обчислення залишку при цілочисловому розподілі. [+] – операція цілочислового розподілу

S – довжина сектора

К – число секторів заданої довжини

N – сумарне число секторів на доріжці

номер сектора, у який виконується запис інформації L = N [+] 2

зсув для запису s1 off1 у секторі L дорівнює № байт

зсув для запису s2 off2 у секторі L дорівнює (Довжина сектора - № - 10) байт

Приклад: номер по журналі 43 у таблиці форматування рядок з кодом 7

структура доріжки (1-10): 256,256,512,1024,1024,1024,1024

номер доріжки 80 сторона 0

N = 10

L = 5 off1 = 43

off2 = 128 – 43 – 10 = 75

Примітки:

Необхідно настроїти таблицю контролера дисководів (див. лекції) при виконанні форматування, записи, читання.

Для кожної довжини сектору треба перенастроювати контролер гнучних дисків.

Правильно формувати таблицю форматування доріжки.

5.Приклад рішення задачі

Умова завдання.

Створити таблицю форматування інженерного циліндра для контролера дисководів за допомогою переривання 1ЕН (80 циліндр, 1 сторона, 12 секторів, довжина сектора 256 байт).

Виконати форматування встановленого циліндра

Записати в нього ідентифікаційну інформацію і перевірити якість запису.

Прочитати отриману інформацію

Приклад виконання завдання

.MODEL SMALL

STS segment para stack 'stack'

dw 1000 dup (0)

 

TOS label word

 

STS ends

 

 

DATA segment

 

track80 db

80,1,01,1

;дорожка,головка,сектор,длина сектора

db

80,1,02,1

 

db

80,1,03,1

 

db

80,1,04,1

 

db

80,1,05,1

 

db

80,1,06,1

 

db

80,1,07,1

 

db

80,1,08,1

 

db

80,1,09,1

 

db

80,1,10,1

 

db

80,1,11,1

db

80,1,12,1

db

80,1,13,1

db

80,1,14,1

;таблица параметров контроллера дисководов

DCP db

0DFh ;задержка переключения головок(0Dh=3мс)

 

;задержка при загрузке головок(Fh)

db

002h

;время загрузки(=4мс)

db

025h

;задержка перед выключением двигателя

db

001h

;размер сектора(=256б)

db

00Dh

;max номер сектора

db

01Bh

;размер межсекторного промежутка(=1б)

db

0FFh

;характеризует использование прерывания данных

db

054h

;длина межсекторного промежутка для команды format

db

0F6h

;байт заполнения

db

00Fh

;время установки головок

db

008h

;время запуска двигателя(=1/8сек)

Firm

db

'write 01 sector $',0

;определение записываемой

 

db

 

256-27 dup (?)

;информации

Msg_Err db

'Ошибка записи',13,10,'$'

Msg_Ok

db

'Запись выполнена',13,10,'$'

buf

db

 

256 dup (?)

 

 

db

 

'$'

 

 

msg_buf db

10,13,"Содержимое сектора после записи:",13,10,'$'

msg_read db

'Ошибка чтения',13,10,'$'

DATA ends

 

 

CODE

segment

 

 

assume

cs:code, ds:data, es:data, ss:sts

start: mov

ax,DATA

 

 

mov

ds,ax

 

 

mov

es,ax

 

 

mov

ax,sts

 

 

mov

ss,ax

 

 

mov

sp,offset TOS

 

;переустановка параметров дисководов

 

mov

ah,35h

 

 

mov

al,1Eh ;номер прерывания : этот вектор указывает на таблицу

 

 

 

 

;параметров дискеты

 

int

 

21h ;возвращает в ES:BX адрес программы обработки прерывания

 

push

bx

 

 

push

es

 

 

mov

ah,25h

 

 

mov

al,1Eh ;номер прерывания

 

lea

 

dx,DCP ;в DS:DX вектор прерывания,указывающий на таблицу

 

int

 

21h

;установка новых значений

;оформление инженерного цилиндра

 

push

ds

 

 

pop

 

es

 

 

 

lea

 

bx,track80 ;адрес буфера, содержащего информацию о формате

 

mov

ah,05h ;функция формата дорожки

 

 

;в CX - номер нужного цилиндра

mov

cl,00h

;cl - биты 6-7 - старшие 2 бита 10-битного значения

mov

ch,50h

;ch - младшие 8 бит

mov

dl,00h

;адрес дисковода(A:)

mov

dh,01h

;номер головки

int

13h

 

;формат

jc

Error_Exit

;управление названием Firm

mov

bx,offset Firm

mov

cl,01h ;номер сектора,в который записывать Firm

call

Write_Info

jc

Error_Exit

mov

dx,offset Msg_Ok

mov

ah,09h

 

int

21h

 

 

;вывод на экран содержимого записанного сектора

mov

ah,9

 

mov

dx,offset msg_buf

int

21h

 

 

mov

ah,02h

 

mov

al,01h

 

mov

ch,50h

 

mov

cl,01h

 

mov

dl,00h

 

mov

dh,01h

 

mov

bx,offset buf

int

13h

 

 

jc

err_read

 

mov

ah,09h

 

mov

dx,offset buf

int

21h

;вывод содержимого буфера на экран

jmp

label_end

;восстановление старых параметров дисковода

msg_c: mov

ah,9h

int

21h

 

 

label_end:

 

 

pop

ds

 

 

pop

dx

 

 

mov

ah,25h

 

mov

al,1Eh

 

int

21h

 

 

mov

ah,4Ch

int

21h

 

 

Error_Exit:

 

 

mov

dx,offset Msg_Err

jmp

Msg_c

 

err_read:

 

 

 

mov

dx,offset msg_read

jmp

Msg_c

 

;запись физического сектора

Write_Info

proc

 

push

bx

;указывает на строку

push

cx

;номер того сектора, куда записывать

mov

ah,03h

 

mov

al,01h

;количество секторов

mov

ch,50h

;номер цилиндра

mov

dl,00h

;дисковод

mov

dh,01h

;головка

int

13h

;запись сектора

jc

Escp

 

 

pop

cx

 

 

pop

bx

 

 

;проверка записи на CRC

mov

ah,04h

 

mov

al,01h

;количество секторов

mov

ch,50h

 

mov

dl,00h

 

mov

dh,01h

 

int

13h

;верификация сектора (CRC check)

Escp:

ret

 

 

 

Write_Info

endp

 

CODE

ends

 

 

end

start

 

 

7. Зміст звіту.

Тема лабораторної роботи

Ціль роботи

Опис використовуваних переривань і функцій BIOS

Алгоритм програми (графічний або словесний опис)

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

Результати роботи програми

Висновки

Соседние файлы в папке ZI-LR&PZ