2

a 制作了一个 proc,它为我创建了一个文件(在 dos 框中的程序集 16 位中),并且它在短文件名下工作得很好(见下文)。但是,当名称超过 8 个字符时,所有其他字符都将被删除。例如对于路径:'logs\log_YYYY_MM_DD.log', 0 它将创建一个名为 log_YYYY.log 的文件我如何制作一个名称超过 8 个字符的文件。谢谢你。

;---------------------------CreateFile-----------------------------
; Description:  create a file.
; param 1:      [in] address of File name path.
; Param 2:      [out] address of File handle.
; Return:       File handle.
;------------------------------------------------------------------
proc CreateFile
    pusha
    mov bp, sp

    @CreateFile@FileName        equ [word ptr bp + 20]
    @CreateFile@FileHandle      equ [word ptr bp + 18]

    mov ah, 3ch                     ; create file
    mov cx, 0                       ; file attribute
    mov dx, @CreateFile@FileName    ; file name 
    int 21h

    jc @CreateFile@Error
    mov bx, @CreateFile@FileHandle  
    mov [word ptr bx], ax

    jmp @CreateFile@End
@CreateFile@Error:
    call PrintFileError     ;prints an error msg

@CreateFile@End:    
    popa
    ret 2
endp CreateFile
4

1 回答 1

3

如何制作名称超过 8 个字符的文件

你不能。DOS 仅支持 8.3 文件名。


更具体地说,在 DOSBox 中实现的 DOS 版本不支持长文件名。

来自维基百科

诸如 DOSBox SVN Daum 和 DOSBox SVN-lfn 之类的分支提供了额外的功能,包括对保存状态和长文件名 (LFN) 的支持

所以有一些 DOSBox 的变体确实支持长文件名,但核心版本支持。

于 2020-04-22T12:19:54.080 回答