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

Традиційно, програми MSDOSдозволяють користувачу вводити в командному рядку одне чи більше імен файлів і інші дані. Для нас це цікаве можливістю одразу при визові основної програми DR.exeзадавати шлях до директорії та маску файлів, які ми бажаємо вивести на екран[7].

Наприклад:

c > DR c:\windows\*.sys

Тобто даний ввід має викликати програму DR.exe, яка виведе усі файли із розширенням .sys, які знаходяться за адресою c:\windows. Мова асемблера не дає нам вбудованих механізмів реалізації даної можливості, тому виникає необхідність розробки власного програмного модуля для роботи із командним рядком.

При завантаженні exe-файлу command.comстворює в пам'яті PSPблок (256 байт), у якому, серед іншої інформації, містить текст, який йде після імені програми (хвіст команди). Перед початком виконання програми адреса PSPміститься в регістровій парі ds:es. Хвіст команди починається зі зміщення 80h(до FFh)і займає 128 байт, при чому перший символ знаходиться за зміщенням 81h, а в 80hміститься кількість символів хвоста команди[4, 6].

Ідея модуля PARAMS.asmв тому, що створюється власний 128-ми байтовий буфер, в який (за допомогою функції GetParams) копіюється хвіст команди, а потім виконується обробка отриманих даних за допомогою функції GetOneParam(отримання адреси параметра за номером) і ParamCount(отримання кількості параметрів).

Параметри в хвості команди розділені пробілами, останній символ – символ повернення каретки.

На основі сказаного було розроблено наступний програмний модуль:

IDEAL

MODELsmall

TailLenEQU0080h ; зміщення байта із довжиною рядка

; параметрів

CommandTailEQU0081h ; зміщення першого символу рядка

; параметрів

DATASEG

numParamsDW? ; кількість параметрів

paramsDB128 DUP(?) ; буфер на 128 байт для хвоста команди

CODESEG

PUBLIC ParamCount, GetParams, GetOneParam

; -------------------------------------------------------------------------------------------

; Separators внутрішня процедура для перевірки на пробіли, табуляцію,

; повернення каретки

; ------------------------------------------------------------------------------------------

; Вхід ds:si адреса символу, що перевіряється

; Вихід ZF=1 символ є пробілом, табуляцією чи поверненням каретки

ZF=1 символ не є роздільником

; Регістри не змінюються

; -------------------------------------------------------------------------------------------

PROC Separators

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