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

Рисунок 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

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