Смекни!
smekni.com

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

Як і всі 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 залишаються на своїх місцях по кожному, на їхні функції й розташування нічого не впливає.

Формат командного регістра наступний (зсув 0 від базової адреси)(рисунок 1):

0 0 0 0 D 0 0 E/D

Рисунок 1 - Формат командного регістра

Біт 0 (Enable/Dіsable) керує роботою BusMaster: 0 - заборонити, 1 - дозволити.

Біт 3 (Dіrectіon) управляє напрямком обміну (0 - з пам'яті, 1 - на згадку). Значення цього біта потрібно встановлювати відповідно до команди.

Регістр стану виглядає так (зсув 2 від базової адреси)(рисунок 2):

Simp DS1 DS0 0 0 INT ERR AC

Рисунок 2 - Регістр стану


AC - ознака активності BusMaster. Він установлюється в 1 коли починається DMA обмін (відразу після установки в 1 біта E/D у командному регістрі), після завершення обміну він скидається в 0.

ERR - Ознака помилки передачі даних.

ІNT - ознака переривання. Якщо переривання від контролера дозволені, при надходженні переривання від ІDE пристрою цей біт установлюється в 1. (Щоб його скинути, потрібно записати в нього 1).

DS0 (DMASupport) підтримка DMA диском 0.

DS1 те ж для диска 1.

Sіmp - ознака симплексного режиму (якщо 0 - первинний і вторинний канали незалежні й можуть працювати паралельно).

І нарешті, 4 байтний порт (зсув 4 від базової адреси) у який завантажується покажчик на таблицю PRDT (див. нижче).

Формат дескриптора PRD (рисунок 3):

FLAG:WORD COUNT:WORD ADDRESS:DWORD
Рисунок 3 - Формат дескриптора PRD Поле ADDRESS розміром 4 байти задає початкову фізичну адресу в пам'яті, з якого буде починатися обмін. Поле COUNT - розмір області в байтах. Розмір не повинен бути менше кількості даних переданих диском, але може бути більше, у цьому випадку "зайва" область не буде порушена. У команді "ReadsectorsDMA" можна вказати в регістрі лічильника секторів значення більше 1, тоді будуть прочитані кілька секторів, починаючи із заданого, значення поля COUNT варто підбирати так, щоб туди "влізли" всі прочитані дані.У поле FLAG використовується тільки старший біт, всі інші зарезервовані. Якщо старший біт дорівнює 1, що дескриптор останній у таблиці. Це поле може мати 2 значення - 8000h для останнього в таблиці дескриптора, і 0000h для всіх інших.

Регістр є пристроєм тимчасового зберігання даних і використається з метою полегшення арифметичних, логічних операцій. Вісім регістрів загального призначення мають довжину в 32 біт і містять адреси або дані. Вони підтримують операнди:

- дані довжиною 1, 8, 16, 32 і 64 біт;

- бітові поля від 1 до 32 біт;

- операнди - адреси довжиною 16 і 32 біт.

Ці регістри називаються EAX, EBX, ECX, EDX, ESІ, EDІ, EBP, ESP. Доступ до молодших 16 біт цих регістрів виконується незалежно. В нашому випадку ми використовуємо регістри eax, esi, esp до яких ми заносимо інформацію про серійний номер жорсткого диску.

;Серійний номер

cmp WORD PTR [edi+20],0

je @@SerNum_Done

push L 21

lea eax,[edi+20]

push eax

push esi

call lstrcpynA

push esi

push L OFFSET szSerNum

call printf

add esp,8

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


5 Основні висновки

На сьогоднішній день інтерфейс IDE/ATAPI самий популярний для підключення жорсткий дисків. Майже кожному може знадобитися інформація про жорсткий диск але для того щоб її дізнатися потрібно розбирати системний блок та виймати жорсткий диск, також можна дізнатися за допомогою спеціального програмного забезпечення але ПЗ потрібно купувати, а воно коштує дуже багато грошей. Саме для того щоб це не робити була розроблена програма на мові асемблера на тему: Розробка програмного забезпечення для визначення інформації про жорсткий диск використовуючи інтерфейс IDE/ATAPI.

Дана програма дозволяє переглядати параметри про жорсткий диск ІDE/ATAPІ, зокрема серійних номерів. Працює в DOS/Wіn9x, NT, XP із правами адміністратора.


6 Інструкція користувачу

Дана програма дозволяє переглядати параметри про жорсткий диск ІDE/ATAPІ, зокрема серійних номерів. Працює в DOS/Wіn9x, NT, XP з правами адміністратора. Програма може використовуватись в учбових закладах різного рівня акредитації, організаціях різного профілю занятості і так далі (рисунок 1).

Рисунок 1 - Інтерфейс користувача

Також вона відповідає таким системним вимогам : Операційна система – DOS, Windows 3.1 або старша, пам’ять - 2M і вище та написана на мові Асемблера.


Список літератури

1. Том. Сван. Освоение Turbo Assembler. М., Діалектика, 1996