2014-01-05 43 views
1

我必須編寫一個TASM程序,其中創建一個只讀文件。我創建了該文件,但它不是隻讀的。怎麼了?下面的代碼:用TASM彙編程序創建只讀文件?

model small 
.data 
    handle dw 0 
    filename db "file2.txt",0 
.stack 256 
.code 
main: 

    mov ax,@data 
    mov ds,ax 

    mov ah,3ch 
    mov cx,1   
    lea dx,filename 
    int 21h 
    jc exit 

    mov handle,ax 
exit: 
    mov ax,4c00h 
    int 21h 
end main 

編輯:我改變mov cx,1mov cx,01h和它的工作。

P.S:我也想把文件隱藏起來,所以 我再次改成mov cx,03h並完成了。創建的文件是隻讀和隱藏的。

回答

2
Bit 7 = 1: Shareable 
Bit 6 = 1: Archive 
Bit 5 = 1: Directory 
Bit 4 = 1: Volume (ignored) 
Bit 3 = 1: Label 
Bit 2 = 1: System 
Bit 1 = 1: Hidden 
Bit 0 = 1: Read-only 

編輯: 我原來的答覆是不正確的,因爲我規定的值是按位,所以爲了清楚起見十進制將是:

mov cx, 0  ; No attributes. 
mov cx, 1  ; Read-only. 
mov cx, 2  ; Hidden. 
mov cx, 4  ; System 
mov cx, 16  ; Archive 

對於多個屬性值相加在一起。

這意味着在您的原始文章中CX的值是正確的,因爲無論是在十進制還是十六進制(或二進制)中,1都是1,所以無論您做出什麼更改,都不應該解決它。

很高興你的工作雖然。

+0

你是對的。我試圖用DOSBox在64位Windows 8上編寫它,並且它不能完全工作。所以我在我的舊版Windows XP PC(沒有DOSBox)上編寫了相同的代碼,並且這次它正在工作。 – prelibiton

+0

當它們代表位域中的比特時,它們一起更爲典型。例如'1 | 2''而不是'1 + 2' –

+0

在代碼中,是的,但爲此目的,結果是相同的。用戶不會對它進行任何按位計算。 – JBES