Библиографический список использованной литературы
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