Курсовая работа: Розробка програмного забезпечення для визначення інформації про жорсткий диск використовуючи

push L STD_OUTPUT_HANDLE

call GetStdHandle

inc eax

jz Exit

dec eax

mov [hStdOut],eax

mov ebp,OFFSET W9x_GetDevInfo

call IsWinNT

jnz @@ScanDevices

mov ebp,OFFSET NT_GetDevInfo

Особливо варто відзначити регістр 1F6h тому що не всі його розряди зберігають адресу(Таблиця 2):

Таблиця 2 - Регістр 1F6h

7 6 5 4 3 2 1 0
1 AM 1 DEV LBA27 LBA26 LBA25 LBA24

Розряди [0 - 3] записується відповідна частина LBA адреси.

Біти 5 і 7 зарезервовані, там завжди повинне бути 1.

Біт AM (Addressіng Mode) визначає режим адресації 0 - CHS, 1 - LBA. У нашому випадку там завжди буде 1.

Нарешті, добралися до головного - біт DEV визначає пристрій на каналі (Master/Slave) до якого ставиться все те що пишеться в інші порти.

0 - Master, 1 - Slave.

1F7h, регістр стану має наступний формат (Таблиця 3):

Таблиця 3 - Регістр стану 1F7h

7 6 5 4 3 2 1 0
BSY DRDY DF DSC DRQ CORR IDX ERR
BSY - ???????? ???????? ?????????? ???????.DRDY - ???????? ??????? ?? ??????? ???????.DF - ???????? ??????????.DSC - ????? ??????????.DRQ - ???????? ??????? ?? ?????? ??????.CORR - ???? ???????, ??? ???? ???? ????????????.?DX - ? ?????? ???????? ???????? ?? ???????, ??? ??? ???????? ??? ?????????, ? ???? ????? ??????? - ?????? ???? ??????????.ERR - ? ??????? ????????? ???????, ???? ???????? ???????, ??? ???? - ?????? 1F1h.? ???? ??????????????? ?????? ???? BSY, DRDY ? DRQ. ???? ? ??????????? ??? ? ???????, ?? ???? ???? ??? ?? ????????????.???? 3F6h - ? ????? ???????????????? ?????? ???? 1 ? 2.1 - ??????????? ??? ???????? ??????????, 0 - ?????????.2 - ????????? ???????? ???? ??????????? ?? ?????? ????????? (??? ????????? ???? ? 1). ???????? P? (Programmable ?nput/Output) ??????? ? ????????? ???????? ?????????? (??? ?????? ??? ??????????): - ?????????? ?????????? ???????? (BSY=0) - ???????? ? DEV ????? ???????? ?? ??????. - ?????????? BSY=0, DRDY=1 ???????? 1F7h ??? 3F6h (??? ??????? ??????). - ???????? ? ???????? ???? ?????????. - ???????? ? ??????? ??????? ??? ????????. - ?????? ??????? ??????? ???? ???????? ?? ?????????? BSY=0. - ?????????? ?????????? ?????? ?????? (DRQ=1) - ???????? ????. ???? BSY ???????????? ? 1, ?????? ?????? ?? ?????, ????? ????????, ???? ????????? ??????????? ? ???? ????? ?? ??????, ??????? BSY = 1 ?????? ?? ?????????? ??????, ? ?? ????????. ? ????? ???????? ??????? ? ??????????? ?????? ???? ????????? ?? ?????? ?????? - ???? ??? ?????????? ?? ????? - ?? ???? ????????, ????????, ??? ???? ??????????? ?? ?????? ???????? ???????????, ???? ?? ???? ?????????? ??? BSY ??? ?????. DRDY = 1 ???????, ?? ???? ??????? ?? ??????? ??????, ???????? ?????????? ?? ????????? ?????? ????? ???? ??????? ??????????? ????? ?????? ???????? ?? ??????: ??? ??????? ?????????? ???? ??????????? ???????? ????????. DRQ = 1 ????????, ?? ???? ??????? ?? ?????? ??????. ??????? ???????? ??????? ??? DRDY ? DRQ. ϳ??? ??????? ??????? ? ????, ???????? ?????????? DRDY = 0, ?? ?????? ?? ?????????? ???????? ?????????? ???????, ? ?????? ????? ????, ?? ???? ?????? ???????? ? ?????????? ?????, ???????? ?????????? DRQ = 1, ??? ????? ? ????????? ?? ????????????, ?? ???????? ??????? ? ??????? ???? ??????? ?? ??????? ????????? ???????. ??? ?????? ? ?????????????, ?? ?????????? ????????? ??????? ???????? ?????????? ????? ??????????? ? ???? ?????????? ??????? ??????? ??? ???? ?????? (???????? ???? ? ????????? ? ?????). ? ?????? DMA ????? ???????????? ?? ?????? DMA, ?? ??????? ???? ?????? ??? ???????????? ??????. ϳ??? ??????? ??????? ???????? ?????????? ????? DMA ? ??????? ???? ?? ??????. ???? ?????????, ?? ?????? DMA ??????? ?????? ? ?????????????? ????????, ???? ????????? ? ??? ?????????, ???? ?????????? ?????????? ??????????, ????? ??? ????????? DMA ???????? ???? ???????????? ?? ???? ????????, ? ???? ???? ?????? ??????, ???????? ?????????? ??????? ???????????. ? ???????????? ?? ????? P? ? ?????? ???????? ???? ??????????? ????? ?????? ????????? ?????? ??????.??????? ATA ?????? ???? ??????, ?????? ???????????????? ??????? 20, ??? ??????? ? ??? ???????????????? ?????? 10 ????. ?????????? ??????? ???????\?????? ?????? ???????, ????????????? ????????????, ? ????? ??????? ??????? ??????????. ??? ???????? ?????????? ?? Master ???????? ??????? ??????, ??? ??????? ?? ????? ????? ?????????? ?? ???? - ???? ????????????. ??????? ???????? ? ?????????? ???????? ? ????? ??????: - ?????????? ??????????? ??????? ? 3F6h - ?????????? ?????????? ?????? ??????? ??? BSY ? ????? 1F7h - ??????? ???????? ?? ?????? ??????? ? 1F6h - ?????????? DRDY = 1 ? BSY = 0 - ??????????? LBA ?????? - ??????? ??????? ??????? (20h) - ?????????? BSY = 0 - ?????????? ?????????? ?????? ?????? (DRQ = 1) - ???????? ???? ??? ???????? ????? 1F0h ????????? ????????? ???????? ? ?????- ????????? ??????????? ??? ???????? ?? ??? ???? ?? ??????. (?????????????? - ?????? ? ES?, ES = DS, ? ???????? ????? ????? ??????? 512 ????, 28 ??? ES? ??????? ????????). ? ???? ?????? ??????, ??????? ??????? 20h ? ???????? ??????? ???? ?????? ???????, ? ??????????? (? ? ?????? ?????? ?????????) ????????? ??????????? ????? ???????? 1F2h (????????? ??? ???????? ???????? ?? ?????????) ?? ?? ?? ?? ???????, ????? ?????? ?????????? ??????????, ? ???? ????'?????? ???????? ???? ????????????? ? 1.

Контролер PCІІDE виглядає прибудовою до стандартного ІDE контролеру. Ця прибудова виражається в новому блоці з 8 регістрів для кожного каналу. Через те, що в AT не використовувався контролер DMA шини ІSA, ризику втратити сумісність зі старим ПО не було.

Як і всі PCІ пристрої, контролер має можливість довільно переміщати свої регістри в межах простору вводу - виводу. Базова адреса задається в заголовку конфігураційного простору по наступних зсувах 32 - бітних слів:

10h - блок командних регістрів першого каналу ІDE.

14h - блок керуючих регістрів першого каналу.

18h - блок командних регістрів другого каналу ІDE.

1Ch - блок керуючих регістрів другого каналу.

На практиці досить читання однієї базової адреси першого каналу, для другого каналу базова адреса це базова адреса першого каналу + 8. Байти зі зсувами 1,3 зарезервовані для обох каналів.(Таблиця 4)


Таблиця 4 - Контролер PCІІDE.

Зсув Регістр
0 Командний регістр
1 Зарезервований
2 Регістр стану
3 Зарезервований
4 Покажчик на PRDT (регістр 32 бітний)

Контролер може працювати у двох режимах: режимі сумісності (у цьому випадку регістри PCІІDE настроєні на області 1F0h - 1F7h і 170h - 177h) і в "рідному" (natіve) режимі. В "рідному" режимі регістри можуть мати довільні адреси. Важливо твердо засвоїти - переміщати можна тільки регістри PCІІDE контролера, регістри 1F0h - 1F7h та 170h - 177h залишаються на своїх місцях по кожному, на їхні функції й розташування нічого не впливає.

К-во Просмотров: 283
Бесплатно скачать Курсовая работа: Розробка програмного забезпечення для визначення інформації про жорсткий диск використовуючи