Смекни!
smekni.com

Работа с каталогами и подкаталогами, работа с файлами (стр. 3 из 3)


Библиографический список использованной литературы

1. Пирогов В.Ю. Ассемблер. Учебный курс. - 2-е изд., перераб. и доп. СПБ.: БХВ-Петербург, 2003.

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


Приложение А. Листинг программы

Title Catalog_Work

stk segment stack

dw 90 dup(?)

stk ends

Data segment

CURRENT_DIR DB 64 DUP(?),'$'

path_cur db 'e:\bp\bin',0,13,10,'$'

path db 'd:\catalog',0

path2 db'd:\catalog\*.*',0

file1 db 'd:\catalog\file 1.txt',0

file2 db 'd:\catalog\file2.txt',0

file3 db 'd:\catalog\file3.txt',0

cat_crt db 'Catalog create> ','$'

wr_msg db 'Napishem informaciuy w catalog',13,10,'Sama informacia: ',13,10;$'

err1_msg db 'Catalog sushestwuiet ili newozmogno sozdat ',13,10,'$'

msgl db 'Pered udaleniem kataloga sotrite iz nego wsiu informaciu i posle nagmite enter', 13,10,'$'

msg_cat_setup db 'Ustanofka tekushego katologa',13,10,'$'

msg_cur_cat db 'Tekushii catalog> ','$'

razd db 13,10,'$'

dta db 256 dup(?)

Data ends

Code segment

assume cs:code, ds:data, ss:stk

begin:

mov ax,data

mov ds,ax

mov ah,9h

lea dx,msg_cat_setup

int 21h

;---Делаем E:\BP\BIN текущем каталогом

MOV AH,3BH ;Номер функции

LEA DX,PATH_cur ;DS:DX должны указать на путь

INT 21Н ;устанавливаем текущий каталог

;---Получаем текущий каталог

MOV АН,47Н ;Номер функции

LEA SI,CURRENT_DIR ;Указываем на область данных

MOV DL,5 ;Указываем на диск Е:\

INT 21Н ;Помещаем строку по адресу DS:SI

mov ah,9h

lea dx,msg_cur_cat

int 21h

mov ah,9h

lea dx,current_dir

int 21h

;---Создаем новый подкаталог по адресу в PATH

LEA DX,path ;Указываем путь и имя подкаталога

MOV АН,39Н ;Сама функция

INT 21Н ;Создаем

JC ERROR1 ;Если ошибка то переходим на ошибку

mov ah,9h

lea dx,cat_crt

int 21h

mov ah,9h

lea dx,razd

int 21h

mov ah,9h

lea dx,wr_msg

int 21h

call key

;---Создаем в созданном каталоге 3 файла с расширением .txt

mov ah,3ch

mov al,2

mov cx,0

lea dx,filel

int 21h

mov ah,3ch

mov al,2

mov cx,0

lea dx,file2

int 21h

mov ah,3ch

mov al,2

mov cx,0

lea dx,file3

int 21h

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

jmp a

error 1:

mov ah,9h

lea dx,errl_msg

int 21h

jmp exit

a:

;---Устанавливаем DTA

LEA DX,DTA ;DS:DX указывает на DTA

MOV AH,1AH ;Функция установки DTA

INT 21H ;Устанавливаем DTA

;---Ищем первый файл

MOV AH,4EH ;Сама функция

LEA DX,path2 ;Указываем на строку пути

MOV СХ,0 ;Только нормальные атрибуты

INT 21Н ;Ищем *.*

JC ERROR_rout ;Ошибки обрабатываем

;---Выводим имя файла

NEXT_LINE: LEA BX,DTA ;ВХ указывает на DTA

ADD ВХ,30 ;Смещение для имени файла

NEXT_CHAR: MOV DL,[BX] ;Получаем символ из имени

CMP DL,0 ;Проверка на конец строки

JE END_STR ;Уходим, если конец строке

MOV АН,2 ;Иначе выводим символ

INT 21Н ;

INC ВХ ;Увеличиваем указатель

JMP SHORT NEXT_CHAR ;следующий символ

;---возврат каретки\перевод строки в конце строки

END_STR: MOV АН,2 ;Функция вывода символа

MOV DL,13 ;код возврата каретки

INT 21Н ;Выводим

MOV DL,10 ;код перевода строки

INT 21Н ;выводим

;---Ищем следующий файл

LEA DX,path2 ;Указываем на строку пути

MOV AH,4FH ;Номер функции

INT 21Н ;Ищем сл. файл

JC FINISHED ;Если нет, то выходим

JMP SHORT NEXT_LINE ;Иначе выводим имя файла

FINISHED:

mov ah,9h

lea dx,msgl

int 21h

call key

;Удаляем наш подкаталог CATALOG

LEA DX,PATH ;DS:DX Путь к подкаталогу

MOV AH,3aH ;Функция удаления

INT 21Н ;Удаляем

JC ERROR 1 ;Обработка ошибок

exit:

mov ah,4ch

int21h

error_rout:

jmp exit

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

;Процедура, ждет нажатия любой клавиши

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

key ргос

xor ah,ah

int 16h

ret

key endp

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

code ends

end begin


Приложение Б. Листинг программы

Title Catalog_Work

stk segment stack

dw 90 dup(?)

stk ends

Data segment

CURRENT_DIR DB 64DUP(?),'$'

path_cur db 'e:\bp\bin'A13,10,'$'

path db 'd:\catalog',0

path2 db 'd:\catalog\*.*',0

file 1 db 'd:\catalog\file 1.txt',0

file2 db 'd:\catalog\file2.txt',0

file3 db'd:\catalog\file3.txt',0

cat_crt db 'Catalog create>','$'

wrmsg db ‘Napishem informaciuy w catalog',13,10,'Sama informacia: ',13,10,'$'

errl_msg db 'Catalog sushestwuiet ili newozmogno sozdat ',13,10,'$'

msgl db 'Pered udaleniem kataloga sotrite iz nego wsiu informaciu i posle nagmite enter',13,10,'$'

msg_cat_setup db 'Ustanofka tekushego katologa',13,10,'$'

msg_cur_cat db 'Tekushii catalog> ','$'

razd db 13,10,'$'

dta db 256 dup(?)

Data ends

Code segment

assume cs:сode, ds:data, ss:stk

begin:

mov ax,data

mov ds,ax

mov ah,9h

lea dx,msg_cat_setup

int21h

MOV AH,3BH

LEA DX,PATH_cur

INT 21H

MOV AH,47H

LEA SI,CURRENT_DIR

MOV DL,5

INT 21H

mov ah,9h

lea dx,msg_cur_cat

int 21h

mov ah,9h

lea dx,current_dir

int 21h

LEA DX,path

MOV AH,39H

INT 21H

JC ERROR 1

mov ah,9h

lea dx,cat_crt

int 21h

mov ah,9h

lea dx,razd

int 21h

mov ah,9h

lea dx,wr_msg

int21h

call key

mov ah,3ch

mov al,2

mov cx,0

lea dx,filel

int 21h

mov ah,3ch

mov al,2

mov cx,0

lea dx,file2

int21h

mov ah,3ch

mov al,2

mov cx,0

lea dx,file3

int 21h

jmp a

error 1:

mov ah,9h

lea dx,errl_msg

int 21h

jmp exit

a:

LEA DX,DTA

MOV АН,1АН

INT 21H

MOV AH,4EH

LEA DX,path2

MOV CX,0

INT 21H

JC ERROR_rout

NEXT_LINE: LEA BX,DTA

ADD BX,30

NEXT_CHAR: MOV DL,[BX]

CMP DL,0

JE END_STR

MOV AH,2

INT 21H

INC BX

JMP SHORT NEXT_CHAR

END_STR: MOV AH,2

MOV DL,13

INT 21H

MOV DL,10

INT 21H

LEA DX,path2

MOV AH,4FH

INT 21H

JC FINISHED

JMP SHORT NEXT_LINE

FINISHED:

mov ah,9h

lea dx,msgl

int21h

call key

LEA DX,PATH

MOV AH,

INT 21H

JC ERROR 1

exit:

mov ah,4ch

int 21h

error_rout:

jmp exit

key proc

xor ah,ah

int 16h

ret

key endp

code ends

end begin