Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поиск файла на диске help, как осущевствить это 
:(
    Опции темы
kish
  Дата 16.5.2003, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 6.5.2003

Репутация: нет
Всего: нет



помогите составить программу, которая способна находить файлы на диске. withstupid.gif
PM MAIL   Вверх
Baa
Дата 18.5.2003, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: нет
Всего: 12



А чего у тебя не получается? берешь сишную прогу с поиском файла, дизассемблируешь её и сморишь...


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Unregistered
Дата 18.5.2003, 15:59 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ф-ции дос Find First & Find Next: int 21h, AH=4Fh и 4Eh;
Ф-ции wind: api kernel32: FindFirstFile, FindNextFile.

Пример кода (моего) (дос):

Цитата

; Find Files Functions ******************************************************
Find_First Proc Near              ; Find_First(FileType,Mask,Res_File);
        push  bp
        mov  bp,sp
        pusha
        mov  ah,4EH
        mov  cx,[bp+6]          ; Mask
        mov  dx,[bp+8]          ; FileType
        inc  dx
        int  21H
        jc    @@NoFirst
        pushf
        push  [bp+4]              ; Res_File
        call  File_Name
        popf
@@NoFirst:
        popa
        pop  bp
        ret  6
Find_First Endp
Find_Next Proc Near              ; Find_Next(FileType,Mask,Res_File);
        push  bp
        mov  bp,sp
        pusha
        mov  ah,4FH
        mov  cx,[bp+6]          ; Mask
        mov  dx,[bp+8]          ; FileType
        inc  dx
        int  21H
        jc    @@NoNext
        pushf
        push  [bp+4]              ; Res_File
        call  File_Name
        popf
@@NoNext:
        popa
        pop  bp
        ret  6
Find_Next Endp
File_Name Proc Near              ; File_Name(Str_Addr)
        push  bp
        mov  bp,sp
        les  bx,Dta_Address      ; Get DTA Address
        lea  si,[bx+1eh]
        mov  bx,[bp+4]          ; Res_File
        lea  di,[bx+1]
        mov  byte ptr [bx],0
@@Move_Str:
        mov  al,es:[si]
        inc  si
        test  al,al
        jz    @@Done_M
        inc  byte ptr [bx]
        mov  [di],al
        inc  di
        jmp  @@Move_Str
@@Done_M:
        mov  [di],al              ; 0 at the end
        pop  bp
        ret  2
File_Name EndP


Dta_Address - это двухсловная ячейка памяти с дальним (far) адресом
области DTA - data transfer area. Через нее ты снюхиваешься с DOS.
Для com-программ достаточно mov bx,80h, если только ты не переопределил
ее месторасположение.

Пример вызова:

Цитата

DirMask EQU 16
Only_Directory db 5,'*.confused.gif',0
Find_Dirs Proc Near            ; (Index,Res_Str_Addr:word):boolean
        push bp
        mov  bp,sp
        pusha
        push offset Only_Directory
        push DirMask
        push word ptr [bp+4]    ; Res_Str_Addr
        call Find_First        ; Find_First(FileType,Mask,Res_File); - '.\'


В данном случае я передаю ближний адрес (смещение) строки, куда будет помещено имя найденной директории (или не будет, если ничего нет):

Цитата

push word ptr [bp+4]    ; Res_Str_Addr

  Вверх
Chingachguk
Дата 18.5.2003, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Выше был я ;)


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
esergey
Дата 15.6.2003, 04:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 15.6.2003

Репутация: нет
Всего: нет



Использовал похожий код для написания своего файлового менеджера. Эх давно это было.
Помню получилось как VC. Но одну проблему я тогда не смог решить запуск файлов. Кто подскажет как запускать файлы в асме?
PM MAIL WWW   Вверх
Chingachguk
Дата 15.6.2003, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Есть два варианта: int 21h, func 4B00h и int 2Eh. Это для dos. Для windows есть ShellExecute и т.п.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.