我在组装方面遇到了一些麻烦,我正在使用TASM进行编译和使用TLINK进行链接(是的,我知道这些已经过时且过时,但是切换目前不是一个选项,所以请不要建议)。 情况就是这样。用户在控制台中键入路径,程序跳转到该目录并尝试打开其中的任何文件。当我知道他们的名字时,我只知道如何访问文件。那怎么会这样做呢?
P.S。虽然一般逻辑也很好,如果你写任何代码请评论它,我对此非常陌生。
答案 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