访问特定目录程序集中的文件

问题描述 投票:0回答:1

我在汇编方面遇到了一些麻烦,我使用 TASM 进行编译,使用 TLINK 进行链接(是的,我知道这些是旧的和过时的,但当前不是一个选项,所以请不要建议这样做)。 情况是这样的。用户在控制台中输入路径,程序会跳转到该目录并尝试打开其中的任何文件。当我知道文件名时,我才知道如何访问文件。那么如何做这样的事情呢?

附注虽然一般逻辑也很好,但如果您编写任何代码,请评论它,我对此非常陌生。

file assembly directory tasm
1个回答
0
投票

您必须扫描目录。根据您的 SO,这可以通过不同的方式完成。例如,如果您处于 DOS 环境,这就是我所假设的您所使用的工具,这是通过使用

4Eh
int 21h
功能来完成的。然后,您可以使用服务
4Fh
来获取后续文件。

DS:DX
必须指向包含要搜索文件的路径的 ASCIIZ 字符串。路径必须包含文件名或某种通配符(例如,如果您想扫描整个目录,则使用
*.*
)。这是为了功能
4Eh
。函数
4Fh
从函数
4Eh
或之前调用函数
4Fh
找到的文件之后的文件中恢复扫描。

其代码为:

;setup a DTA for scanning directories
        mov dx,offset of your DTA block
        mov ax,segment of your DTA block (normally your current data segment)
        mov ds,ax
        mov ah,1Ah
        int 21h

;setup registers for int 21h,4Eh
;including DS:DX = ASCIIZ string with path and possibly, wilcard.
;......
;......

        mov ah,4Eh
        int 21h
        cmp cx,0
        jnz NoMoreFiles

NextFile:
;Parse DTA to obtain filename and extension of the first file found (at offset 30d)
;......
;......

        mov ah,4Fh
        int 21h
        jc NoMoreFiles
        jmp NextFile

NoMoreFiles:

有关要使用哪些 DOS 服务以及它们期望的参数的更多详细信息,请参见此处: http://bbc.nvg.org/doc/Master%20512%20Technical%20Guide/m512techb_int21.htm

© www.soinside.com 2019 - 2024. All rights reserved.