перейти к полному списку дипломных проектов
Ссылка на скачивания файла в формате .doc находится в конце странички
В AH поміщується номер функції; регістрова пара вказує на рядок, що задає маску імені файлу; в СХ міститься атрибут файлу
1. Вибір засобу виконання поставленої задачі
Існує два шляхи вирішення поставленої задачі. Розглянемо кожний з них окремо.
Перший засіб
Послідовне переміщення по дереву каталогу шляхом безпосереднього читання (за допомогою другої функції переривання INT 13h BIOS) секторів пам'яті, починаючи із ROOT, і пошуку необхідного підкаталогу згідно із вказаним шляхом до потрапляння у кінцевий каталог із виводом даних о всіх файлах і директоріях, що в ньому містяться [1, 2].
Однак даний метод надзвичайно складний, має прив'язку до певної системи FAT, організації BOOT і таблиці розділів, потребує прямого звертання до жорсткого диску, що не свідчить в його користь.
Другий засіб
Пов'язаний із специфікою роботи MS DOS. Коли програма починає виконуватись, регістри DS:0000 і ES:0000 вказують на початок PSP (Program Segment Prefix – префікс програмного сегмента) – об'єм пам'яті, в якому міститься інформація о розмірі доступної пам'яті, опції із рядка команд, імена файлів, оточення, а також DTA (розмір 43 байти) [4, 6].
DTA має наступну структуру:
Резервна область.
Атрибут.
Час створення файлу.
Розмір файлу.
Ім'я із розширенням файлу.
Таким чином DTA дає повну і вичерпну інформацію о файлі. Тобто, читаючи послідовно DTA кожного файлу директорії, можна отримати інформацію по кожному файлу і вивести її на екран.
Пошук DTA файлів реалізується за допомогою спеціальних функцій переривання INT 21h MS DOS. Для виводу інформації на екран, і завершення програми, теж використовуються спеціальні функції переривання INT 21h.
2.2. Функції переривання INT 21h MS DOS, що використані при роботі програм
2.2.1. Функції роботи із DTA
Середовище MS DOS пропонує набір функцій переривання INT 21h, що дозволяють працювати із DTA – встановити його адресу (1Ah), дати поточний DTA (2Fh), заповнити DTA при знаходженні першого файлу (4Eh), заповнити DTA при знаходженні наступного файлу (4Fh). Розглянемо кожну з цих функцій окремо:
1Ah функція INT 21h [6]
Вхід: AH 1Ah
DS:DX адреса для DTA
Вихід: не має
Дана функція встановлює адресу для DTA. В регістрову пару DS:DX заноситься, відповідно, сегмент і зміщення буфера розміром >43 байтів, в який буде зберігатись DTA. Якщо адреса DTA змінюється вашою програмою, бажано зберегти попередню адресу DTA (за допомогою функції 2Fh INT 21h) і відновити її після завершення програми.
Приклад:
mov ah, 1Ah ; в ah номер функції
mov dx, offset buffer ; в dx поміщується зміщення буфера,
; сегмент лишається незмінний
int 21h
В даному прикладі перевизначається адреса для буфера DTA.
2Fh функція INT 21h [6]
Вхід: AH 2Fh
Вихід: ES:BS адреса початку поточної DTA.
Функція повертає адресу початку області вводу/виводу DTA. В AH заноситься номер функції; в регістровій парі ES:BS повертається адреса початку DTA.
Дана функція корисна при збереженні адреси DTA для її подальшого відновлення після зміни програмою. Слід бути обережним при її використанні, оскільки функція змінює регістр es.
Приклад:
push es ; збереження у стеку регістрів es, bx, що зміняться
push bx
mov ah, 2Fh ;в ах номер функції
int 21h
mov [DTAs], es ; збереження адреси DTA
mov [DTAo], bx
pop bx ; відновлення попередніх значень регістрів bx і es
pop es ; із стеку
В даному прикладі у змінних DTAs і DTAo зберігається адреса DTA, регістри bx, es незмінні.
4Eh функція INT 21h [6]
Вхід: AH 4Fh
DS:DX адреса ASCII рядка із маскою імені файлу
СХ атрибут файлу для порівняння
Вихід: АХ код помилки, якщо в CF=1 буфер DTA заповнений даними.
Дана функція знаходить ім'я першого файлу у переліку, що відповідає заданій масці і атрибуту, і поміщує інформацію про нього в буфер DTA. В AH поміщується номер функції; регістрова пара вказує на рядок, що задає маску імені файлу; в СХ міститься атрибут файлу.
В імені файлу і розширенні допускаються узагальнені символи "*" і "?".
скачать бесплатно РОЗРОБКА ЗАДАЧІ НА МОВІ АСЕМБЛЕР
Содержание дипломной работы
Пройдено великий етап від мов структурного програмування (таких як С) до систем багатомовного програмування, на роль яких претендують такі бренди як С, Java, та ін
В AH поміщується номер функції; регістрова пара вказує на рядок, що задає маску імені файлу; в СХ міститься атрибут файлу
Серед них: процедури вводу/виводу даних на консоль, обробки ASCII рядків, а також перетворення числових даних у ASCII формат для подальшого їх виведення на екран
asm, є зручними і простими інструментами виводу інформації на стандартний пристрій виводу і будуть використані в основній програмі
Основну роботу виконує функція DirEngine, в яку, за допомогою регістру bx, передається зміщення функції Action (для подальшого виклику її за зміщенням)
Після цього DirEngine повертає старий DTA і передає курування основній програмі, яка завершує роботу і повертає код виходу
exe повністю відповідає поставленому завданню про створення програми мовою асемблера, яка виводить вміст директорії, атрибути, розмір і час/дату створення файлів і папок, які в ній містяться
Attrib and (1 shl i)) <>0
then write(' * ') {вивід зірочок навпроти файлів }
else write(' '); {із відповідними атрибутами}
{------Вивід часу створення файлу}
Write(' ',((DTAAddress^
SYS * * * 22:22:0 5 /5 /1999 364B6
MSDOS
Інші приклади демонструють різноманітні засоби задання масок файлів із використанням символів "*" і "?", а також задання шляху до директорії, вміст якої необхідно вивести
Версия 1