Вопрос № 121246: Всем здравствуйте. Помогите, пожалуйста решить такой вопрос:
Где можно найти полный путь к файлу, если он ищется с помощью функции 4Eh и 4Fh по маске, ну скажем
:
FILE_NAME DB ' D:*.txt',0
:
ведь DTA заполняется только именем фа...Вопрос № 121294: Уважаемые эксперты!
Нужно написать програмульку, для реальтного режима.
В CX хранится длина строки. По какому то адресу (непомню уже) хранится сама строка. Нужно посимвольно вывести. Плз, как можно проще и как можно больше комментариев....Вопрос № 121298: Уважаемые эксперты, помогите разобраться с программой приведенной в рассылке №9. Не совсем понятно зачем производится сравнение метки "Handle" с 0ffffh в процедурах зоткрытия и закрытия файла. Еще не понял такие строки (в основном коде прог...
Вопрос № 121.246
Всем здравствуйте. Помогите, пожалуйста решить такой вопрос:
Где можно найти полный путь к файлу, если он ищется с помощью функции 4Eh и 4Fh по маске, ну скажем
:
FILE_NAME DB ' D:*.txt',0
:
ведь DTA заполняется только именем файла, например (myprog.txt)
Буду очень благодарен, заранее спасибо.
Отправлен: 01.02.2008, 21:50
Вопрос задал: Busys (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Busys!
Функции 4Eh | 4Fh занимаются поиском либо в текущем каталоге, либо в каталоге который указан в маске поиска.
Текущий каталог может быть указан в маске поиска - анализ маски поиска, если там нет указанного каталога(т.е. просто '*.txt'), то получаете текущий путь с помощью 47h (получить текущий каталог: ВНИМАНИЕ: возвращаемое значение не содержит имя дисковода и ":" и если текуший каталог корневой , то первый байт равен 00h) и в DTA прочитать первый байт, который указывает на имя диска поиска(если старший бит = 1, то это сетевой диск, т.е. бит нужно обнулять).
Удачи!
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Профессионал) Украина, Киев Тел.: +380958380164 Адрес: Украина г.Киев ---- Ответ отправлен: 01.02.2008, 22:23 Оценка за ответ: 4 Комментарий оценки: Извините за то что долго не мог оценить ваш ответ.
Пришлось разбираться с полученной информацией,искать свои ошибки и недоделки(может быть ) отладчика, но
впрочем все стало на места свои.
Единственно что хотелось бы это добавления примеров, объяснения вроде
запусти файл из каталога такого-то
найди файл в каталоге таком-то
используй ф-ю 47h, на выходе должен получить то-то и то-то. Просто начинающему очень трудно искать ошибки.
Но за-то крики YES, ПОЛУЧИЛОСЬ! или УУУФ, РАЗОБРАЛСЯ добавляют еще несколько байт информации в сером веществе. отдельное спасибо Олегу Владимировичу. Надеюсь на дальнейшее сотрудничество.
Вопрос № 121.294
Уважаемые эксперты!
Нужно написать програмульку, для реальтного режима.
В CX хранится длина строки. По какому то адресу (непомню уже) хранится сама строка. Нужно посимвольно вывести. Плз, как можно проще и как можно больше комментариев.
Отвечает: Овчинников Алексей
Здравствуйте, Алин Сергей Владимирович!
Представляю 4-ре варианта вывода(прямым отображением,средствами DOS И BIOS)
Все примеры под компилятор FASM
Приложение:
--------- Пишу на FASM
Ответ отправил: Овчинников Алексей (статус: 3-ий класс)
Ответ отправлен: 05.02.2008, 00:01
Вопрос № 121.298
Уважаемые эксперты, помогите разобраться с программой приведенной в рассылке №9. Не совсем понятно зачем производится сравнение метки "Handle" с 0ffffh в процедурах зоткрытия и закрытия файла. Еще не понял такие строки (в основном коде программы):
mov ah,2
mov dl,7
int 21h
ret
Конечно последние 3 строчки я понимаю.
Заранее спасибо!
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Дейнеко Валерий Николаевич!
Это значение используется как индикатор открытия файла:
Open_file proc
cmp Handle,0FFFFh
jne Quit_open
в этом случае если дескриптор Handle не равен 0FFFFh(-1), то значит файл уже открыт в программе и его открывать не нужно.
Close_file proc
cmp Handle,0FFFFh
je No_close
. . .
mov Handle,0FFFFh
No_close:
в этом случае если дескриптор Handle равен 0FFFFh, то значит файл уже закрыт и его не нужно закрывать, иначе если файл открыт (Handle не равен 0FFFFh), то файл закрывается и устанавливается занчение Handle в -1.
В данном примере это не так очевидно, но если программа несколько раз открывает и закрывает файл, такой механизм проверки (защиты) оказывается эффективным.
mov ah,2
mov dl,7
int 21h
Этот код выводит символ с кодом в DL на активный видеоэкран, с той лишь разницей, что коды символов от 0 до 31(1Fh) являются служебными и за ними закрепленны определенные действия (переместить курсор вверх, вниз вправо, влево, в начало строки или на новую строку и т.д.). В данном случае пищим (звуковой сигнал ошибки) и выходим.
Удачи!
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Профессионал) Украина, Киев Тел.: +380958380164 Адрес: Украина г.Киев ---- Ответ отправлен: 04.02.2008, 14:06 Оценка за ответ: 5