使用长文件名在 16 位程序集中创建文件
creating file in assembly 16 bit with long file name
a 已经制作了一个为我创建文件的程序(在 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
how can i make a file with name longer than 8 chars
你不能。 DOS 仅支持 8.3 文件名。
更具体地说,DOSBox 中实现的 DOS 版本不支持长文件名。
来自Wikipedia:
Forks such as DOSBox SVN Daum and DOSBox SVN-lfn provide additional features, which include support for save states and long filenames (LFN)
所以 DOSBox 的变体确实支持长文件名,但核心版本支持。
a 已经制作了一个为我创建文件的程序(在 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
how can i make a file with name longer than 8 chars
你不能。 DOS 仅支持 8.3 文件名。
更具体地说,DOSBox 中实现的 DOS 版本不支持长文件名。
来自Wikipedia:
Forks such as DOSBox SVN Daum and DOSBox SVN-lfn provide additional features, which include support for save states and long filenames (LFN)
所以 DOSBox 的变体确实支持长文件名,但核心版本支持。