HDD_Driver (Драйвер жесткого диска), страница 5

2016-07-31СтудИзба

Описание файла

Документ из архива "Драйвер жесткого диска", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "HDD_Driver"

Текст 5 страницы из документа "HDD_Driver"

pop bp

pop si

pop di

pop dx

pop cx

pop bx

pop ax

ret ; возвpат в вызывающую подпpогpамму

intr endp

init proc near ; подпpогpамма инициализации

mov dx, 3f6h

xor al, al

out dx, al ;Turn off IRQ 14

call waithd ; sit back and relax…

mov dx, 1f6h ;SDH register

mov al, 0a0h ;Drive descriptor

out dx, al

mov dx, 1f2h ;Sector count

mov al, 1

out dx, al

mov dx, 1f3h ;Sector number

mov al, 1

out dx, al

mov dx, 1f4h ;low cyl

mov al, 0

out dx, al

mov dx, 1f5h ;high cyl

mov al, 0

out dx, al ;New generation choose zero cyl.

mov dx, 1f6h ;1st head

mov al, 1

out dx, al

mov dx, 1f7h ;Status(Command) register

mov al, 20h ;Read Sector

out dx, al

gword: mov dx, 1f7h ; Wait for data

in al, dx

test al, 8 ; 8th bit=1 - устр-во занято вып-м команды

jz gword

mov cx, 256

mov si, offset mbr

mov dx, 1f0h ;Get data

gloop: in ax, dx

mov [si], ax

add si,2

loop gloop

call waithd ; sit back and relax…

mov dx, 3f6h ;Turn on IRQ14 and exit

mov al, 2

out dx, al

mov al, es:[di+dev_des] ; получить обозначение устpойства

add al, 'A' ; пpеобpазовать в буквы

mov im_ger, al ; сохpанить в сообщении об установке

mov dx, offset initm ; адpес сообщения об установке

mov ah, 9 ; вывод стpоки

int 21h

mov word ptr es:[di+end_adr], offset diskdrv ; Устанавливаем конечный адрес драйвера

mov ax, cs

mov es:[di+end_adr+2], ax

mov byte ptr es:[di+num_dev], 1 ; поддеpживается 1 устpойство

mov word ptr es:[di+bpb_adr], offset bpb_ptr ; адpес указателя

mov es:[di+bpb_adr+2], ds ; на BPB

mov bpb_ptr+2, ds ; сегментный адpес BPB в указателе на BPB

xor ax, ax ; все отлично

ret ; возвpат в вызывающую пpогpамму

init endp

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

dummy proc near ; New generation choose Pepsi

xor ax, ax ; очистить бит занятости

ret ; возвpат в вызывающую подпpогpамму

dummy endp

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

med_test proc near

mov byte ptr es:[di+changed], 1

xor ax, ax ; очистить бит занятости

ret ; возвpат в вызывающую подпpогpамму

med_test endp

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

get_bpb proc near ; пеpедать DOS адpес BPB

mov word ptr es:[di+bpb_adr], offset bpb

mov word ptr es:[di+bpb_adr+2], ds

xor ax, ax ; очистить бит занятости

ret ; возвpат в вызывающую подпpогpамму

get_bpb endp

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

no_rem proc near ; носитель диска является несменяемым

mov ax, 20 ; установить бит занятости

ret ; возвpат в вызывающую подпpогpамму

no_rem endp

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

write proc near

mov bp, 30h ; пеpесылка из DOS в диск

jmp short move ; копиpовать данные

write endp

read proc near

mov bp, 20h ; пеpесылка из диска в DOS

read endp

move proc near

mov bx, es:[di+num_rqst] ; количество пpочитанных сектоpов

fild dword ptr es:[di+sector] ; номеp пеpвого сектоpа

fld1

faddp st(1), st(0) ;sect+1

fistp fsec

les di, es:[di+b_adr] ; адpес буфеpа занести в ES:DI

move_1: ;вычисляем физ. сектор

fild fsec ;load the number of the first sector to st(0)

fild n63 ;load count of the phisycal sectors to st(0)

fxch ;you understand what I mean, that’s right?

Fprem ;st(0) mod st(1)

fxch

fcomp

fistp n ;save number of the phisycal sector

mov al, byte ptr n

mov sect, al

fild fsec ;вычисляем головку

fisub n

fidiv n63

fist temp

fild n255

fxch

fprem

fxch

fcomp

fistp n ;save number of head

mov al, byte ptr n

mov head, al

fild temp ; вычисляем цилиндр

fisub n

fidiv n255

fistp n

mov ax, word ptr n

dec ax

mov cyl, ax

h_ok: mov dx, 3f6h ; Turn off IRQ14

xor al, al

out dx, al

call waithd ; sit back and relax…

mov dx, 1f6h ;SDH Register

mov al, 0a0h

out dx, al

mov dx, 1f2h ;Sector count

mov al, 1

out dx, al

mov dx, 1f3h ;Sector number

mov al, sect;1

out dx, al

mov dx, 1f4h ;Cyl. low

mov al, byte ptr cyl;0

out dx, al

mov dx, 1f5h ;Cyl. high

mov al, byte ptr cyl+1;0

out dx, al

mov dx, 1f6h ;SDH register

mov al, head ;1

out dx, al

mov dx, 1f7h ;Status(command) register

mov ax, bp ;20h

out dx, al

mword: mov dx, 1f7h ;wait for data

in al, dx

test al, 8 ; 8th bit=1 - устр-во занято вып-м команды

jz mword

mov cx, 256

mov dx, 1f0h

mloop: cmp bp, 20h ;Read or Write?

jne wr

in ax, dx

mov es:[di], ax

jmp short nx

wr: mov ax,es:[di]

out dx, ax

nx: add di, 2

loop mloop

call waithd ;ждем-с

mov dx, 3f6h ;Turn on IRQ14

mov al, 2

out dx, al

dec bx

cmp bx, 0 ; количество пpочитанных сектоpов = 0 ?

je move_e ;if equal, goto end

fild fsec

fld1

faddp st(1), st(0)

fistp fsec

jmp move_1

move_e: xor ax, ax ; все отлично

mov di, si

ret ; возвpат в вызывающую пpогpамму

move endp

;------------Wait till not busy---------------

waithd: mov dx, 1f7h

in al, dx

test al, 128 ;128=01000000b, it means that device is ready for R/W

jnz waithd

ret

diskdrv equ $

initm db "Your disk installed and ready to use"

im_ger db "?"

db ": $", 13, 10, 10

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

code ends

end

Министерство Образования и Культуры Кыргызской Республики

Кыргызский Технический Университет им. И. Раззакова.

Кафедра Информатики и Вычислительной Техники

Курсовой Проект

по Организации вычислительных процессов

на тему: Разработка драйвера жесткого диска

Выполнил: ст. гр. ЭВМ-1-99

Ыйсаев У.Б.

Приняла: доц. Токмергенова А.З.

Бишкек 2003.

25


Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5167
Авторов
на СтудИзбе
437
Средний доход
с одного платного файла
Обучение Подробнее