Консультация № 143764
12.09.2008, 20:18
0.00 руб.
0 1 1
Здравствуйте!
пытаюсь найти файл с помощью функции 4Еh
по идее DTA должна заносится информация о файле(атрибуты, размер файла и имя файла)
но в отладчике по адресу 0000h-100h имени файла не обнаружил, хотя флаг переноса сброшен(то есть файл найден)

Приложение:
seg1 segment
org 100h
start:

mov ah,4eh
mov cx,10h
mov dx, offset mask1
int 21h

int 20h
mask1 db '*.txt',0
seg1 ends
end start

Обсуждение

давно
Старший Модератор
31795
6196
12.09.2008, 20:52
общий
это ответ
Здравствуйте, Draft3!

Эта функция предполагает, что в программе ранее установлена область DTA, с помощью функции 1Аh прерывания 21h.
Я делал как в приложении. Именно там Вам и нужно всё искать. Пример в приложении использует 37 байт для области DTA, есть ещё и 44-х байтная запись, где перед идентификатором дисковода идут шесть байт:( 0FFh и 5ть байтов резервных). Вариант зависит от версии MSDOS. Учитывайте это.
Удачи!

Приложение:
data segment
dtaIdDD db ?;id disk drive
dtaName db 8 dup(?)
dtaExt db 3 dup(?)
dtaCBlock dw ?;current block number
dtaRSize dw ?
dtaFSize dw ?,?
dtaData dw ?
dtaTime dw ?
dtaReserve db 8 dup(?)
dtaCRec db ?;current record number
dtaORec db ?
dtaStub db 10 dup(?);заглушка вдруг 44-байтная запись
maskFile db '*.*',0
data ends
;begin main program
begin: mov ax,seg data
mov ds,ax
mov es,ax
;setup DTA
mov ah,01ah
mov dx,offset dtaIdDD
int 21h
;find first file
;. . . дальше как у Вас
code ends
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа