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

时间:2013-11-24 12:57:12

标签: file assembly compiler-construction directory tasm

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

P.S。虽然一般逻辑也很好,如果你写任何代码请评论它,我对此非常陌生。

1 个答案:

答案 0 :(得分:0)

您必须扫描目录。根据您的SO,这可以通过不同的方式完成。例如,如果您处于DOS环境中,这是我使用的工具所假设的,则可以使用4Eh的函数int 21h来完成。然后,您可以使用服务4Fh来获取子文件。

DS:DX必须指向包含要搜索文件的路径的ASCIIZ字符串。路径必须包含文件名或某种wilcard(例如*.*如果要扫描整个目录)。这是针对函数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