在具有 INT 21,43 的程序集上将文件属性更改为只读不起作用
Changing file attribute to read-only on assembly with INT 21,43 does not work
我对汇编很陌生,最近我一直在努力使 INT 21,43(将文件属性更改为只读)工作。我正在使用 Windows 10、DOSBox x86 和 Turbo Assembler/Linker/Debugger(如果有任何区别的话)。据我所知使用调试器,它应该可以工作(根据文档,未设置 CF,我没有收到错误代码)。此外,如果我使用相同的 INT 21,43 来获取(将 al 设置为 0)文件的文件属性,该文件已经手动设置为只读,则 CX 设置为 20,据我所知这不会使感觉,但 CF 也没有设置,所以它说它有效。希望您能帮我解决一下,先谢谢了。
.model small
.stack 100h
.data
filename db "temp.txt",0 ; my file name
.code
start:
mov dx, @data
mov ds, dx
mov ah, 43h
mov al, 01h ; Set file attribute
mov cx, 01h ; 1 = read-only
lea dx, filename ; Set pointer to filename
int 21h
mov ah, 4ch ; Return to DOS
mov al, 0
int 21h
end start
我刚刚尝试从 DOSBox 中的程序 运行 设置 ReadOnly 属性,但没有成功。
DOSBox 的帮助 help /all
,报告说 ATTRIB
命令 什么都不做,它只是为了兼容性而提供的 。因此按理说 DOS.function 43h(Get/Set 文件属性)不会被实现。
由于 DOSBox 主要用于模拟旧的 DOS 游戏,因此可能没有什么理由想要更改属性。
我对汇编很陌生,最近我一直在努力使 INT 21,43(将文件属性更改为只读)工作。我正在使用 Windows 10、DOSBox x86 和 Turbo Assembler/Linker/Debugger(如果有任何区别的话)。据我所知使用调试器,它应该可以工作(根据文档,未设置 CF,我没有收到错误代码)。此外,如果我使用相同的 INT 21,43 来获取(将 al 设置为 0)文件的文件属性,该文件已经手动设置为只读,则 CX 设置为 20,据我所知这不会使感觉,但 CF 也没有设置,所以它说它有效。希望您能帮我解决一下,先谢谢了。
.model small
.stack 100h
.data
filename db "temp.txt",0 ; my file name
.code
start:
mov dx, @data
mov ds, dx
mov ah, 43h
mov al, 01h ; Set file attribute
mov cx, 01h ; 1 = read-only
lea dx, filename ; Set pointer to filename
int 21h
mov ah, 4ch ; Return to DOS
mov al, 0
int 21h
end start
我刚刚尝试从 DOSBox 中的程序 运行 设置 ReadOnly 属性,但没有成功。
DOSBox 的帮助 help /all
,报告说 ATTRIB
命令 什么都不做,它只是为了兼容性而提供的 。因此按理说 DOS.function 43h(Get/Set 文件属性)不会被实现。
由于 DOSBox 主要用于模拟旧的 DOS 游戏,因此可能没有什么理由想要更改属性。