Написання програм для перейменування файлів та копіювання файлів і підкаталогів (аналоги REN, XCOPY). Вибір методу розв"язки задачі та його обґрунтування. Алгоритм та реалізація програми, її системні вимоги. Інструкція для користувача та лістинг.
З файлами на диску можна проводити певні операції - зокрема перейменовувати та копіювати.Необхідно написати програми для перейменування файлів та копіювання файлів і підкаталогів (аналоги REN, XCOPY).Для роботи з файлами в можна використовувати його системний сервіс, який зосереджено в перериванні 21h. Зокрема, використовуються такі функції: 56h - перейменувати файл 3ch - створити файлЗанести в память комадний рядок Якщо була помилка, то вивести повідомлення. Знайти всі файли в поточному каталозі, які відповідають заданій масці Для кожного файла викликати функцію copy_fileПісля запуску програми викликається функція process_commandline для аналізу командного рядка. Якщо було задано параметр копіювання підкаталогів, викликається функція process_directory, яка шукає всі підкаталоги в даному і для кожного рекурсивно викликає функцію process_files.Операційна система DOSДля копіювання треба вказати такий рядок: k_xcopy *.com c:\utils [/s] де *.com - маска для файлів, які треба копіювати, c:\utils - каталог, куди треба копіювати, а необовязковий ключ /s вказує на те, що в копіювання треба включити також підкаталоги даного підкаталогу.Завдяки виконанню курсового проекту створені програми для перейменування файлів та копіювання групи файлів.
План
Зміст
Вступ
1. Постановка задачі
2. Обґрунтування вибору методів розвязку задачі
3. Алгоритм програми
4. Реалізація програми
5. Системні вимоги
6. Інструкція для користувача
Висновки
Використана література
Лістинг програми
Вывод
Завдяки виконанню курсового проекту створені програми для перейменування файлів та копіювання групи файлів. Вони є прикладом роботи з файловою системою засобами MS-DOS і демонструє елементи системного програмування для IBM PC.
Список литературы
1. Майко Г.В. Assembler для IBM PC. М., 1997
2. Лекції з дисципліни «Програмування на мові ASM-86»
Лістинг програми
K_XCOPY.ASM model tiny code org 100h start: jmp begin mem_errmsg db "Memory allocation error.$" file_errmsg db "Files error!$" param_err db "Parameters error! Example: k_xcopy c:\*.* d: [/s]$" all_dirs db "*.*", 0 up_dir db "..", 0 handle_1 dw 0 handle_2 dw 0 orig_date dw 0 orig_time dw 0 process_dirs db 0; вкл. підкаталоги filename_1 db 100 dup(0); 1 параметр _xcopy filename_2 db 100 dup(0); 2 параметр _xcopy targetname db 100 dup(0); сюди буде формуватися імя файла призначення
;
; копіювання файла
; ds:si - ASCIIZ старий файл
; ds:di - ASCIIZ новий файл
;
copy_file proc
; виділити память mov ah, 48h mov bx, 2048 int 21h jnc mem_ok jmp mem_err mem_ok: mov es, ax; сегмент виділений для копіювання
; open file for read mov ah, 3dh xor al, al mov dx, si int 21h jc file_error mov word ptr handle_1, ax
; get date mov bx, ax mov ax, 5700h int 21h mov word ptr orig_time, cx mov word ptr orig_date, dx
; open file for write mov ah, 3ch xor cx, cx mov dx, di int 21h jc file_error mov word ptr handle_2, ax push ds pushes pop ds xor dx, dx
; read block next_block: mov ah, 3fh mov bx, word ptr cs:handle_1 mov cx, 32768 int 21h cmp ax, 0; eof je stop_copy
; write to file mov cx, ax mov ah, 40h mov bx, word ptr cs:handle_2 int 21h jmp next_block stop_copy: pop ds
; set date mov ax, 5701h mov bx, word ptr handle_2 mov cx, word ptr orig_time mov dx, word ptr orig_date int 21h
; close files mov ah, 3eh mov bx, word ptr handle_1 int 21h mov ah, 3eh mov bx, word ptr handle_2 int 21h
; attrib mov ah, 43h xor al, al mov dx, offset filename_1 int 21h mov ah, 43h mov al, 1 mov dx, offset filename_2 int 21h
; звільнити mov ah, 49h int 21h jc mem_err ret file_error: mov ah, 9 mov dx, offset file_errmsg int 21h mov ah, 4ch int 21h mem_err: mov ah, 9 mov dx, offset mem_errmsg int 21h mov ah, 4ch int 21h copy_file endp