Дипломная работа: Вивід вмісту каталогу y середовищі MS DOS

Послідовне переміщення по дереву каталогу шляхом безпосереднього читання (за допомогою другої функції переривання INT13hBIOS) секторів пам'яті, починаючи із ROOT, і пошуку необхідного підкаталогу згідно із вказаним шляхом до потрапляння у кінцевий каталог із виводом даних о всіх файлах і директоріях, що в ньому містяться [1, 2].

Однак даний метод надзвичайно складний, має прив'язку до певної системи FAT, організації BOOTі таблиці розділів, потребує прямого звертання до жорсткого диску, що не свідчить в його користь.

Другий засіб

Пов'язаний із специфікою роботи MSDOS. Коли програма починає виконуватись, регістри DS:0000 і ES:0000 вказують на початок PSP(ProgramSegmentPrefix– префікс програмного сегмента) – об'єм пам'яті, в якому міститься інформація о розмірі доступної пам'яті, опції із рядка команд, імена файлів, оточення, а також DTA(розмір 43 байти) [4, 6].

DTAмає наступну структуру:

- Резервна область.

- Атрибут.

- Час створення файлу.

- Розмір файлу.

- Ім'я із розширенням файлу.

Таким чином DTAдає повну і вичерпну інформацію о файлі. Тобто, читаючи послідовно DTAкожного файлу директорії, можна отримати інформацію по кожному файлу і вивести її на екран.

Пошук DTAфайлів реалізується за допомогою спеціальних функцій переривання INT21hMSDOS. Для виводу інформації на екран, і завершення програми, теж використовуються спеціальні функції переривання INT21h.

2.2. Функції переривання INT 21 h MS DOS , що використані при роботі програм

2.2.1. Функції роботи із DTA

Середовище MSDOSпропонує набір функцій переривання INT21h, що дозволяють працювати із DTA– встановити його адресу (1Ah), дати поточний DTA(2Fh), заповнити DTAпри знаходженні першого файлу (4Eh), заповнити DTAпри знаходженні наступного файлу (4Fh). Розглянемо кожну з цих функцій окремо:

1Ahфункція INT21h[6]

Вхід: AH1Ah

DS:DXадреса для DTA

Вихід:не має

Дана функція встановлює адресу для DTA. В регістрову пару DS:DXзаноситься, відповідно, сегмент і зміщення буфера розміром >43 байтів, в який буде зберігатись DTA. Якщо адреса DTAзмінюється вашою програмою, бажано зберегти попередню адресу DTA(за допомогою функції 2FhINT21h) і відновити її після завершення програми.

Приклад:

movah, 1Ah ; в ahномер функції

movdx, offsetbuffer ; в dxпоміщується зміщення буфера,

; сегмент лишається незмінний

int21h

В даному прикладі перевизначається адреса для буфера DTA.

2Fhфункція INT21h[6]

Вхід: AH2Fh

Вихід: ES:BSадреса початку поточної DTA.

Функція повертає адресу початку області вводу/виводу DTA. В AHзаноситься номер функції; в регістровій парі ES:BSповертається адреса початку DTA.

Дана функція корисна при збереженні адреси DTAдля її подальшого відновлення після зміни програмою. Слід бути обережним при її використанні, оскільки функція змінює регістр es.

К-во Просмотров: 541
Бесплатно скачать Дипломная работа: Вивід вмісту каталогу y середовищі MS DOS