46975 (588456), страница 4

Файл №588456 46975 (Вивід вмісту каталогу y середовищі MS DOS) 4 страница46975 (588456) страница 42016-07-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

; кількість разів

; ------Вивід атрибутів файлу

mov al,[offset dirData + FileName -9]; в al поміщується байт атрибуту

mov cx,6 ; в cx кількість значущих бітів у байті

; атрибуту

@@01:

shr al,1 ; зсув al вправо,

; в CF поміщується молодший біт

jb @@02 ; якщо CF=1, то перехід

mov dl, ' ' ; в dl поміщується пробіл (символ виводу)

push cx ; збереження cx в стеку

mov cx,4 ; поміщення в cx кількості символів для

; виводу (4)

call WriteSimv ; вивід 4-х пробілів

pop cx ; відновлення cx

jmp @@03 ; перехід

@@02:

mov di,offset point ; в di поміщується зміщення змінної point

push cx ; збереження cx

call StrWrite ; вивід на екран зірочки

pop cx ; відновлення cx

@@03:

loop @@01 ; виконувати цикл, доки cx≠0 (6-ть разів)

; ------Вивід години створення файлу

mov bx,[offset dirData + FileName-8] ; в bx поміщується слово часу

; створення файлу

mov ax,bx ; в ax поміщуються слово години

; створення файлу

and ax,0f800h ; накладання маски

shr ax,11 ; зсув результату (отримали години)

mov cx,1

mov di,offset buffer ; di вказує на пустий буфер buffer

call BinToAscDec ; передача в змінну buffer 10-кового

; ASCII-представлення числа з ax

mov cx,2 ; в cx ширина поля виводу

call StrWrite2 ; вивід ASCII-представлення числа з ax

mov cx,1 ; встановлення в cx кількості виводів

mov dl, ':' ; передача в dl символу, що виводиться

call WriteSimv ; вивід один раз символу із dl

; ------Вивід хвилин створення файлу

mov ax,bx ; в ax поміщується слово хвилини

; створення файлу

and ax,7e0h ; накладання маски

shr ax,5 ; зсув результату (отримали хвилини)

mov cx,1

mov di,offset buffer ; di вказує на пустий буфер buffer

call BinToAscDec ; передача в змінну buffer 10-кового

; ASCII-представлення числа з ax

mov cx,2 ; в cx ширина поля виводу

call StrWrite2 ; вивід ASCII-представлення числа з ax

mov cx,1 ; встановлення в cx кількості виводів

mov dl, ':' ; передача в dl символу, що виводиться

call WriteSimv ; вивід один раз символу із dl

; ------Вивід секунд створення файлу

mov ax,bx ; в ax поміщується слово секунди

; створення файлу

and ax,1fh ; накладання маски

shl ax,1 ; помноження на 2 (отримання секунд із

; двохсекундних одиниць)

mov cx,1

mov di,offset buffer ; di вказує на пустий буфер buffer

call BinToAscDec ; передача в змінну buffer 10-кового

; ASCII-представлення числа з ax

mov cx,3 ; в cx ширина поля виводу

call StrWrite2 ; вивід ASCII представлення числа з ax

mov cx,1 ; встановлення в cx кількості виводів

mov dl, ' ' ; передача в dl символу, що виводиться

call WriteSimv ; вивід один раз символу із dl

; ------Виведення дня створення файлу

mov bx,[offset dirData + FileName-6] ; в bx слово дати створення

; файлу

mov ax,bx ; в ax слово дня створення файлу

and ax,01fh ; накладання маски

mov cx,1 ; встановлення мінімальної довжини

; перетворюваного рядка

mov di,offset buffer ; в di зміщення пустого буферу

call BinToAscDec ; заповнення буферу buffer 10-ковим

; ASCII-представленням числа з ax

mov cx,2 ; в cx ширина поля виводу

call StrWrite2 ; вивід ASCII представлення номера дня

mov cx,1 ; в cx кількість виводів

mov dl, '\' ; в dl символ для виводу

call WriteSimv ; вивід символу із dl задану кількість разів

; ------Вивід місяця створення файлу

mov ax,bx ; в ax слово місяця створення файлу

and ax,1e0h ; накладання маски

shr ax,5 ; зсув результату (отримання місяця)

mov cx,1 ; встановлення мінімальної довжини

; перетворюваного рядка

mov di,offset buffer ; в di зміщення пустого буферу

call BinToAscDec ; заповнення буферу buffer 10-ковим

; ASCII-представленням числа з ax

mov cx,2 ; в cx ширина поля виводу

call StrWrite2 ; вивід ASCII представлення номера дня

mov cx,1 ; в cx кількість виводів

mov dl, '\' ; в dl символ для виводу

call WriteSimv ; вивід символу із dl задану кількість разів

; ------Вивід року створення файлу

mov ax,bx ; в ax слово року створення файлу

and ax,0f800h ; накладання маски

shr ax,9 ; зсув результату (отримання року)

add ax,1980 ; отримання року створення

mov cx,1 ; встановлення мінімальної довжини

; перетворюваного рядка

mov di,offset buffer ; в di зміщення пустого буферу

call BinToAscDec ; заповнення буферу buffer 10-ковим

; ASCII-представленням числа з ax

mov cx,4 ; в cx ширина поля виводу

call StrWrite2 ; вивід ASCII представлення номера дня

mov cx,2 ; в cx кількість виводів

mov dl, ' ' ; в dl символ для виведення

call WriteSimv ; вивід проміжку у 2-а пробіли

; ------Вивід розміру файлу у 16-річному вигляді

mov ax,[offset dirData + FileName-2] ; в ax молодші два байти

; подвійного слова розміру файла

mov cx,1 ; в cx мінімальна довжина

; перетворюваного рядка

mov di,offset buffer ; в di зміщення буферу для результату

call BinToAscHex ; перетворення двох молодших байтів

; розміну у ASCII-рядок

call StrWrite ; вивід на екран

mov ax,[offset dirData + FileName-4] в ax містяться старші два байти

; подвійного слова розміру файла

call BinToAscHex ; перетворення у ASCII рядок

; представлення у вигляді 16-річного

; числа

call StrWrite ; вивід на екран

call NewLine ; перехід на новий рядок

pop bx ; відновлення у bx зміщення процедури

; Action

ret ; завершення процедури

ENDP Action

END Start

Схема алгоритму основної програми приведена у додатках (Додаток А).

Отримання даних із командного рядку і встановлення критерію відбору файлів (маски) реалізується за допомогою функцій модуля PARAMS.obj. Спочатку заповнюється спеціальний буфер хвостом команди і його вміст розбивається на окремі елементи (GetParams). При наявності в хвості команди параметрів, перший параметр задає маску; якщо параметри відсутні, у якості маски встановлюється стандартна '*.*' (вивід всіх файлів із директорії, в якій знаходиться програма). Основну роботу виконує функція DirEngine, в яку, за допомогою регістру bx, передається зміщення функції Action (для подальшого виклику її за зміщенням).

Функція DirEngine, за допомогою 2Fh, 1Ah, 4Eh, 4Fh функцій переривання INT21h DOS, знаходить поточне положення буфера DTA, зберігає його адресу, встановлює новий DTA у власний спеціальний буфер і за допомогою нього шукає файли, що відповідають заданій масці. При знаходженні таких файлів, керування по зміщенню передається функції Action.

Основна задача Action – обробити інформацію в DTA і вивести необхідні дані на стандартний пристрій виводу.

DTA має наступну структуру [4, 6]:

Зміщення

Довжина

+0

15H

Зарезервована, використовується функцією 4Fh INT21h DOS

+15h

1

атрибут файла

+16h

2

час

+18h

2

дата

+1ah

4

розмір файла (формат DWORD)

+1eh

0dh

13-байтова ASCIIZ ім'я файлу

Спочатку виводиться ім'я файлу, яке має наступну структуру: "filename.ext". Вивід реалізується за допомогою спеціальних функцій StrWrite, StrWriter, Length і WriteSimv із модуля STRIO.obj.

Наступним кроком реалізується вивід атрибутів файлу шляхом виводу зірочок навпроти відповідного атрибуту. Байт атрибуту файлу має наступну структуру [6]:

№ біту

Що означає

0

тільки читання

1

скритий

2

системний

3

том

4

каталог

5

архів (або копія файлу не створювалась)

Тобто, якщо біт атрибуту файлу буде мати наступне значення 21h, це означатиме, що файл є архівним, він лише для читання.

Передостаннім кроком виводяться час і дата створення файлу у форматі: година:хвилина:секунда день\місяць\рік. Дані, що описують час і дату створення/змінення файлу, потребують накладання масок і здвигів для

№ біта

Операція

№ біта

Операція

Час створення

Дата створення

15

година

(0-23)

(t & 0f800h)>>11

15

рік

(0-119)+1980

d & 001fh

14

14

13

13

12

12

11

11

10

хвилина

(0-59)

(t & 07e0h)>>5

10

9

9

8

8

місяць

(1-12)

(d & 01e0h)>>5

7

7

6

6

5

5

4

секунда / 2

(0-30)

t & 001fh

4

день

(0-31)

(d & f800h)>>9

3

3

2

2

1

1

0

0

отримання необхідної інформації і представлені в наступному виді [6]:

Перевід двійкових чисел у ASCII-десяткове представлення для виводу на екран реалізується за допомогою функції BinToAscDec модуля BINASC.obj.

Останній крок виводу розміру файлу виконується в два етапи, оскільки розмір файлу міститься у подвійному слові і модуль BSNASC.obj не надає інструменту для переведення двійкових даних у ASCII-рядок.

Спочатку за допомогою функції BinToAscHex модуля BINASC.obj переводиться молодші, а потім старші два байти, переведені у ASCII-шістнадцятирічне представлення.

По завершенні своєї роботи Action знов передає керування викликаючій функції DirEngin, яка повторює пошук файлів і викликає для роботи Action, доки не завершить обробку всіх файлів, що відповідають масці. Після цього DirEngine повертає старий DTA і передає курування основній програмі, яка завершує роботу і повертає код виходу.

Результати роботи програми:

D:\Program\ASM\misk>dr

The DIRWUER wersion 1.0

Romanov Alexander Urievich. KIT-13A NTU"KhPI"

Copyright (C) 2005 by Romanov Alexander

Filename OnR Skr Sys Tom Kat Arh Time Data Size

. * 11:59:18 11\5 \2005 00

.. * 11:59:18 11\5 \2005 00

BLW32.DLL * 12:12:0 14\5 \1996 52020

DEBUG.EXE * * 22:22:0 5 \5 \1999 0518A

USA.BLL * 12:12:0 14\5 \1996 18DCD

MYREP.CBA * 18:48:42 25\1 \2002 01F

DIRECT * 12:27:54 11\5 \2005 00

Характеристики

Тип файла
Документ
Размер
2,2 Mb
Учебное заведение
Неизвестно

Список файлов ВКР

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6814
Авторов
на СтудИзбе
276
Средний доход
с одного платного файла
Обучение Подробнее