Новичок
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 26.11.2015
Репутация: нет Всего: нет
|
День добрый, товарищи программисты. Нужна программа которая выводит сообщение о наличии скрытых файлов в каталоге. Начал писать программу, которая выводит содержимое каталога на экран, но при установки атрибута 2h попутно выводятся и остальные файлы, не являющиеся скрытыми. TASM, DOS, COM Код | .model tiny .code org 100h ; СОМ-файл start: push cs ;на всякий случай, приравняем cs и ds pop ds ;хотя в COM-файле они и так равны mov ah, 9 ;выводим на экран сообщение lea dx, msgpathrequest ;в сообщении - просьба ввести имя каталога int 21h mov ah, 0Ah ;вводим с клавиатуры строку lea dx, path ;указываем на буфер ввода int 21h ;буфер ввода имеет хитрую структуру ;первый байт - макс длина буфера ;во второй байт система положит количество считанных символов ;а с третьего байта начинается собственно буфер lea dx, pathstring ;возьмём адрес начала введённой строки push dx ;сохраним - этот адрес ещё понадобится add dl, byte ptr[pathactual] ;к началу строки прибавим её длину, которую вернула предыдущая функция xor al, al ;поправим старший регистр adc dh,al ;типа а вдруг перенос? :) mov di, dx ;поскольку имя каталога должно кончаться нулём, mov byte ptr[di], al ;дадим ему в конце этот нуль mov ah, 3Bh ;сменим каталог pop dx ;на тот, что вводили int 21h jc no_such_directory ;а если его нету - пойдём ругаться mov ah,1ah mov dx,offset dta int 21h ;Ищем первый файл mov ah,4Eh ; поиск первого файла mov cx,2h ; указываем, что хотим найти скрытые файлы lea dx,searchPath int 21h jc no_more_files ; если CF = 1 - файлы кончились print: mov ah,9h ; вывод mov dx,offset dta + 1eh ; имени файла int 21h ; перевод на новую строку mov ah,9h mov dx,offset crlf int 21h mov ah,4Fh ; найти следующий файл mov dx,offset dta int 21h jc no_more_files jmp print ;закрываем цикл no_such_directory: mov ah, 9 ;вывод сообщения lea dx, msgnosuchdir ;указываем адрес сообщения int 21h jmp no_more_files no_more_files: ; если файлы кончились, mov ah,9h mov dx,offset message int 21h ; задержка xor ax,ax int 16h mov ah,4ch int 21h msgpathrequest db 0Ah, 0Dh, "Enter the full directory name: $" msgnomorefiles db 0Ah, 0Dh, "No files found in current directory$" msgnosuchdir db 0Ah, 0Dh, "No such directory$" crlf db 0Dh,0Ah,'$' ;аналогично, новая строка searchPath db "*.*",0 dta db 2ch dup (?) db "$" message db 'Press any key...','$' path label byte ;указатель на буфер ввода строки pathlen db 66 pathactual db ? pathstring db 66 dup (?) end start
|
Присоединённый файл ( Кол-во скачиваний: 2 )
Снимок2.JPG 132,97 Kb
|