在具有 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 游戏,因此可能没有什么理由想要更改属性。