汇编,中断#21、4eh,4fh问题!

| 有人可以告诉我如何使用这些功能吗? int 21h,4eh,4fh(MS Dos) 我想列出文件和目录...该怎么办? 我希望有人能给我源代码或int21h 4eh / 4fh的示例。 提前致谢     
已邀请:
嗯...现在这里是一些古老的代码:
.model small, c

.stack

.data
    file_spec db \"*.*\", 0
    DTA db 128h dup(0)

.code
main proc
    mov ax, @Data
    mov ds, ax
    mov dx,offset DTA
    mov ah,1Ah
    int 21h

    mov dx,offset file_spec
    xor cx, cx
    mov ah,4Eh
    int 21h
    jc  quit

print_name:
    lea si, DTA + 1eh
next_char:
    lodsb
    int 29h
    test al, al
    jnz next_char

    mov al, 13
    int 29h
    mov al, 10
    int 29h

    mov dx, offset file_spec
    xor cx, cx
    mov ah, 4fh
    int 21h
    jnc print_name
quit:   
    mov ax, 4c00h
    int 21h
main endp
    end main
如您所见,在我年轻的时候,我真的很相信很多评论(尽管我不得不承认,即使现在来看,它似乎也不是很难理解的)。     
函数4eh查找符合某些属性的第一个文件,该文件根据以下方案存储在ѭ1中:
bit 0 = 1 read-only file
bit 1 = 1 hidden file
bit 2 = 1 system file
bit 3 = 1 volume (ignored)
bit 4 = 1 reserved (0) - directory
bit 5 = 1 archive bit
bits 6-15 reserved (0)
“ 3”应包含(以零终止)文件名的地址(允许使用通配符)。例如,要列出c:\\中的所有exe,文件名将为
c:\\*.exe
。 返回时,如果进位标志设置为1,则没有文件,否则DTA将以这种方式填充:
Offset   Size in bytes   Meaning

0        21              Reserved
21       1               File attributes
22       2               Time last modified
24       2               Date last modified
26       4               Size of file (in bytes)
30       13              File name (ASCIIZ)
您可以使用以下简单代码段告诉DOS您要将DTA放置在何处:
mov dx,OFFSET youChoose     ; DS:DX points to DTA 
mov ah,1AH               ; function 1Ah - set DTA
int 21h                     ; call DOS service
    

要回复问题请先登录注册