Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Поиск директорий

367
07 июня 2006 года
Meatcoins
303 / / 18.01.2006
Вопросы и предположения:
Для начала папка - это, кажется, и есть директория.
А чем метка тома отличается от директории?

Нужно найти все подпапки в папке, где этот файл:

mov ax,4E00h
mov dx,offset disk
mov cx,00010000b ; так ищем директории!!!
int 21h
jc find_end4
jmp short advary2
find_next2:
mov ax,4F00h
int 21h
jc find_end3
advary2:

mov ax,0600h ;это для проверки...
mov dx,0042h ;сколько раз это выполнится
int 21h ;эти проверки работают
;но почему-то выполняется всё на 2
jmp short gege ;раза больше и находит 2 лишние папки,
tutu: ;которых нет с именами "." и "..".
db "54.txt",0
gege:
mov ax,3D02h
mov dx,offset tutu
xor cx,cx
int 21h
mov bx,ax
mov ax,4202h
xor cx,cx
xor dx,dx
int 21h
mov ax,4000h
mov dx,offset my_dta ; где-то есть мой буфер DTA
mov cx,0080h
int 21h
mov ax,3E00h
int 21h
mov ax,0600h
mov dx,0041h
int 21h


jmp short find_next2
find_end4:
mov ax,0FEh
find_end3:

Вопрос:
Откуда взялись 2 лишние папки!?!?!?
Например подпапок в папке 4, а проверка выполняется 6 раз и первыми находятся 2 лишние папки!!!

И ещё вопрос:
Как к своей програмке сделать иконку!?
Когда мы пишем на Assembler'е под Windows, то там есть файл ресурсов, а тут как???
5.3K
07 июня 2006 года
r000n_m
177 / / 26.02.2006
.. - вверх
. - в корень диска (кажется)
15K
07 июня 2006 года
foo
33 / / 03.06.2006
папка -- это юзерское название для директории. придумано ms'ом.
метка тома -- это метка тома. это несколько байт (по-моему в фат) непонятного назначения. идея была, насколько я понимаю, чтобы каждый раздел имел имя. Том -- это ведь раздел, в переводе с языка ms?
а директории "." и ".." существуют всегда. так надо.
5.3K
07 июня 2006 года
r000n_m
177 / / 26.02.2006
Попробуй из командной строки выполнить команду dir
Эти две папки все равно будут :)
349
07 июня 2006 года
Phantom-84
656 / / 27.10.2005
. - это текущий каталог! В FATе эта запись содержит ссылку на себя.

[QUOTE=foo]метка тома -- это метка тома. это несколько байт (по-моему в фат) непонятного назначения. идея была, насколько я понимаю, чтобы каждый раздел имел имя. Том -- это ведь раздел, в переводе с языка ms?[/QUOTE]В FATе поначалу метка тома хранилась не в boot-блоке, а в одной из записей корневого каталога, на что указывал специальный бит в атрибутах записи! Сейчас этот бит совместно с младшими тремя битами атрибутов используется при работе с длинными именами, а также как признак метки тома, но при условии, что установлен только он один!
367
08 июня 2006 года
Meatcoins
303 / / 18.01.2006
директории "." и ".." существуют всегда. так надо.

А где они существуют? И куда ведут?
Мне они как-то не очень-то нужны! Меня волнуют реальные директории!
Вот например ".." похоже, что ведёт назад, то есть это выход из данной директории на уровень вниз, а что такое "."? С двумя можно догадаться, а с одной точечкой когда - это не очень понятно...
А эти 2 директории всегда находятся первыми или мне надо имена анализировать, чтобы потом к ним не обращаться и с ними не работать?
15K
08 июня 2006 года
foo
33 / / 03.06.2006
вот, блин, новое поколение выбирает пепси. Запусти far, или любой файл-броузер того типа. И ты увидишь в каждой директории как `.' так и `..'
можно даже поразвлекаться с ними, и посмотреть к чему приводит переход в них.

повторяю для непонятливых:
'.' это текущая директория.
'..' директория содержащая текущую.

насчёт того что первыми ли они находятся -- я честно говоря не знаю. По логике вещей, они должны быть первыми всегда. Опыт, тоже говорит, что да, но во всяких разных программах, в которых я обращал внимание, эти директории отсеивались по имени.
349
08 июня 2006 года
Phantom-84
656 / / 27.10.2005
[QUOTE=Meatcoins]Мне они как-то не очень-то нужны! Меня волнуют реальные директории![/QUOTE]Если они тебе не нужны, то отсеивай их! Какие проблемы?!
367
09 июня 2006 года
Meatcoins
303 / / 18.01.2006
Спасибо всем!
Всё получилось!
Я их отсеивал просто по имени...
mov al,"."
mov di,offset my_dta+1Eh
cmp al,byte ptr ds:[di]
Что-то я сразу не додумался...
15K
10 июня 2006 года
foo
33 / / 03.06.2006
[QUOTE=Meatcoins]Спасибо всем!
Всё получилось!
Я их отсеивал просто по имени...
mov al,"."
mov di,offset my_dta+1Eh
cmp al,byte ptr ds:[di]
Что-то я сразу не додумался...[/QUOTE]
а если попадётся директория с именем .bashrc, то как? В венде они не очень распростанены, но бывают. Сам видел.
Может так лучше:
 
Код:
mov si, offset my_dta+1Eh
    lodsw
    cmp ax, '.'
    je  skip_dir
    cmp ax, '.' + '.' << 8
    jne process_dir
    lodsb
    test    al, al
    jz  skip_dir
process_dir:

?
349
10 июня 2006 года
Phantom-84
656 / / 27.10.2005
[QUOTE=foo]а если попадётся директория с именем .bashrc, то как? В венде они не очень распростанены, но бывают. Сам видел.[/QUOTE]Он использует функции для имен в формате 8.3, в котором произвольно точки расставлять нельзя! Кстати не все версии Windows позволяют ставить точку в самом начале имени!
15K
11 июня 2006 года
foo
33 / / 03.06.2006
а какое имя файла получиться если имя .bashrc прочитать такой функцией? я честно говоря затрудняюсь сообразить. :(
Кроме того, мало ли что там виндовс позволяет, а что нет. если уж речь зашла о досе, то там файлы можно и вручную создавать, забивая на досовый драйвер фс, и кто их создавал прежде чем мы их будем читать -- неизвестно.
И в конце концов, такая проверка не сильно сложнее, чтобы было из-за чего спорить. десяток байтов туда-сюда... по-моему приемлимая плата за универсальность :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог