Учебник по ассемблеру (ASM)
 

Ассемблер в примерах - Поиск файла

Вопрос:
пытаюсь найти файл с помощью функции 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
Ответ:
Эта функция предполагает, что в программе ранее установлена область 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

   Вперёд
   Содержание