Реферат по предмету "Информатика, программирование"


Побудова дерева каталогів диску і реалізація можливості переходу у вибраний каталог

Міністерствоосвіти та науки УкраїниКіровоградський Державний Технічний університет
Кафедрапрограмного забезпечення
Курсовийпроект
з дисципліни
«Програмування намові ASM-86»
на тему:
«Побудова деревакаталогів диску і реалізація можливості переходу у вибраний каталог»

Зміст
 
Завдання
Вступ
1.  Постановка задачі
2.  Обґрунтування виборуметодів розв’язку задачі
3.  Алгоритм програми
4.  Реалізація програми
5.  Системні вимоги
6.  Інструкція длякористувача
Висновки
Використана література
Лістинг програми
 
 

Вступ
Як відомо, дискова інформація в комп’ютерахзаписується у вигляді файлів. На дисках, крім файлів, існують також директорії.Завдяки цьому на диску можна групувати файли.
Структура інформації на диску нагадує дерево. Так,кореневий каталог – це «вершина» дерева, а нижче ідуть «гілки» піддиректорій.
Для перегляду дерева каталогів і «мандрів» по ньомуможна використовувати засоби ДОС або програми-оболонки. Можна також створитиспеціальні програми. У даній роботі розглянута програма побудови деревакаталогів диску, вона дає змогу вибрати і перейти в потрібний каталог.

1. Постановказадачі
Використовуючимову асемблера, написати програму, яка б дозволяла відобразити на екрані деревокаталогів на диску і перейти в потрібний користувачеві каталог.
2. Обґрунтуваннявибору методів розв’язку задачі
Дляпошуку каталогів на диску доцільно використовувати функції DOS переривання 21.Перша з них (4еh) шукає перший файл, який підходить до шаблону і атрибутів, і4fh, яка шукає наступнийфайл. При знайденні каталогу відбувається перехід в нього і знову викликається(рекурсивно) функція аналізу каталога. Таким чином, у пам’яті створюєтьсяструктура, яка зберігає імена директорій та рівень їх вкладеності.
Післясканування відбувається відображення першого кадру дерева. Керуванняклавіатурою здійснюється за допомогою переривання 16.
Виведенняна екран здійснюється також з використанням функцій ДОС 21 переривання.
3.Алгоритм програми
1.Виділити пам’ять
2.Перейти в кореневий каталог
3.Знайти каталог на диску.
4.Перейти в нього і зберегти в пам’яті його ім’я
5.Рекурентно перейти на пункт 3.
6.Якщо каталог не знайдено, то припинити сканування.
7.Очистити екран.
8.Вивести на екран 24 рядки каталогів
9.При натисканні клавіш «вгору», «вниз» прокручувати дерево.
10.При натисненні «ENTER» сформувати шлях і перейти в заданий каталог.
11.Кінець
4.Реалізація програми
Після початку роботи програми виділяєтьсяпам’ять для зберігання дерева каталогів. Потім за наведеним алгоритмом відбуваєтьсярекурсивне сканування дерева каталогів. Для реалізації рекурсії використовуєтьсязменшення показника стеку і копіювання області DTA у стек. Післявиходу з рекурсії – область DTA для конкретного каталогу відновлюється.
Після сканування екран очищується шляхомзапису нулів у відеопам'ять. Після цього засобами 21 переривання у циклі звідступами виводяться назви каталогів в тому порядку, в якому вони записані впам’яті. Виведення виводить процедура, починаючи з певної позиції. Принатисканні клавіш відбувається зміна позиції і перемалювання екрану. Дляпереходу в заданий каталог використовується функція 3bh 21 переривання.
5.Системні вимоги
Програмапрацює на IBM-PC-сумісних комп’ютерах з мікропроцесором INTEL 8086 абостаршим. Необхідно 640 КБайт пам’яті, монітор CGA або старший, а такожнакопичувач на жорстких чи гнучких магнітних дисках. Необхідна також операційнасистема MS-DOS або сумісна з нею (Windows).6.Інструкція для користувача
Дляроботи треба запустити програму tree.com. Після цього на екрані після деякої паузи(відбувається сканування дерева) виводиться дерево каталогів. По ньому можнапереміщуватися клавішами «вгору» та «вниз». Верхній каталог виділено кольором.Якщо натиснути Enter, відбудеться перехід в заданий каталог. Вихід з програмиздійснюється за допомогою клавіші ESC.
Висновки
Отже,створена програма, яка дозволяє працювати з деревом каталогів диску. Вона єприкладом для роботи на асемблері з функціями пошуку файлів в каталозі, а такожроботи з пам’яттю.

Використаналітература
 
1. Роберт Журден.Справочник программиста на персональном компьютере фирмы IBM
2. П. Абель.Ассемблер для IBM PC

Лістингпрограми
model tiny
386
code
org100h
start:
jmpbegin
mem_erdb 'memory fault! $'
scan_msgdb 'Scanning…$'
all_dirdb '*.*', 0
up_dirdb '..', 0
r_dirdb '\', 0
recurse_leveldb 0
names_offsetdw 0
dirnumdw 0
dirposdw 0
pathdb '\', 100 dup(0); path
change_dirproc
movsi, word ptr [dirpos]
moval, byte ptr fs: [si]; level
incal
xorah, ah; counter
movdi, offset path+1
next_level:
cmpah, al
jestop_path

; шукаємокаталог позаду з рiвнем ah
pushsi
find_level:
cmpbyte ptr fs: [si], ah
jefound_level
subsi, 14
jmpfind_level
found_level:
incsi
movdl, byte ptr fs: [si]
cmpdl, 0
jestop_dir
movbyte ptr [di], dl
incdi
jmpfound_level
stop_dir:
movbyte ptr [di], '\'
incdi
popsi
incah
jmpnext_level
stop_path:
movbyte ptr [di-1], 0
; chdir
movah, 3bh
movdx, offset path
int21h
ret
change_direndp
scan_dirproc
movah, 2fh
int21h
; findfirst
movah, 4eh
movcx, 10h
movdx, offset all_dir
int21h
findnext:
jcstop_find
cmpbyte ptr [bx+15h], 10h
jneskip_nodir
cmpbyte ptr [bx+1eh], '.'
jeskip_nodir
movdi, word ptr cs: [names_offset]
moval, byte ptr cs: [recurse_level]
movbyte ptr fs: [di], al
incdi
movsi, bx
addsi, 1eh
cld
movcx, 13
pushes
pushfs
popes
repmovsb
popes
; chdir
movah, 3bh
movdx, bx
adddx, 1eh
int21h
jcskip_nodir; error
addword ptr cs: [names_offset], 14
addword ptr cs: [recurse_level], 1
addword ptr cs: [dirnum], 1
; savedta
subsp, 2bh
movdi, sp
movsi, bx
movcx, 2bh
repmovsb
callscan_dir
movsi, sp
movdi, bx
movcx, 2bh
repmovsb
addsp, 2bh
; restoredta

subword ptr cs: [recurse_level], 1
; chdir.
movah, 3bh
movdx, offset up_dir
int21h
skip_nodir:
movah, 4fh
int21h
jmpfindnext
stop_find:
ret
scan_direndp
show_dirsproc
; clrscr
draw_screen:
pushes
movax, 0b800h
moves, ax
xordi, di
movax, 1c00h
movcx, 80
repstosw
movdi, 80
movcx, 2000–80
movax, 0700h
repstosw
popes
movah, 2
xordx, dx
xorbh, bh
int10h
movcx, 24
movdi, word ptr cs: [dirpos]
draw_name:
movsi, di
pushcx
xorcx, cx
movcl, byte ptr fs: [si]
inccx
movah, 2
movdl, ' '
set_spac:
int21h
int21h
int21h
loopset_spac
popcx
incsi
next_let:
movdl, byte ptr fs: [si]
cmpdl, 0
jenext_name

movah, 2
int21h
incsi
jmpnext_let
next_name:
movah, 2
movdl, 10
int21h
movdl, 13
int21h
adddi, 14
loopdraw_name
xorah, ah
int16h
cmpah, 50h
jneno_50h
; down
movax, word ptr cs: [dirpos]
addax, 14
movword ptr cs: [dirpos], ax
jmpdraw_screen
no_50h:
cmpah, 48h
jneno_48h

; up
movax, word ptr cs: [dirpos]
cmpax, 0
jedraw_screen
subax, 14
movword ptr cs: [dirpos], ax
jmpdraw_screen
no_48h:
cmpah, 1
jestop_s
cmpah, 1ch
jnedraw_screen
; chdir
callchange_dir
jmpstop_s
jmpdraw_screen
stop_s:
ret
show_dirsendp
begin:
movbx, 4096
movah, 4ah
int21h
movax, bx
shlax, 4
movsp, ax

movah, 48h
movbx, 1000h
int21h
jcmem_errr
movfs, ax
pushes
pushfs
popes
xordi, di
movcx, 0ffffh
xorax, ax
repstosb
popes
movdx, offset scan_msg
movah, 9
int21h
movah, 3bh
movdx, offset r_dir
int21h
callscan_dir
callshow_dirs
pushfs
popes
movah, 49h
int21h
movah, 4ch
int21h

mem_errr:
mov ah,9
movdx, offset mem_Er
int21h
en db?
endstart


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :